Анализируйте текстовые данные, содержащие Emojis

Этот пример показывает, как анализировать текстовые данные, содержащие emojis.

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);

Фильтрация текстовых данных по Emoji

Идентифицируйте обновления статуса, содержащие определенные эмодзи, используя 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);

Извлечение и визуализация Emojis

Визуализируйте все эмодзи в текстовых данных с помощью облака слов.

Извлеките эмодзи. Сначала токенизируйте текст с помощью 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")

См. также

| |

Похожие темы