Main Content

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

topkwords

bag-of-words 모델 또는 LDA 토픽에서 가장 중요한 단어

설명

예제

tbl = topkwords(bag)은 bag-of-words 모델 bag에서 단어 개수가 가장 많은 5개 단어의 테이블을 반환합니다. 이 함수는 기본적으로 대/소문자를 구분합니다.

예제

tbl = topkwords(bag,k)는 단어 개수가 가장 많은 k개 단어의 테이블을 반환합니다. 이 함수는 기본적으로 대/소문자를 구분합니다.

예제

tbl = topkwords(ldaMdl,k,topicIdx)는 LDA(잠재 디리클레 할당) 모델 ldaMdl의 LDA 토픽 topicIdx에서 확률이 가장 높은 k개 단어의 테이블을 반환합니다.

예제

tbl = topkwords(___,Name,Value)는 하나 이상의 이름-값 쌍의 인수를 사용하여 옵션을 추가로 지정합니다.

예제

모두 축소

bag-of-words 모델에서 빈도가 가장 높은 단어의 테이블을 만듭니다.

예제 데이터를 불러옵니다. 파일 sonnetsPreprocessed.txt에는 셰익스피어 소네트의 전처리된 버전이 들어 있습니다. 파일에는 한 줄에 하나씩 소네트가 들어 있으며 단어가 공백으로 구분되어 있습니다. sonnetsPreprocessed.txt에서 텍스트를 추출하고, 추출한 텍스트를 새 줄 문자에서 문서로 분할한 후 그 문서를 토큰화합니다.

filename = "sonnetsPreprocessed.txt";
str = extractFileText(filename);
textData = split(str,newline);
documents = tokenizedDocument(textData);

bagOfWords를 사용하여 bag-of-words 모델을 만듭니다.

bag = bagOfWords(documents) 
bag = 
  bagOfWords with properties:

          Counts: [154x3092 double]
      Vocabulary: ["fairest"    "creatures"    "desire"    "increase"    "thereby"    "beautys"    "rose"    "might"    "never"    "die"    "riper"    "time"    "decease"    "tender"    "heir"    "bear"    "memory"    "thou"    ...    ] (1x3092 string)
        NumWords: 3092
    NumDocuments: 154

상위 5개 단어를 찾습니다.

T = topkwords(bag);

모델에서 상위 20개 단어를 찾습니다.

k = 20;
T = topkwords(bag,k)
T=20×2 table
      Word      Count
    ________    _____

    "thy"        281 
    "thou"       234 
    "love"       162 
    "thee"       161 
    "doth"        88 
    "mine"        63 
    "shall"       59 
    "eyes"        56 
    "sweet"       55 
    "time"        53 
    "beauty"      52 
    "nor"         52 
    "art"         51 
    "yet"         51 
    "o"           50 
    "heart"       50 
      ⋮

LDA 토픽에서 확률이 가장 높은 단어의 테이블을 만듭니다.

이 결과를 재현하기 위해 rng'default'로 설정합니다.

rng('default')

예제 데이터를 불러옵니다. 파일 sonnetsPreprocessed.txt에는 셰익스피어 소네트의 전처리된 버전이 들어 있습니다. 파일에는 한 줄에 하나씩 소네트가 들어 있으며 단어가 공백으로 구분되어 있습니다. sonnetsPreprocessed.txt에서 텍스트를 추출하고, 추출한 텍스트를 새 줄 문자에서 문서로 분할한 후 그 문서를 토큰화합니다.

filename = "sonnetsPreprocessed.txt";
str = extractFileText(filename);
textData = split(str,newline);
documents = tokenizedDocument(textData);

bagOfWords를 사용하여 bag-of-words 모델을 만듭니다.

bag = bagOfWords(documents);

20개 토픽으로 LDA 모델을 피팅합니다. 세부 정보가 출력되지 않도록 'Verbose'를 0으로 설정합니다.

numTopics = 20;
mdl = fitlda(bag,numTopics,'Verbose',0);

첫 번째 토픽에서 상위 20개 단어를 찾습니다.

k = 20;
topicIdx = 1;
tbl = topkwords(mdl,k,topicIdx)
tbl=20×2 table
      Word        Score  
    ________    _________

    "eyes"        0.11155
    "beauty"      0.05777
    "hath"       0.055778
    "still"      0.049801
    "true"       0.043825
    "mine"       0.033865
    "find"       0.031873
    "black"      0.025897
    "look"       0.023905
    "tis"        0.023905
    "kind"       0.021913
    "seen"       0.021913
    "found"      0.017929
    "sin"        0.015937
    "three"      0.013945
    "golden"    0.0099608
      ⋮

첫 번째 토픽에서 상위 20개 단어를 찾고 점수에 역 평균 스케일링을 사용합니다.

tbl = topkwords(mdl,k,topicIdx,'Scaling','inversemean')
tbl=20×2 table
      Word       Score  
    ________    ________

    "eyes"        1.2718
    "beauty"     0.59022
    "hath"        0.5692
    "still"      0.50269
    "true"       0.43719
    "mine"       0.32764
    "find"       0.32544
    "black"      0.25931
    "tis"        0.23755
    "look"       0.22519
    "kind"       0.21594
    "seen"       0.21594
    "found"      0.17326
    "sin"        0.15223
    "three"      0.13143
    "golden"    0.090698
      ⋮

스케일링된 점수를 크기 데이터로 사용하여 워드 클라우드를 만듭니다.

figure
wordcloud(tbl.Word,tbl.Score);

입력 인수

모두 축소

입력 bag-of-words 모델로, bagOfWords 객체로 지정됩니다.

반환할 단어의 개수로, 양의 정수 또는 Inf로 지정됩니다.

kInf이면 함수는 모든 단어를 반환합니다. 입력이 bag-of-words 모델과 LDA 모델이면, 함수는 각각 빈도 순과 중요도 순으로 단어를 정렬합니다.

예: 20

입력 LDA 모델로, ldaModel 객체로 지정됩니다.

LDA 토픽의 인덱스로, 음이 아닌 정수로 지정됩니다.

이름-값 인수

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

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

예: 'Scaling','inversemean'은 토픽 단어 확률에 역 평균 스케일링을 사용하도록 지정합니다.

Bag-of-Words 모델 옵션

모두 축소

대/소문자를 무시하는 옵션으로, 'IgnoreCase'와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • false – 대/소문자만 다른 단어를 별도의 단어로 처리합니다.

  • true – 대/소문자만 다른 단어를 같은 단어로 처리하여 개수를 합산합니다.

이 옵션은 bag-of-words 입력만 지원합니다.

출력을 셀형 배열로 반환하도록 하는 표시자로, 'ForceCellOutput'과 함께 true 또는 false로 구성된 쌍이 쉼표로 구분되어 지정됩니다.

이 옵션은 bag-of-words 입력만 지원합니다.

데이터형: logical

LDA 모델 옵션

모두 축소

토픽 단어 확률에 적용할 스케일링으로, 'Scaling'과 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • 'none' – 사후 단어 확률을 반환합니다.

  • 'inversemean' – 모든 토픽에서 이 단어에 대한 사후 확률의 기하 평균으로 토픽별 사후 단어 확률을 정규화합니다. 이 함수는 공식 Phi.*(log(Phi)-mean(log(Phi),1))을 사용합니다. 여기서 PhildaMdl.TopicWordProbabilities에 대응합니다.

이 옵션은 LDA 모델 입력만 지원합니다.

예: 'Scaling','inversemean'

데이터형: char

출력 인수

모두 축소

상위 단어로, 테이블 또는 테이블로 구성된 셀형 배열로 반환됩니다. 입력이 bag-of-words 모델과 LDA 모델이면, 함수는 각각 빈도 순과 중요도 순으로 단어를 정렬합니다.

입력이 bag-of-words 모델이면 테이블에는 다음과 같은 열이 있습니다.

Wordstring형으로 지정된 단어
Countbag-of-words 모델에서 단어가 나오는 횟수

bag이 스칼라가 아닌 배열이거나 'ForceCellOutput'true인 경우 이 함수는 출력값을 테이블로 구성된 셀형 배열로 반환합니다. 셀형 배열의 각 요소는 대응하는 bag 요소의 상위 단어를 포함하는 테이블입니다.

입력이 LDA 모델이면 테이블에는 다음과 같은 열이 있습니다.

Wordstring형으로 지정된 단어
Score주어진 LDA 토픽에 대한 단어 확률

  • bag-of-n-grams 모델에서 가장 높은 빈도로 나오는 n-gram을 찾으려면 topkngrams를 사용합니다.

버전 내역

R2017b에 개발됨