이모지가 포함된 텍스트 데이터 분석하기
이 예제에서는 이모지가 포함된 텍스트 데이터를 분석하는 방법을 보여줍니다.
이모지는 텍스트에 인라인으로 표시되는 그림 기호입니다. 사람들은 스마트폰과 태블릿 같은 모바일 기기에서 텍스트를 작성할 때 이모지를 사용하여 텍스트를 간결하게 유지하고 감정과 느낌을 전달합니다.
이모지를 사용하여 텍스트 데이터를 분석할 수도 있습니다. 예를 들어 이모지를 사용하여 관련 텍스트 문자열을 식별하거나 텍스트의 감성이나 감정을 시각화할 수 있습니다.
텍스트 데이터를 사용할 때 이모지가 예측 불가능하게 동작할 수 있습니다. 시스템 글꼴에 따라 시스템에서 일부 이모지를 올바르게 표시하지 못할 수 있습니다. 즉, 이모지가 올바로 표시되지 않는다고 해도 반드시 데이터가 누락된 것은 아닙니다. 시스템에서 이모지를 현재 글꼴로 표시하지 못하는 경우일 수 있습니다.
이모지 작성하기
대부분의 경우 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")

참고 항목
wordcloud | tokenizedDocument | tokenDetails