Этот пример показывает, как анализировать текстовые данные, содержащие 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