Main Content

topkngrams

빈도가 가장 높은 n-gram

설명

예제

tbl = topkngrams(bag)은 bag-of-n-grams 모델 bag에서 가장 높은 빈도로 나오는 5개의 n-gram이 나열된 테이블을 반환합니다. 이 함수는 기본적으로 대/소문자를 구분합니다.

예제

tbl = topkngrams(bag,k)는 bag-of-n-grams 모델 bag에서 가장 높은 빈도로 나오는 k개의 n-gram을 나열합니다. 이 함수는 기본적으로 대/소문자를 구분합니다.

예제

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

예제

모두 축소

bag-of-n-grams 모델에서 빈도가 가장 높은 바이그램의 테이블을 만듭니다.

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

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

bag-of-n-grams 모델을 만듭니다.

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

          Counts: [154×8799 double]
      Vocabulary: [1×3092 string]
          Ngrams: [8799×2 string]
    NgramLengths: 2
       NumNgrams: 8799
    NumDocuments: 154

상위 5개 바이그램을 찾습니다.

tbl = topkngrams(bag)
tbl=5×3 table
         Ngram          Count    NgramLength
    ________________    _____    ___________

    "thou"    "art"      34           2     
    "mine"    "eye"      15           2     
    "thy"     "self"     14           2     
    "thou"    "dost"     13           2     
    "mine"    "own"      13           2     

상위 10개 바이그램을 찾습니다.

tbl = topkngrams(bag,10)
tbl=10×3 table
          Ngram          Count    NgramLength
    _________________    _____    ___________

    "thou"    "art"       34           2     
    "mine"    "eye"       15           2     
    "thy"     "self"      14           2     
    "thou"    "dost"      13           2     
    "mine"    "own"       13           2     
    "thy"     "sweet"     12           2     
    "thy"     "love"      11           2     
    "dost"    "thou"      10           2     
    "thou"    "wilt"      10           2     
    "love"    "thee"       9           2     

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

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

bag-of-n-grams 모델을 만듭니다. 길이가 2(바이그램)인 n-gram과 3(트라이그램)인 n-gram 개수를 계산하려면 'NgramLengths'를 벡터 [2 3]으로 지정합니다.

bag = bagOfNgrams(documents,'NgramLengths',[2 3])
bag = 
  bagOfNgrams with properties:

          Counts: [154×18022 double]
      Vocabulary: [1×3092 string]
          Ngrams: [18022×3 string]
    NgramLengths: [2 3]
       NumNgrams: 18022
    NumDocuments: 154

가장 많이 나오는 길이 2(바이그램) n-gram을 10개 표시합니다.

topkngrams(bag,10,'NGramLengths',2)
ans=10×3 table
             Ngram             Count    NgramLength
    _______________________    _____    ___________

    "thou"    "art"      ""     34           2     
    "mine"    "eye"      ""     15           2     
    "thy"     "self"     ""     14           2     
    "thou"    "dost"     ""     13           2     
    "mine"    "own"      ""     13           2     
    "thy"     "sweet"    ""     12           2     
    "thy"     "love"     ""     11           2     
    "dost"    "thou"     ""     10           2     
    "thou"    "wilt"     ""     10           2     
    "love"    "thee"     ""      9           2     

가장 많이 나오는 길이 3(트라이그램) n-gram을 10개 표시합니다.

 topkngrams(bag,10,'NGramLengths',3)
ans=10×3 table
               Ngram                Count    NgramLength
    ____________________________    _____    ___________

    "thy"     "sweet"    "self"       4           3     
    "why"     "dost"     "thou"       4           3     
    "thy"     "self"     "thy"        3           3     
    "thou"    "thy"      "self"       3           3     
    "mine"    "eye"      "heart"      3           3     
    "thou"    "shalt"    "find"       3           3     
    "fair"    "kind"     "true"       3           3     
    "thou"    "art"      "fair"       2           3     
    "love"    "thy"      "self"       2           3     
    "thy"     "self"     "thou"       2           3     

입력 인수

모두 축소

입력 bag-of-n-grams 모델로, bagOfNgrams 객체로 지정됩니다.

반환할 n-gram의 개수로, 양의 정수 또는 Inf로 지정됩니다.

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

예: 20

이름-값 인수

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

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

예: 'NgramLengths',[2 3]은 상위 바이그램과 상위 트라이그램을 반환하도록 지정합니다.

n-gram 길이로, 'NgramLengths'와 함께 양의 정수 또는 양의 정수로 구성된 벡터로 이루어진 쌍이 쉼표로 구분되어 지정됩니다.

NgramLengths를 지정하면 이 함수는 해당 길이의 n-gram만 반환합니다. NgramLengths를 지정하지 않으면 이 함수는 길이에 관계없이 상위 n-gram을 반환합니다.

예: [1 2 3]

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

  • false – 대/소문자만 다른 n-gram을 별도의 n-gram으로 처리합니다.

  • true – 대/소문자만 다른 n-gram을 같은 n-gram으로 처리하여 개수를 합산합니다.

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

데이터형: logical

출력 인수

모두 축소

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

테이블에는 다음과 같은 열이 있습니다.

Ngramstring형 벡터로 지정된 n-gram
Countbag-of-n-grams 모델에서 n-gram이 나오는 횟수
NgramLengthn-gram의 길이

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

버전 내역

R2018a에 개발됨