matlab分析包含Emojis的文本数据并可视化

2022-07-27 09:43:32 浏览数 (1)

周末浏览资料,看到一个例子展示如何分析包含表情符号的文本数据。,分享给读者

表情符号是内联出现在文本中的图形符号。在智能手机和平板电脑等移动设备上书写文字时,人们会使用表情符号来保持文字简短,传达情绪和感受。

你也可以使用表情符号来分析文本数据。例如,使用它们来识别相关的文本字符串或可视化文本的情绪或情感。

在处理文本数据时,表情符号的行为可能不可预测。根据系统字体,系统可能无法正确显示一些表情符号。因此,如果一个表情符号没有被正确地显示出来,那么数据也不一定会丢失。系统可能无法以当前字体显示表情符号。

下面的代码推荐使用matlab的mlx实时编辑器,在命令行编辑Emoji符号输出有点异常

Emojis组成

从文件中读取表情符号通过使用extractFileText, extractHTMLText,readtable或通过直接复制和粘贴到MATLAB。否则,必须使用Unicode UTF16编码单元来组合表情符号。

有些表情包由多个Unicode UTF16编码单元组成。例如,“带墨镜的笑脸”表情(

,代码点U 1F60E)是一个单一的符号,但由两个UTF16代码单元“D83D”和“DE0E”组成。使用compose函数创建一个包含此表情符号的字符串,并以前缀“x”指定两个代码单元。

代码语言:javascript复制
emoji = compose("xD83DxDE0E")

首先得到一个表情符号的Unicode UTF16编码单元。使用char获得表情符号的数字表示,然后使用dec2hex获得相应的十六进制值。

代码语言:javascript复制
codeUnits = dec2hex(char(emoji))
codeUnits = 2×4 char 数组
'D83D' 'DE0E'

使用带空分隔符""的strjoin函数重新构造复合字符串。

代码语言:javascript复制
formatSpec = strjoin("x"   codeUnits,"")
formatSpec = "xD83DxDE0E"
emoji = compose(formatSpec)

导入txt数据

使用readtable提取文件weekendpdates .xlsx中的文本数据。文件weekendpdates .xlsx包含状态更新,其中包含标签“#weekend”和“#vacation”。

代码语言:javascript复制
filename = "weekendUpdates.xlsx";
tbl = readtable(filename,'TextType','string');
head(tbl)

从字段TextData提取文本数据并查看前几个状态更新。

代码语言:javascript复制
textData = tbl.TextData;
textData(1:5)

在词云中可视化文本数据。

代码语言:javascript复制
figure
wordcloud(textData);

Emoji查找

使用contains函数识别包含特定表情符号的状态更新。查找包含“带墨镜微笑”表情符号的文档索引(

,代码U 1F60E)。这个表情包含两个Unicode UTF16编码单元“D83D”和“DE0E”。

代码语言:javascript复制
emoji = compose("xD83DxDE0E");
idx = contains(textData,emoji);
textDataSunglasses = textData(idx);
textDataSunglasses(1:5)
ans = 5×1 string

在词云中可视化提取的文本数据。

代码语言:javascript复制
figure
wordcloud(textDataSunglasses);

可视化Emojis

使用文字云可视化文本数据中的所有表情符号。提取emojis。首先使用tokenizedDocument对文本进行标记,然后查看前几个文档。

代码语言:javascript复制
documents = tokenizedDocument(textData);
documents(1:5)

tokenizedDocument函数自动检测表情符号,并分配表情符号类型“emoji”。使用tokenDetails函数查看文档的前几个令牌细节。

代码语言:javascript复制
tdetails = tokenDetails(documents);
head(tdetails)

通过提取标记类型为“emoji”的标记,并将它们输入wordcloud函数,在单词云中可视化表情符号。

代码语言:javascript复制
idx = tdetails.Type == "emoji";
tokens = tdetails.Token(idx);
figure
wordcloud(tokens);
title("Emojis")

0 人点赞