Main Content

이모지가 포함된 텍스트 데이터 분석하기

이 예제에서는 이모지가 포함된 텍스트 데이터를 분석하는 방법을 보여줍니다.

이모지는 텍스트에 인라인으로 표시되는 그림 기호입니다. 사람들은 스마트폰과 태블릿 같은 모바일 기기에서 텍스트를 작성할 때 이모지를 사용하여 텍스트를 간결하게 유지하고 감정과 느낌을 전달합니다.

이모지를 사용하여 텍스트 데이터를 분석할 수도 있습니다. 예를 들어 이모지를 사용하여 관련 텍스트 문자열을 식별하거나 텍스트의 감성이나 감정을 시각화할 수 있습니다.

텍스트 데이터를 사용할 때 이모지가 예측 불가능하게 동작할 수 있습니다. 시스템 글꼴에 따라 시스템에서 일부 이모지를 올바르게 표시하지 못할 수 있습니다. 즉, 이모지가 올바로 표시되지 않는다고 해도 반드시 데이터가 누락된 것은 아닙니다. 시스템에서 이모지를 현재 글꼴로 표시하지 못하는 경우일 수 있습니다.

이모지 작성하기

대부분의 경우 extractFileText, extractHTMLText, readtable 등을 사용하여 파일에서 이모지를 읽어올 수 있습니다. 또는 이모지를 복사하여 붙여 넣는 방식으로 바로 MATLAB®으로 읽어올 수 있습니다. 그 외의 경우에는 유니코드 UTF16 코드 단위를 사용하여 이모지를 작성해야 합니다.

일부 이모지는 여러 개의 유니코드 UTF16 코드 단위로 구성됩니다. 예를 들어 "선글라스를 끼고 웃고 있는 얼굴" 이모지(코드 포인트가 U+1F60E인 😎)는 단일 그림문자이지만, 두 개의 UTF16 코드 단위 "D83D""DE0E"로 구성됩니다. compose 함수를 사용하여 이 이모지가 포함된 string형을 만들고, 접두사 "\x"를 갖는 두 개의 코드 단위를 지정합니다.

emoji = compose("\xD83D\xDE0E")
emoji = 
"😎"

먼저, 이모지의 유니코드 UTF16 코드 단위를 가져옵니다. char을 사용하여 이모지의 숫자형 표현을 가져온 후 dec2hex를 사용하여 그에 해당하는 16진수 값을 가져옵니다.

codeUnits = dec2hex(char(emoji))
codeUnits = 2×4 char array
    'D83D'
    'DE0E'

빈 구분자 ""와 함께 strjoin 함수를 사용하여 구성 문자열을 재구성합니다.

formatSpec = strjoin("\x" + codeUnits,"")
formatSpec = 
"\xD83D\xDE0E"
emoji = compose(formatSpec)
emoji = 
"😎"

텍스트 데이터 가져오기

readtable을 사용하여 파일 weekendUpdates.xlsx에서 텍스트 데이터를 추출합니다. 파일 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 코드 단위 "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

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   

토큰 유형이 "emoji"인 토큰을 추출한 후 wordcloud 함수에 입력값으로 넣어 이모지를 워드 클라우드로 시각화합니다.

idx = tdetails.Type == "emoji";
tokens = tdetails.Token(idx);
figure
wordcloud(tokens);
title("Emojis")

참고 항목

| |

관련 항목