主要内容

BM25相似性

文档与BM25算法的相似性

描述

使用BM25相似性计算文档相似性。

缺省情况下,该函数计算BM25的相似度。要计算BM11, BM15,或BM25+的相似性,使用“文档长度缩放”“DocumentLengthCorrection”参数。

例子

相似之处= bm25Similarity (文件返回指定文档之间的成对BM25相似性。的分数相似性(i, j)表示之间的相似性文件(一)文件(j)

例子

相似之处= bm25Similarity (文件查询返回之间的相似性文件查询.的分数相似性(i, j)表示之间的相似性文件(一)查询(j)

例子

相似之处= bm25Similarity (返回由指定的bag-of-words或bag-of-n-grams模型编码的文档之间的相似性。的分数相似性(i, j)表示对象之间的相似性th和j编码为

相似之处= bm25Similarity (查询返回由bag-of-words或bag-of-n-grams模型编码的文档之间的相似性以及查询.的分数相似性(i, j)表示对象之间的相似性编码的文件查询(j)

例子

相似之处= bm25Similarity (___名称,值使用一个或多个名称-值对参数指定其他选项。例如,要使用BM25+算法,设置“DocumentLengthCorrection”选项为非零值。

例子

全部折叠

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

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

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

相似性=BM25相似性(文件);

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

图的热图(相似性);包含(“文档”)伊拉贝尔(“文档”)标题(“BM25相似之处”

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

前三个文档具有最高的成对相似性,这表明这些文档是最相似的。最后一个文档与其他文档的两两相似度较低,说明该文档与其他文档的相似度较低。

创建一个输入文档数组。

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

创建一个查询文档数组。

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

使用BM25相似性函数。输出是一个稀疏矩阵。的分数相似性(i, j)表示之间的相似性文件(一)查询(j)

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

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

图的热图(相似性);包含(“查询文档”)伊拉贝尔(“输入文件”)标题(“BM25相似之处”

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

在本例中,第一个输入文档与第一个查询文档非常相似。

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

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

使用BM25相似性函数。输出是一个稀疏矩阵。

相似性= bm25Similarity(袋);

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

图的热图(相似性(1:5,1:5));包含(“文档”)伊拉贝尔(“文档”)标题(“BM25相似之处”

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

BM25+算法解决了BM25算法的一个局限性:根据文档长度进行的术语频率规范化的分量没有适当的下限。由于这个局限性,与查询术语不匹配的长文档通常会被BM25不公平地评分,因为它们与不匹配的较短文档具有相似的相关性在查询术语中输入。

BM25+通过使用文档长度校正因子(值“文档长度缩放”名称-值对)。这个因素可以防止算法过分惩罚长文档。

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

textData1 = [“敏捷的棕色狐狸跳过了懒狗”“快狐狸跳过了懒狗”"狗坐在那里什么也不做"“其他动物坐在那里观看”];documents1 = tokenizedDocument (textData1)
文档1=4x1标记文档:9个标记:敏捷的棕色狐狸跳过了懒狗8个标记:敏捷的狐狸跳过了懒狗7个标记:狗坐在那里什么也不做6个标记:其他动物坐在那里观看
textData2 = [“一只棕色的狐狸跳过了那只懒狗”"另一只狐狸跳过了那只狗"];documents2 = tokenizedDocument (textData2)
8个代币:一只棕色的狐狸跳过了那只懒狗。6个代币:另一只狐狸跳过了那只狗

要计算BM25+文档的相似性,请使用BM25相似性函数并设置“DocumentLengthCorrection”选项设置为非零值。在这种情况下,设置“DocumentLengthCorrection”选项1。

相似性= bm25Similarity (documents1 documents2,“DocumentLengthCorrection”,1);

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

图的热图(相似性);包含(“查询”)伊拉贝尔(“文档”)标题(“BM25 +相似之处”

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

这里,与示例进行比较文件之间的相似性,得分显示输入文档与第一个查询文档之间的相似性更多。

输入参数

全部折叠

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

输入bag-of-words或bag-of-n-grams模型,指定为巴格沃兹物体或物体巴戈夫克反对。如果是一个巴戈夫克对象,则该函数将每个n-gram视为单个单词。

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

  • 一个标记化文档数组

  • 一个巴格沃兹巴戈夫克对象

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

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

为了计算术语频率和反文档频率统计,该函数进行编码查询使用一个单词包模型。它使用的模型取决于你调用它的语法。如果你的语法指定了输入参数文件,然后使用bagOfWords(文档).如果你的语法指定,然后使用

名称-值参数

指定可选的逗号分隔的对名称,值参数。名称参数名和价值是对应的值。名称必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:Name1, Value1,…,的家

例子:bm25Similarity(文档、“TFScaling”1.5)返回指定文档的成对相似性,并将令牌频率比例系数设置为1.5。

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

  • “textrank”—使用TextRank IDF加权[2].对于每个术语,将IDF系数设置为

    • 对数((N-NT+0.5)/(NT+0.5))如果该术语出现在半数以上的文件中,则N文件的数量是否在输入数据和新界是包含每个术语的输入数据中的文档数量。

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

  • “经典bm25”—每一项的IDF因子设置为对数((N-NT+0.5)/(NT+0.5))

  • “正常”—每一项的IDF因子设置为日志(N/NT)

  • “一元”—每项IDF因子均为1。

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

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

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

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

项频率比例因子,指定为逗号分隔对组成“TFScaling”一个非负标量。

该选项对应于该值kBM25算法中。有关更多信息,请参见BM25

数据类型:仅有一个的||int8|int16|int32|int64|uint8|uint16|uint32|uint64

文档长度缩放因子,指定为逗号分隔对,由“文档长度缩放”和一个范围为[0,1]的标量。

该选项对应于该值bBM25算法中。当b = 1在美国,BM25算法相当于BM11。当b = 0在美国,BM25算法相当于BM15。有关更多信息,请参见BM11BM15BM25

数据类型:

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

此选项仅适用于以下情况“IDFWeight”“textrank”

数据类型:仅有一个的||int8|int16|int32|int64|uint8|uint16|uint32|uint64

文档长度校正因子,指定为逗号分隔对,由“DocumentLengthCorrection”一个非负标量。

该选项对应于该值 δ 在BM25+算法中。如果文档长度修正系数非零,则BM25相似性函数使用BM25+算法。否则,函数使用BM25算法。有关更多信息,请参见BM25+

数据类型:

输出参数

全部折叠

BM25相似性分数,作为稀疏矩阵返回:

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

  • 给定一组标记化文档和一组查询文档,相似之处是一个N1——- - - - - -氮气矩阵,相似性(i, j)表示之间的相似性文件(一)j查询文件,以及N1氮气表示中的文档数文件查询,分别。

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

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

提示

  • BM25算法通过基于术语频率(TF)和反向文档频率(IDF)的选项聚合和使用来自输入数据中所有文档的信息。这种行为意味着,当给函数提供不同的文档集合时,同一对文档可以产生不同的BM25相似性分数。

  • BM25算法在比较文档时可以输出不同的分数。这种行为是由于在BM25算法中使用了IDF权重和文档长度。

算法

全部折叠

BM25

给定文档集合中的一个文档 D ,和查询文档,则给出BM25得分

BM25 文件 查询 D 查询 以色列国防军 词; D 文件 k + 1 文件 + k 1 b + b | 文件 | n ¯

哪里

  • 计数(词、文档)表示发生故障的频率文件

  • n ¯ 表示文档中的平均长度 D

  • k表示术语频率比例因子的价值“TFScaling”名称-值对参数)。此因素会减弱频繁出现的术语对BM25分数的影响。

  • b表示文档长度比例因子的价值“文档长度缩放”名称-值对的观点)。该因素控制文档的长度如何影响BM25评分。当b = 1在美国,BM25算法相当于BM11。当b = 0在美国,BM25算法相当于BM15。

  • 以色列国防军 D 是给定文档集合的指定单词的逆文档频率 D

BM25+

BM25+算法解决了BM25算法的一个局限性:根据文档长度进行的术语频率规范化的分量没有适当的下限。由于这个局限性,与查询术语不匹配的长文档通常会被BM25不公平地评分,因为它们与不匹配的较短文档具有相似的相关性在查询术语中输入。

BM25+算法与BM25算法相同,但有一个额外的参数 D 和一个查询文档,BM25+得分为

BM25 + 文件 查询 D 查询 以色列国防军 词; D 文件 k + 1 文件 + k 1 b + b | 文件 | n ¯ + δ

其中额外的参数 δ 表示文件长度修正系数的价值“文档长度缩放”名称-值对)。这个因素可以防止算法过分惩罚长文档。

BM11

BM11是一个特殊的例子BM25b = 1

给定文档集合中的一个文档 D ,和查询文档,则给出BM11得分

BM11 文件 查询 D 查询 以色列国防军 词; D 文件 k + 1 文件 + k | 文件 | n ¯

BM15

BM15是一种特殊情况BM25b = 0

给定文档集合中的一个文档 D ,和查询文档,则给出BM15得分

BM15 文件 查询 D 查询 以色列国防军 词; D 文件 k + 1 文件 + k

参考文献

[1] 《概率相关性框架:BM25及以后》信息检索的基础与趋势3,没有。4(2009): 333 - 389。

[2] 巴里奥斯、费德里科、费德里科·洛佩斯、路易斯·阿格里奇和罗莎·瓦钦乔泽。“用于自动摘要的TextRank相似性函数的变体。”arXiv预印本arXiv: 1602.03606(2016).

介绍了R2020a