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