tfidf
术语频率-反文档频率(tf-idf)矩阵
描述
例子
创建Tf-idf矩阵
从单词袋模型创建一个术语频率-反向文档频率(tf-idf)矩阵。
加载示例数据。该文件sonnetsPreprocessed.txt
包含莎士比亚十四行诗的预处理版本。该文件每行包含一首十四行诗,词之间用空格隔开。从中提取文本sonnetsPreprocessed.txt
,以换行符将文本拆分为文档,然后对文档进行标记。
文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData =分裂(str,换行符);文件= tokenizedDocument (textData);
使用创建单词袋模型bagOfWords
.
袋= 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)矩阵。
加载示例数据。该文件sonnetsPreprocessed.txt
包含莎士比亚十四行诗的预处理版本。该文件每行包含一首十四行诗,词之间用空格隔开。从中提取文本sonnetsPreprocessed.txt
,以换行符将文本拆分为文档,然后对文档进行标记。
文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData =分裂(str,换行符);文件= tokenizedDocument (textData);
从文档创建一个单词包模型。
袋= bagOfWords(文档)
计数:[154x3092 double]词汇:[“最公平的”“生物”“欲望”…NumWords: 3092 NumDocuments: 154
使用从中计算的反向文档频率(IDF)因子为新文档数组创建tf-idf矩阵袋
.
newDocuments = tokenizedDocument ([“名字有什么意义?”玫瑰不论叫什么名字,闻起来都一样香。”“如果音乐是爱情的食粮,就继续演奏吧。”]);newDocuments M = tfidf(包)
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
指定TF权重公式
加载示例数据。该文件sonnetsPreprocessed.txt
包含莎士比亚十四行诗的预处理版本。该文件每行包含一首十四行诗,词之间用空格隔开。从中提取文本sonnetsPreprocessed.txt
,以换行符将文本拆分为文档,然后对文档进行标记。
文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData =分裂(str,换行符);文件= tokenizedDocument (textData);
使用创建单词袋模型bagOfWords
.
袋= 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克袋模型
bagOfWords
对象|bagOfNgrams
对象
输入单词袋或n克袋模型,指定为bagOfWords
对象或一个bagOfNgrams
对象。
文档
- - - - - -输入文档
tokenizedDocument
数组|字符串数组的单词|字符向量的单元格数组
输入文档,指定为tokenizedDocument
数组,字的字符串数组,或字符向量的单元格数组。如果文档
不是一个tokenizedDocument
数组,那么它必须是表示单个文档的行向量,其中每个元素都是一个单词。要指定多个文档,请使用tokenizedDocument
数组中。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:“归一化”,真的
指定规范化频率计数。
TFWeight
- - - - - -设定期限频率因子的方法
“生”
(默认)|“二元”
|“日志”
方法来设置项频率(TF)因子,指定为逗号分隔的对,由“TFWeight”
和以下其中之一:
“生”
—将TF因子设置为未更改的术语数。“二元”
—将TF因子设置为1和0的矩阵,其中1表示一个术语是否在文档中。“日志”
—设置TF因子为1 +日志(bag.Counts)
.
例子:“TFWeight”、“二进制”
数据类型:字符
IDFWeight
- - - - - -求文档频率因子逆的方法
“正常”
(默认)|“textrank”
|“classic-bm25”
|“一元”
|“顺利”
|“马克斯”
|“概率”
方法计算反向文档频率因子,指定为逗号分隔对,由“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
- - - - - -反向文档频率校正因子
0.25(默认)|负的标量
反向文档频率校正因子,指定为逗号分隔的对,由“IDFCorrection”
一个非负的标量。
此选项仅适用于以下情况“IDFWeight”
是“textrank”
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
归一化
- - - - - -选项规范化术语计数
假
(默认)|真正的
选项来规范化术语计数,指定为逗号分隔的对,由“归一化”
而且真正的
或假
.如果真正的
,则该函数以欧氏范数归一化每一项数向量。
例子:“归一化”,真的
数据类型:逻辑
DocumentsIn
- - - - - -输出文档的定位
“行”
(默认)|“列”
频率计数矩阵中输出文档的方向,指定为逗号分隔的对,由“DocumentsIn”
和以下其中之一:
“行”
-返回与文档对应的行的频率计数矩阵。“列”
-返回与文档对应的列的频率计数的转置矩阵。
数据类型:字符
ForceCellOutput
- - - - - -用于强制将输出返回为单元格数组的指示器
假
(默认)|真正的
指示符,用于强制将输出返回为单元格数组,指定为由“ForceCellOutput”
而且真正的
或假
.
数据类型:逻辑
输出参数
参考文献
[1] Barrios, Federico, Federico López, Luis Argerich,和Rosa Wachenchauzer。自动摘要中TextRank相似函数的变化。arXiv预印本arXiv: 1602.03606(2016)。
版本历史
介绍了R2017b
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。