主要内容

cosineSimilarity

文档相似度与余弦相似度

描述

例子

相似之处= cosineSimilarity (文档使用由文档的单词计数派生的tf-idf矩阵返回指定文档的成对余弦相似度。的分数相似性(i, j)表示文档(我)文档(j)

例子

相似之处= cosineSimilarity (文档查询返回相似之处文档查询使用tf-idf矩阵导出的单词计数文档.的分数相似性(i, j)表示文档(我)查询(j)

例子

相似之处= cosineSimilarity (返回由指定的bag-of-words或bag-of-n-grams模型编码的文档的成对相似性,该模型使用由单词计数派生的tf-idf矩阵.的分数相似性(i, j)表示之间的相似性th和j编码为

相似之处= cosineSimilarity (查询返回由bag-of-words或bag-of-n-grams模型编码的文档之间的相似性查询使用tf-idf矩阵导出的单词计数.的分数相似性(i, j)表示之间的相似性编码的文件查询(j)

例子

相似之处= cosineSimilarity (返回在矩阵的行向量中编码的数据的相似性.的分数相似性(i, j)表示(我,:)米(j,:)

相似之处= cosineSimilarity (M1, M2)返回在矩阵中编码的文档之间的相似性M1平方米.的分数相似性(i, j)对应于之间的相似性M1(我,:)平方米(j,:)

例子

全部折叠

创建一个标记化文档数组。

textData = ["那只敏捷的棕色狐狸跳过了那只懒狗""快速的棕色狐狸跳过了懒狗"这只懒狗坐在那里什么也不做。“其他动物坐在那里观看”];文件= tokenizedDocument (textData)
译文:这只敏捷的棕色狐狸跳过了那只懒狗。译文:懒狗坐在那里什么也不做,其他的动物坐在那里观看

计算它们之间的相似点cosineSimilarity函数。输出是一个稀疏矩阵。

相似性= cosineSimilarity(文件);

在热图中可视化文档之间的相似性。

图的热图(相似性);包含(“文档”) ylabel (“文档”)标题(“余弦相似性”

图中包含一个热图类型的对象。类型热图的图表标题为余弦相似点。

分数接近1表示非常相似。分数接近于零表明相似性很弱。

创建一个输入文档数组。

str = ["那只敏捷的棕色狐狸跳过了那只懒狗""快狐狸跳过了懒狗""狗坐在那里什么也不做"“其他动物坐在那里观看”];文件= tokenizedDocument (str)
这只灵巧的棕色狐狸跳过了那只懒狗。这只灵巧的狐狸跳过了那只懒狗

创建一个查询文档数组。

str = ["一只棕色狐狸跳过了那只懒狗""另一只狐狸跳过了那只狗"];查询= tokenizedDocument (str)
8个代币:一只棕色的狐狸跳过了懒狗。6个代币:另一只狐狸跳过了懒狗

属性计算输入文档和查询文档之间的相似性cosineSimilarity函数。输出是一个稀疏矩阵。

相似性= cosineSimilarity(文档、查询);

在热图中可视化文档的相似之处。

图的热图(相似性);包含(“查询文档”) ylabel (“输入文件”)标题(“余弦相似性”

图中包含一个热图类型的对象。类型热图的图表标题为余弦相似点。

分数接近1表示非常相似。分数接近于零表明相似性很弱。

从文本数据中创建一个单词袋模型sonnets.csv

文件名=“sonnets.csv”;台= readtable(文件名,“TextType”“字符串”);textData = tbl.Sonnet;文件= tokenizedDocument (textData);袋= bagOfWords(文档)
单词:["From" " fairrest " "creatures" "we"…NumWords: 3527 NumDocuments: 154

计算十四行诗之间的相似性使用cosineSimilarity函数。输出是一个稀疏矩阵。

相似性= cosineSimilarity(袋);

在热图中可视化前五个文档的相似之处。

图的热图(相似性(1:5,1:5));包含(“文档”) ylabel (“文档”)标题(“余弦相似性”

图中包含一个热图类型的对象。类型热图的图表标题为余弦相似点。

分数接近1表示非常相似。分数接近于零表明相似性很弱。

对于单词袋输入,cosineSimilarity函数使用从模型中导出的tf-idf矩阵计算余弦相似度。为了直接计算单词计数向量上的余弦相似度,将单词计数输入到cosineSimilarity函数是一个矩阵。

从文本数据中创建一个单词袋模型sonnets.csv

文件名=“sonnets.csv”;台= readtable(文件名,“TextType”“字符串”);textData = tbl.Sonnet;文件= tokenizedDocument (textData);袋= bagOfWords(文档)
单词:["From" " fairrest " "creatures" "we"…NumWords: 3527 NumDocuments: 154

从模型中得到单词计数矩阵。

M = bag.Counts;

计算余弦文档相似度的字计数矩阵使用cosineSimilarity函数。输出是一个稀疏矩阵。

相似性= cosineSimilarity (M);

在热图中可视化前五个文档的相似之处。

图的热图(相似性(1:5,1:5));包含(“文档”) ylabel (“文档”)标题(“余弦相似性”

图中包含一个热图类型的对象。类型热图的图表标题为余弦相似点。

分数接近1表示非常相似。分数接近于零表明相似性很弱。

输入参数

全部折叠

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

输入bag-of-words或bag-of-n-grams模型,指定为bagOfWords对象或一个bagOfNgrams对象。如果是一个bagOfNgrams对象,则该函数将每个n-gram视为单个单词。

查询文档集,指定为以下之一:

  • 一个tokenizedDocument数组

  • 1 -N表示单个文档的字符串数组,其中每个元素都是一个单词

  • 1 -N表示单个文档的字符向量的单元格数组,其中每个元素都是一个单词

为了计算术语频率和反文档频率统计,该函数进行编码查询使用词汇袋模型。它使用的模型取决于调用它的语法。如果你的语法指定了输入参数文档,然后使用bagOfWords(文档).如果你的语法指定,然后函数进行编码查询使用然后使用得到的tf-idf矩阵。

输入数据,指定为矩阵。例如,可以是一个单词或n-gram计数矩阵,也可以是一个tf-idf矩阵。

数据类型:

输出参数

全部折叠

余弦相似度得分,以稀疏矩阵的形式返回:

  • 给定一个令牌化文档数组,相似之处是一个N——- - - - - -N对称矩阵,相似性(i, j)表示文档(我)文档(j), N为输入文档数。

  • 给定一组标记化文档和一组查询文档,相似之处是一个N1——- - - - - -N2矩阵,相似性(i, j)表示文档(我)j查询文档,和N1N2中文档的数量文档查询,分别。

  • 给定一个单词袋或n-gram袋模型,相似之处是一个袋里。NumDocuments——- - - - - -袋里。NumDocuments对称矩阵,相似性(i, j)表示之间的相似性th和j编码为

  • 给定一个单词包或n-gram包模型和一组查询文档,相似之处是一个袋里。NumDocuments——- - - - - -N2矩阵,相似性(i, j)表示之间的相似性编码的文件jth文档查询,N2对应于文件的数量查询

  • 给定一个矩阵,相似之处是一个大小(M, 1)——- - - - - -大小(M, 1)对称矩阵,相似性(i, j)表示(我,:)米(j,:)

  • 鉴于两个矩阵,相似之处是一个尺寸(M1, 1)——- - - - - -规模(平方米,1)矩阵,相似性(i, j)表示M1(我,:)平方米(j,:)

介绍了R2020a