周末浏览资料,看到一个例子展示如何分析包含表情符号的文本数据。,分享给读者
表情符号是内联出现在文本中的图形符号。在智能手机和平板电脑等移动设备上书写文字时,人们会使用表情符号来保持文字简短,传达情绪和感受。
你也可以使用表情符号来分析文本数据。例如,使用它们来识别相关的文本字符串或可视化文本的情绪或情感。
在处理文本数据时,表情符号的行为可能不可预测。根据系统字体,系统可能无法正确显示一些表情符号。因此,如果一个表情符号没有被正确地显示出来,那么数据也不一定会丢失。系统可能无法以当前字体显示表情符号。
下面的代码推荐使用matlab的mlx实时编辑器,在命令行编辑Emoji符号输出有点异常
Emojis组成
从文件中读取表情符号通过使用extractFileText, extractHTMLText,readtable或通过直接复制和粘贴到MATLAB。否则,必须使用Unicode UTF16编码单元来组合表情符号。
有些表情包由多个Unicode UTF16编码单元组成。例如,“带墨镜的笑脸”表情(
,代码点U+1F60E)是一个单一的符号,但由两个UTF16代码单元“D83D”和“DE0E”组成。使用compose函数创建一个包含此表情符号的字符串,并以前缀“\x”指定两个代码单元。
emoji = compose("\xD83D\xDE0E")
首先得到一个表情符号的Unicode UTF16编码单元。使用char获得表情符号的数字表示,然后使用dec2hex获得相应的十六进制值。
codeUnits = dec2hex(char(emoji))
codeUnits = 2×4 char 数组
'D83D' 'DE0E'
使用带空分隔符""的strjoin函数重新构造复合字符串。
formatSpec = strjoin("\x" + codeUnits,"")
formatSpec = "\xD83D\xDE0E"
emoji = compose(formatSpec)
使用readtable提取文件weekendpdates .xlsx中的文本数据。文件weekendpdates .xlsx包含状态更新,其中包含标签“#weekend”和“#vacation”。
filename = "weekendUpdates.xlsx";
tbl = readtable(filename,'TextType','string');
head(tbl)
从字段TextData提取文本数据并查看前几个状态更新。
textData = tbl.TextData;
textData(1:5)
在词云中可视化文本数据。
figure
wordcloud(textData);
使用contains函数识别包含特定表情符号的状态更新。查找包含“带墨镜微笑”表情符号的文档索引(
,代码U+1F60E)。这个表情包含两个Unicode UTF16编码单元“D83D”和“DE0E”。
emoji = compose("\xD83D\xDE0E");
idx = contains(textData,emoji);
textDataSunglasses = textData(idx);
textDataSunglasses(1:5)
ans = 5×1 string
在词云中可视化提取的文本数据。
figure
wordcloud(textDataSunglasses);
使用文字云可视化文本数据中的所有表情符号。提取emojis。首先使用tokenizedDocument对文本进行标记,然后查看前几个文档。
documents = tokenizedDocument(textData);
documents(1:5)
tokenizedDocument函数自动检测表情符号,并分配表情符号类型“emoji”。使用tokenDetails函数查看文档的前几个令牌细节。
tdetails = tokenDetails(documents);
head(tdetails)
通过提取标记类型为“emoji”的标记,并将它们输入wordcloud函数,在单词云中可视化表情符号。
idx = tdetails.Type == "emoji";
tokens = tdetails.Token(idx);
figure
wordcloud(tokens);
title("Emojis")