Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

vaderSentimentScores

VADER 알고리즘을 사용한 감성 점수

R2019b 이후

설명

vaderSentimentScores를 사용하여 VADER(Valence Aware Dictionary and sEntiment Reasoner) 알고리즘을 통해 토큰화된 텍스트에서 감성을 평가합니다. vaderSentimentScores 함수는 기본적으로 VADER 감성 어휘사전과 수정자 단어 목록을 사용합니다.

함수는 영어 텍스트만 지원합니다.

예제

compoundScores = vaderSentimentScores(documents)는 토큰화된 문서에 대한 감성 점수를 반환합니다. 함수는 알고리즘 규칙에 따라 조정된 개별 토큰 점수를 집계한 다음 -1과 1 사이로 정규화하여 복합 점수를 계산합니다. 이 함수는 감성 어휘사전에 없는 단일 문자를 포함하는 모든 토큰을 삭제합니다.

compoundScores = vaderSentimentScores(documents,Name,Value)는 하나 이상의 이름-값 쌍을 사용하여 옵션을 추가로 지정합니다.

예제

[compoundScores,positiveScores,negativeScores,neutralScores] = vaderSentimentScores(___)는 이전 구문 중 하나를 사용하여 각각 긍정, 부정, 중립 감성인 문서 비율도 반환합니다.

예제

모두 축소

토큰화된 문서를 만듭니다.

str = [
    "The book was VERY good!!!!"
    "The book was not very good."];
documents = tokenizedDocument(str);

토큰화된 문서의 감성을 평가합니다. 1에 가까운 점수는 긍정 감성을, -1에 가까운 점수는 부정 감성을, 0에 가까운 점수는 중립 감성을 나타냅니다.

compoundScores = vaderSentimentScores(documents)
compoundScores = 2×1

    0.7264
   -0.3865

VADER 같은 감성 분석 알고리즘은 감성 어휘사전이라고 하는, 주석이 달린 단어 목록을 활용합니다. 예를 들어, VADER는 -4에서 4 사이의 감성 점수가 주석으로 달린 단어들로 구성된 감성 어휘사전을 사용합니다. 4에 가까운 점수는 강한 긍정 감성을, -4에 가까운 점수는 강한 부정 감성을, 0에 가까운 점수는 중립 감성을 나타냅니다.

VADER 알고리즘을 사용하여 텍스트의 감성을 분석하려면 vaderSentimentScores 함수를 사용합니다. 예를 들어 의료 데이터 또는 엔지니어링 데이터와 같은 도메인별 데이터 세트가 있는 경우와 같이, vaderSentimentScores 함수에서 사용하는 감성 어휘사전이 분석 중인 데이터와 맞지 않으면 사용자 지정 감성 어휘사전을 사용할 수 있습니다. 도메인별 감성 어휘사전을 생성하는 방법을 보여주는 예제는 Generate Domain Specific Sentiment Lexicon 항목을 참조하십시오.

분석할 텍스트 데이터를 포함하는 토큰화된 문서 배열을 만듭니다.

textData = [ 
    "This company is showing extremely strong growth."
    "This other company is accused of misleading consumers."];
documents = tokenizedDocument(textData);

재무 데이터에 대한 예제 도메인별 어휘사전을 불러옵니다.

filename = "financeSentimentLexicon.csv";
tbl = readtable(filename);
head(tbl)
        Token         SentimentScore
    ______________    ______________

    {'innovative'}             4    
    {'greater'   }        3.6216    
    {'efficiency'}        3.5971    
    {'enhance'   }        3.5628    
    {'better'    }        3.5532    
    {'creative'  }        3.5358    
    {'strengthen'}        3.5161    
    {'improved'  }         3.484    

vaderSentimentScores 함수를 사용하여 감성을 평가하고 'SentimentLexicon' 옵션을 사용하여 사용자 지정 감성 어휘사전을 지정합니다. 1에 가까운 점수는 긍정 감성을, -1에 가까운 점수는 부정 감성을, 0에 가까운 점수는 중립 감성을 나타냅니다.

compoundScores = vaderSentimentScores(documents,'SentimentLexicon',tbl)
compoundScores = 2×1

    0.8762
   -0.1176

입력 인수

모두 축소

입력 문서로, tokenizedDocument 배열로 지정됩니다.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 각 이름과 값을 쉼표로 구분하고 Name을 따옴표로 묶으십시오.

예: 'Boosters',["verry" "verrry"]는 증폭어 "verry"와 "verrrry"를 사용하도록 지정합니다.

감성 어휘사전으로, 다음 변수로 구성된 테이블로 지정됩니다.

  • Token – 토큰으로, string형 스칼라로 지정됩니다. 토큰은 소문자여야 합니다.

  • SentimentScore – 토큰의 감성 점수로, [-4, 4] 범위의 숫자형 스칼라로 지정됩니다. 여기서 -4에 가까운 점수는 강한 부정 감성을, 4에 가까운 점수는 강한 긍정 감성을, 0에 가까운 점수는 중립 감성을 나타냅니다.

감성을 평가할 때는 기본적으로 감성 점수를 계산하기 전에 문자가 하나인 토큰을 무시하고 이모지를 동등한 텍스트 설명으로 대체합니다. 예를 들어 이모지 "😀"의 인스턴스를 텍스트 "grinning face"로 바꾼 다음 감성 점수를 평가합니다. 대응되는 감성 점수가 SentimentLexicon에 있는 문자 또는 이모지를 포함하는 토큰을 제공하는 경우 함수는 토큰을 제거하거나 대체하지 않습니다.

디폴트 감성 어휘사전은 VADER 감성 어휘사전입니다.

데이터형: table

증폭어 또는 n-gram의 목록으로, string형 배열로 지정됩니다.

이 함수는 증폭어 n-gram을 사용하여 후속 토큰의 감성을 증폭합니다. 예: "absolutely", "amazingly" 같은 단어.

단어 목록의 경우, 목록은 열 벡터여야 합니다. n-gram 목록의 경우, 크기는 NumNgrams×maxN입니다. 여기서 NumNgrams는 n-gram의 개수이고, maxN은 가장 큰 n-gram의 길이입니다. 목록의 (i,j)번째 요소는 i번째 n-gram 중 j번째 단어입니다. i번째 n-gram의 단어 수가 maxN보다 작은 경우 목록의 i번째 행의 나머지 요소는 비어 있습니다.

증폭어 n-gram은 소문자여야 합니다.

증폭어 n-gram의 디폴트 목록은 VADER 증폭어 목록입니다.

데이터형: string

약화어 또는 n-gram의 목록으로, string형 배열로 지정됩니다.

함수는 약화어 n-gram을 사용하여 후속 토큰의 감성을 약화합니다. 예: "hardly", "somewhat" 같은 단어.

단어 목록의 경우, 목록은 열 벡터여야 합니다. n-gram 목록의 경우, 크기는 NumNgrams×maxN입니다. 여기서 NumNgrams는 n-gram의 개수이고, maxN은 가장 큰 n-gram의 길이입니다. 목록의 (i,j)번째 요소는 i번째 n-gram 중 j번째 단어입니다. i번째 n-gram의 단어 수가 maxN보다 작은 경우 목록의 i번째 행의 나머지 요소는 비어 있습니다.

약화어 n-gram은 소문자여야 합니다.

약화어 n-gram의 디폴트 목록은 VADER 약화어 목록입니다.

데이터형: string

부정어 목록으로, string형 배열로 지정됩니다.

함수는 부정어를 사용하여 후속 토큰의 감성을 부정합니다. 예: "not", "isn't" 같은 단어.

부정어는 소문자여야 합니다.

부정어의 디폴트 목록은 VADER 부정어 목록입니다.

데이터형: string

출력 인수

모두 축소

복합 감성 점수로, 숫자형 벡터로 반환됩니다. 이 함수는 각 입력 문서에 대해 하나의 점수를 반환합니다. 값 compoundScores(i)documents(i)의 복합 감성 점수에 대응됩니다.

이 함수는 개별 토큰 점수를 집계하고 VADER 알고리즘 규칙에 따라 조정한 다음 -1과 1 사이로 정규화하여 복합 점수를 계산합니다.

긍정 감성 점수로, 숫자형 벡터로 지정됩니다. 이 함수는 각 입력 문서에 대해 하나의 점수를 반환합니다. 값 positiveScores(i)documents(i)의 긍정 감성 점수에 대응됩니다.

부정 감성 점수로, 숫자형 벡터로 지정됩니다. 이 함수는 각 입력 문서에 대해 하나의 점수를 반환합니다. 값 negativeScores(i)documents(i)의 부정 감성 점수에 대응됩니다.

중립 감성 점수로, 숫자형 벡터로 지정됩니다. 이 함수는 각 입력 문서에 대해 하나의 점수를 반환합니다. 값 neutralScores(i)documents(i)의 중립 감성 점수에 대응됩니다.

참고 문헌

[1] Hutto, C., and Eric Gilbert. “VADER: A Parsimonious Rule-Based Model for Sentiment Analysis of Social Media Text.” Proceedings of the International AAAI Conference on Web and Social Media 8, no. 1 (May 16, 2014): 216–25. https://doi.org/10.1609/icwsm.v8i1.14550.

버전 내역

R2019b에 개발됨