Этот пример показывает, как анализировать текстовые данные, содержащие emojis.
Emojis - это графические символы, которые появляются в строке текста. При написании текста на мобильных устройствах, таких как смартфоны и планшеты, люди используют emojis, чтобы сохранить текст коротким и передать эмоции и чувства.
Вы также можете использовать emojis для анализа текстовых данных. Например, используйте их, чтобы идентифицировать соответствующие строки текста или визуализировать настроения или эмоции текста.
При работе с текстовыми данными emojis может вести себя непредсказуемо. В зависимости от ваших системных шрифтов, ваша система может не отображать некоторые emojis правильно. Поэтому, если эмодзи отображается неправильно, то данные не обязательно отсутствуют. Возможно, ваша система не сможет отобразить эмодзи в текущем шрифте.
В большинстве случаев можно считать эмодзи из файла (для примера, при помощи extractFileText, extractHTMLText, или readtable) или путем копирования и вставки их непосредственно в MATLAB ®. В противном случае необходимо составить эмодзи с помощью Unicode UTF16 code модулей.
Некоторые emojis состоят из нескольких Модули UTF16 единиц кода. Например, «улыбающееся лицо с солнцезащитными очками» эмодзи (с кодовой точкой U + 1F60E) является одним глифом, но состоит из двух UTF16 единиц кода "D83D" и "DE0E". Создайте строку , содержащую этого эмодзи с помощью compose и задайте два кода, модули с префиксом "\x".
emoji = compose("\xD83D\xDE0E")emoji = ""
Сначала получите UTF16 Unicode кода модулей эмодзи. Использование char чтобы получить числовое представление эмодзи, а затем используйте dec2hex для получения соответствующего шестнадцатеричного значения.
codeUnits = dec2hex(char(emoji))
codeUnits = 2×4 char array
'D83D'
'DE0E'
Восстановите строку композиции с помощью strjoin функция с пустым разделителем "".
formatSpec = strjoin("\x" + codeUnits,"")
formatSpec = "\xD83D\xDE0E"
emoji = compose(formatSpec)
emoji = ""
Извлеките текстовые данные из файла weekendUpdates.xlsx использование readtable. Файл weekendUpdates.xlsx содержит обновления состояния, содержащие хэштеги "#weekend" и "#vacation".
filename = "weekendUpdates.xlsx"; tbl = readtable(filename,'TextType','string'); head(tbl)
ans=8×2 table
ID TextData
__ __________________________________________________________________________________
1 "Happy anniversary! ❤ Next stop: Paris! ✈ #vacation"
2 "Haha, BBQ on the beach, engage smug mode! ❤ #vacation"
3 "getting ready for Saturday night #yum #weekend "
4 "Say it with me - I NEED A #VACATION!!! ☹"
5 " Chilling at home for the first time in ages…This is the life! #weekend"
6 "My last #weekend before the exam ."
7 "can’t believe my #vacation is over so unfair"
8 "Can’t wait for tennis this #weekend "
Извлеките текстовые данные из поля TextData и просмотрите первые несколько обновлений состояния.
textData = tbl.TextData; textData(1:5)
ans = 5×1 string
"Happy anniversary! ❤ Next stop: Paris! ✈ #vacation"
"Haha, BBQ on the beach, engage smug mode! ❤ #vacation"
"getting ready for Saturday night #yum #weekend "
"Say it with me - I NEED A #VACATION!!! ☹"
" Chilling at home for the first time in ages…This is the life! #weekend"
Визуализируйте текстовые данные в облаке слов.
figure wordcloud(textData);

Идентифицируйте обновления статуса, содержащие определенные эмодзи, используя contains функция. Найдите индексы документов, содержащих эмодзи «улыбающееся лицо с солнцезащитными очками» (с кодом U + 1F60E). Этот эмодзи содержит два модулей кода UTF16 Unicode "D83D" и "DE0E".
emoji = compose("\xD83D\xDE0E");
idx = contains(textData,emoji);
textDataSunglasses = textData(idx);
textDataSunglasses(1:5)ans = 5×1 string
"Haha, BBQ on the beach, engage smug mode! ❤ #vacation"
"getting ready for Saturday night #yum #weekend "
" Chilling at home for the first time in ages…This is the life! #weekend"
" Check the out-of-office crew, we are officially ON #VACATION!! "
"Who needs a #vacation when the weather is this good ☀ "
Визуализируйте извлеченные текстовые данные в облаке слов.
figure wordcloud(textDataSunglasses);

Визуализируйте все эмодзи в текстовых данных с помощью облака слов.
Извлеките эмодзи. Сначала токенизируйте текст с помощью tokenizedDocument, а затем просмотреть первые несколько документов.
documents = tokenizedDocument(textData); documents(1:5)
ans =
5×1 tokenizedDocument:
11 tokens: Happy anniversary ! ❤ Next stop : Paris ! ✈ #vacation
16 tokens: Haha , BBQ on the beach , engage smug mode ! ❤ #vacation
9 tokens: getting ready for Saturday night #yum #weekend
13 tokens: Say it with me - I NEED A #VACATION ! ! ! ☹
19 tokens: Chilling at home for the first time in ages … This is the life ! #weekend
The tokenizedDocument функция автоматически обнаруживает эмодзи и назначает тип маркера "emoji". Просмотрите первые несколько подробных данных маркеров документов, использующих tokenDetails функция.
tdetails = tokenDetails(documents); head(tdetails)
ans=8×5 table
Token DocumentNumber LineNumber Type Language
_____________ ______________ __________ ___________ ________
"Happy" 1 1 letters en
"anniversary" 1 1 letters en
"!" 1 1 punctuation en
"❤" 1 1 emoji en
"Next" 1 1 letters en
"stop" 1 1 letters en
":" 1 1 punctuation en
"Paris" 1 1 letters en
Визуализируйте emojis в облаке слов путем извлечения лексем с типом токена "emoji" и ввод их в wordcloud функция.
idx = tdetails.Type == "emoji"; tokens = tdetails.Token(idx); figure wordcloud(tokens); title("Emojis")

tokenDetails | tokenizedDocument | wordcloud