Main Content

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

tfidf

TF-IDF(단어 빈도-역 문서 빈도) 행렬

설명

예제

M = tfidf(bag)는 bag-of-words 모델 또는 bag-of-n-grams 모델 bag에 기반하여 TF-IDF(단어 빈도-역 문서 빈도) 행렬을 반환합니다.

예제

M = tfidf(bag,documents)bag에서 계산된 IDF(역 문서 빈도) 인자를 사용하여 documents의 문서에 대한 TF-IDF 행렬을 반환합니다.

예제

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

예제

모두 축소

bag-of-words 모델에서 TF-IDF(단어 빈도-역 문서 빈도) 행렬을 만듭니다.

예제 데이터를 불러옵니다. 파일 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

tf-idf 행렬을 만듭니다. 처음 10개의 행과 열을 표시합니다.

M = tfidf(bag);
full(M(1:10,1:10))
ans = 10×10

    3.6507    4.3438    2.7344    3.6507    4.3438    2.2644    3.2452    3.8918    2.4720    2.5520
         0         0         0         0         0    4.5287         0         0         0         0
         0         0         0         0         0         0         0         0         0    2.5520
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0    2.5520
         0         0    2.7344         0         0         0         0         0         0         0

bag-of-words 모델과 새 문서로 구성된 배열에서 TF-IDF(단어 빈도-역 문서 빈도) 행렬을 만듭니다.

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

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

문서에서 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

bag에서 계산된 IDF(역 문서 빈도) 인자를 사용하여 새 문서로 구성된 배열에 대한 TF-IDF 행렬을 만듭니다.

newDocuments = tokenizedDocument([
    "what's in a name? a rose by any other name would smell as sweet."
    "if music be the food of love, play on."]);
M = tfidf(bag,newDocuments)
M = 
   (1,7)       3.2452
   (1,36)      1.2303
   (2,197)     3.4275
   (2,313)     3.6507
   (2,387)     0.6061
   (1,1205)    4.7958
   (1,1835)    3.6507
   (2,1917)    5.0370

예제 데이터를 불러옵니다. 파일 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

tf-idf 행렬을 만듭니다. 처음 10개의 행과 열을 표시합니다.

M = tfidf(bag);
full(M(1:10,1:10))
ans = 10×10

    3.6507    4.3438    2.7344    3.6507    4.3438    2.2644    3.2452    3.8918    2.4720    2.5520
         0         0         0         0         0    4.5287         0         0         0         0
         0         0         0         0         0         0         0         0         0    2.5520
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0    2.5520
         0         0    2.7344         0         0         0         0         0         0         0

TF 및 IDF 가중치 식을 지정하면 TF-IDF 행렬에 대한 TF 및 IDF 인자의 기여도를 변경할 수 있습니다.

단어가 문서에 나오는 횟수를 무시하려면 'TFWeight'의 이진 옵션을 사용합니다. TF-IDF 행렬을 만들고 'TFWeight''binary'로 설정합니다. 처음 10개의 행과 열을 표시합니다.

M = tfidf(bag,'TFWeight','binary');
full(M(1:10,1:10))
ans = 10×10

    3.6507    4.3438    2.7344    3.6507    4.3438    2.2644    3.2452    1.9459    2.4720    2.5520
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0         0         0         0         0    2.5520
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0    2.5520
         0         0    2.7344         0         0         0         0         0         0         0

입력 인수

모두 축소

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

입력 문서로, tokenizedDocument 배열, 단어로 구성된 string형 배열 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. documentstokenizedDocument 배열이 아닌 경우 이는 단일 문서를 나타내고 각 요소가 단어인 행 벡터여야 합니다. 문서를 여러 개 지정하려면 tokenizedDocument 배열을 사용하십시오.

이름-값 인수

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

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

예: 'Normalized',true는 빈도 수를 정규화하도록 지정합니다.

TF(단어 빈도) 인자를 설정하는 방법으로, 'TFWeight'와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • 'raw' – TF 인자를 변경되지 않은 원래 단어 개수로 설정합니다.

  • 'binary' – TF 인자를 0과 1의 행렬로 설정합니다. 여기서 1은 단어가 문서에 있는지 여부를 나타냅니다.

  • 'log' – TF 인자를 1 + log(bag.Counts)로 설정합니다.

예: 'TFWeight','binary'

데이터형: char

역 문서 빈도 인자를 계산하는 방법으로, 'IDFWeight'와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • 'textrank' – TextRank IDF 가중치[1]를 사용합니다. 각 단어에 대해 IDF 인자를 다음과 같이 설정합니다.

    • log((N-NT+0.5)/(NT+0.5)): 단어가 문서의 절반 이상에서 나타나는 경우 설정합니다. 여기서 N은 입력 데이터의 문서 개수이고 NT는 각 단어가 포함된 입력 데이터의 문서 개수입니다.

    • IDFCorrection*avgIDF: 단어가 문서의 절반 또는 f에서 나타나는 경우 설정합니다. 여기서 avgIDF는 모든 토큰의 평균 IDF입니다.

  • 'classic-bm25' - 각 단어에 대해 IDF 인자를 log((N-NT+0.5)/(NT+0.5))로 설정합니다.

  • 'normal' - 각 단어에 대해 IDF 인자를 log(N/NT)로 설정합니다.

  • 'unary' - 각 단어에 대해 IDF 인자를 1로 설정합니다.

  • 'smooth' - 각 단어에 대해 IDF 인자를 log(1+N/NT)로 설정합니다.

  • 'max' - 각 단어에 대해 IDF 인자를 log(1+max(NT)/NT)로 설정합니다.

  • 'probabilistic' - 각 단어에 대해 IDF 인자를 log((N-NT)/NT)로 설정합니다.

여기서 N은 입력 데이터의 문서 개수이고 NT는 각 단어가 포함된 입력 데이터의 문서 개수입니다.

예: 'IDFWeight','smooth'

데이터형: char

역 문서 빈도 보정 인자로, 'IDFCorrection'과 함께 음이 아닌 스칼라가 쉼표로 구분되어 지정됩니다.

이 옵션은 'IDFWeight''textrank'인 경우에만 적용됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

단어 개수를 정규화하는 옵션으로, 'Normalized'와 함께 true 또는 false가 쉼표로 구분되어 지정됩니다. true이면 이 함수는 단어 개수의 각 벡터를 유클리드 노름으로 정규화합니다.

예: 'Normalized',true

데이터형: logical

빈도 수 행렬에서 출력 문서의 방향으로, 'DocumentsIn'과 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • 'rows' - 행이 문서에 대응되는, 빈도 수로 구성된 행렬을 반환합니다.

  • 'columns' - 열이 문서에 대응되는, 빈도 수로 구성된 전치 행렬을 반환합니다.

데이터형: char

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

데이터형: logical

출력 인수

모두 축소

출력 TF-IDF(단어 빈도-역 문서 빈도) 행렬로, 희소 행렬 또는 희소 행렬로 구성된 셀형 배열로 지정됩니다.

bag이 스칼라가 아닌 배열이거나 'ForceCellOutput'true인 경우 이 함수는 출력을 희소 행렬로 구성된 셀형 배열로 반환합니다. 셀형 배열의 각 요소는 해당하는 bag 요소에서 계산된 TF-IDF 행렬입니다.

참고 문헌

[1] Barrios, Federico, Federico López, Luis Argerich, and Rosa Wachenchauzer. "Variations of the Similarity Function of TextRank for Automated Summarization." arXiv preprint arXiv:1602.03606 (2016).

버전 내역

R2017b에 개발됨