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에서 텍스트를 추출하고, 추출한 텍스트를 새 줄 문자에서 문서로 분할한 후 그 문서를 토큰화합니다.

文件名="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" ... ] NumWords: 3092 NumDocuments: 154

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

M = tfidf(bag); full(M(1:10,1:10))
ans =10×103.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에서 텍스트를 추출하고, 추출한 텍스트를 새 줄 문자에서 문서로 분할한 후 그 문서를 토큰화합니다.

文件名="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" ... ] 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에서 텍스트를 추출하고, 추출한 텍스트를 새 줄 문자에서 문서로 분할한 후 그 문서를 토큰화합니다.

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

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

bag = bagOfWords(documents)
bag = bagOfWords with 3092 words and 154 documents: fairest creatures desire increase thereby … 1 1 1 1 1 0 0 0 0 0 …

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

M = tfidf(bag); full(M(1:10,1:10))
ans =10×103.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×103.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에 개발됨