主要内容

tfidf

术语频率逆文档频率(tf-idf)矩阵

描述

例子

= tfidf (返回基于单词袋或n-grams袋模型的术语频率-逆文档频率(tf-idf)矩阵

例子

= tfidf (文档返回文档的tf-idf矩阵文档通过使用逆文档频率(IDF)因子计算

例子

= tfidf (___名称,值使用一个或多个名称-值对参数指定其他选项。

例子

全部折叠

从单词袋模型创建一个术语频率-逆文档频率(tf-idf)矩阵。

加载示例数据。该文件sonnetsPreprocessed.txt包含莎士比亚十四行诗的预处理版本。该文件每行包含一首十四行诗,用空格分隔单词。从中提取文本sonnetsPreprocessed.txt,以换行符将文本分割为文档,然后对文档进行标记。

文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData = split(str,换行符);documents = tokenizedDocument(textData);

使用创建单词袋模型bagOfWords

bag = bagOfWords(文档)
带有属性的单词:[154x3092 double]词汇:["最公平的" "生物" "欲望"…NumWords: 3092 NumDocuments: 154

创建tf-idf矩阵。查看前10行和列。

M = tfidf(包);完整的(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 4.5287 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.5520 2.2644 2.2644 0 0 0 0 0 0 0 0 0 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.7344 2.2644 2.5520 0 0 0 0 0 0 0 0 0 0 0 0

从单词袋模型和新文档数组创建术语频率-逆文档频率(tf-idf)矩阵。

加载示例数据。该文件sonnetsPreprocessed.txt包含莎士比亚十四行诗的预处理版本。该文件每行包含一首十四行诗,用空格分隔单词。从中提取文本sonnetsPreprocessed.txt,以换行符将文本分割为文档,然后对文档进行标记。

文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData = split(str,换行符);documents = tokenizedDocument(textData);

根据文档创建单词袋模型。

bag = bagOfWords(文档)
带有属性的单词:[154x3092 double]词汇:["最公平的" "生物" "欲望"…NumWords: 3092 NumDocuments: 154

使用计算的逆文档频率(IDF)因子为新文档数组创建tf-idf矩阵

newDocuments = tokenizedDocument([“名字有什么关系?”玫瑰不管叫什么名字都一样芬芳。”“如果音乐是爱情的食粮,那就继续演奏吧。”]);M = tfidf(包,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(文件名);textData = split(str,换行符);documents = tokenizedDocument(textData);

使用创建单词袋模型bagOfWords

bag = bagOfWords(文档)
带有属性的单词:[154x3092 double]词汇:["最公平的" "生物" "欲望"…NumWords: 3092 NumDocuments: 154

创建tf-idf矩阵。查看前10行和列。

M = tfidf(包);完整的(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 4.5287 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.5520 2.2644 2.2644 0 0 0 0 0 0 0 0 0 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.7344 2.2644 2.5520 0 0 0 0 0 0 0 0 0 0 0 0

您可以通过指定TF和IDF权重公式来更改TF和IDF因子对TF - IDF矩阵的贡献。

若要忽略一个单词在文档中出现的次数,请使用二进制选项“TFWeight”.创建tf-idf矩阵并设置“TFWeight”“二元”.查看前10行和列。

M = tfidf(包,“TFWeight”“二元”);完整的(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 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 2.5520 2.2644 2.2644 0 0 0 0 0 0 0 0 0 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.7344 2.2644 2.5520 0 0 0 0 0 0 0 0 0 0 0 0

输入参数

全部折叠

输入单词袋或n-grams袋模型,指定为bagOfWords对象或bagOfNgrams对象。

输入文档,指定为tokenizedDocument数组、单词的字符串数组或字符向量的单元格数组。如果文档不是tokenizedDocument数组,则它必须是表示单个文档的行向量,其中每个元素都是一个单词。若要指定多个文档,请使用tokenizedDocument数组中。

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:“归一化”,真的指定规范化频率计数。

方法设置术语频率(TF)因子,指定为由逗号分隔的对组成“TFWeight”和以下其中之一:

  • “生”—将TF因子设置为不变的术语数。

  • “二元”-将TF因子设置为由1和0组成的矩阵,其中1表示一个术语是否在文档中。

  • “日志”—设置TF因子为1 + log(bag.Counts)

例子:“TFWeight”、“二进制”

数据类型:字符

方法计算文档频率逆因子,指定为由逗号分隔的对组成“IDFWeight”和以下其中之一:

  • “textrank”-使用TextRank IDF加权[1].对于每个术语,将IDF因子设置为

    • 日志((N-NT + 0.5) /(0.5元+))如果该术语出现在超过一半的文档中,则其中N文档的数量是否在输入数据和NT输入数据中包含每个术语的文档数。

    • IDFCorrection * avgIDF如果术语出现在文档的一半或f中,其中avgIDF是所有令牌的平均IDF。

  • “classic-bm25”—每个术语的“IDF因子”设置为日志((N-NT + 0.5) /(0.5元+))

  • “正常”—每个术语的“IDF因子”设置为日志(N /元)

  • “一元”—每个术语的IDF因子均设置为1。

  • “顺利”—每个术语的“IDF因子”设置为日志(1 + N /元)

  • “马克斯”—每个术语的“IDF因子”设置为日志(1 +马克斯(NT) /元)

  • “概率”—每个术语的“IDF因子”设置为日志((N-NT) /元)

在哪里N文档的数量是否在输入数据和NT输入数据中包含每个术语的文档数。

例子:“IDFWeight”、“顺利”

数据类型:字符

逆文档频率校正因子,指定为由逗号分隔的对组成“IDFCorrection”一个非负标量。

此选项仅适用于“IDFWeight”“textrank”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

选项将术语计数规范化,指定为逗号分隔的对,由“归一化”而且真正的.如果真正的,则该函数用欧几里得范数对每个项数向量进行归一化。

例子:“归一化”,真的

数据类型:逻辑

频率计数矩阵中输出文档的方向,指定为逗号分隔的对,由“DocumentsIn”和以下其中之一:

  • “行”-返回一个矩阵的频率计数与行对应的文档。

  • “列”-返回频率计数的转置矩阵,列对应文档。

数据类型:字符

指示符,用于强制输出作为单元格数组返回,指定为逗号分隔的对,由“ForceCellOutput”而且真正的

数据类型:逻辑

输出参数

全部折叠

输出术语频率逆文档频率矩阵,指定为稀疏矩阵或稀疏矩阵的单元格数组。

如果是非标量数组还是“ForceCellOutput”真正的,则函数将输出作为稀疏矩阵的单元格数组返回。单元格数组中的每个元素都是由对应的元素计算出来的tf-idf矩阵

参考文献

[1]巴里奥斯,费德里科,费德里科López,路易斯·阿格里奇和罗莎·瓦肯肖泽。“TextRank的相似函数的变化自动摘要。”arXiv预印arXiv:1602.03606(2016)。

版本历史

在R2017b中引入