主要内容

bm25Similarity

文档与BM25算法相似之处

描述

使用bm25Similarity计算文档相似度。

默认情况下,该函数计算BM25相似度。要计算BM11、BM15或BM25+相似度,请使用“DocumentLengthScaling”而且“DocumentLengthCorrection”参数。

例子

相似之处= bm25Similarity (文档返回指定文档之间的成对BM25相似度。比分相似性(i, j)表示之间的相似性。文档(我)而且文档(j)

例子

相似之处= bm25Similarity (文档查询返回相似度文档而且查询.比分相似性(i, j)表示之间的相似性。文档(我)而且查询(j)

例子

相似之处= bm25Similarity (返回由指定的单词袋或n-grams袋模型编码的文档之间的相似性。比分相似性(i, j)类之间的相似度th和j文件编码

相似之处= bm25Similarity (查询返回由单词袋或n-grams袋模型编码的文档之间的相似性和指定的文件查询.比分相似性(i, j)类之间的相似度文件编码而且查询(j)

例子

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

例子

全部折叠

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

textData = [敏捷的棕色狐狸跳过了懒惰的狗。“敏捷的棕色狐狸跳过了懒惰的狗。”懒狗坐在那里什么也不做“其他动物坐在那里看着”];documents = tokenizedDocument(textData)
9个token:敏捷的棕色狐狸跳过了懒惰的狗9个token:敏捷的棕色狐狸跳过了懒惰的狗8个token:懒惰的狗坐在那里什么也没做6个token:其他动物坐在那里看着

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

similarity = bm25Similarity(文档);

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

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

图中包含热图类型的对象。类型热图的标题为BM25相似性。

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

创建一个输入文档数组。

STR = [敏捷的棕色狐狸跳过了懒惰的狗。快狐狸跳过了懒狗。"狗坐在那里什么也不做"“其他动物坐在那里看着”];documents = tokenizedDocument(str)
9个代币:敏捷的棕色狐狸跳过了懒惰的狗8个代币:敏捷的狐狸跳过了懒惰的狗7个代币:狗坐在那里什么都不做6个代币:其他动物坐在那里看着

创建一个查询文档数组。

STR = [一只棕色的狐狸跳过了那只懒狗。“另一只狐狸跳过了那条狗。”];queries = tokenizedDocument(str)
查询= 2x1 tokenizedDocument: 8个token:一只棕色的狐狸跳过了懒狗。6个token:另一只狐狸跳过了狗

方法计算输入文档和查询文档之间的相似性bm25Similarity函数。输出是一个稀疏矩阵。比分相似性(i, j)表示之间的相似性。文档(我)而且查询(j)

similarity = bm25Similarity(文档、查询);

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

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

图中包含热图类型的对象。类型热图的标题为BM25相似性。

在这种情况下,第一个输入文档与第一个查询文档非常相似。

中的文本数据创建单词袋模型sonnets.csv

文件名=“sonnets.csv”;TBL =可读(文件名,“TextType”“字符串”);textData = tbl.十四行诗;documents = tokenizedDocument(textData);bag = bagOfWords(文档)
词汇:["来自" "最美丽的" "生物" "我们"…NumWords: 3527 NumDocuments: 154

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

相似度= bm25Similarity(包);

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

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

图中包含热图类型的对象。类型热图的标题为BM25相似性。

BM25+算法解决了BM25算法的一个局限性:由文档长度决定的词频归一化组件没有适当的下界。由于这种限制,不匹配查询条件的长文档通常会被BM25不公当地评分,认为与不包含查询条件的短文档具有类似的相关性。

BM25+通过使用文档长度修正因子(文档长度修正因子的值)来解决这个限制“DocumentLengthScaling”名称-值对)。这个因素可以防止算法过度惩罚长文档。

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

textData1 = [敏捷的棕色狐狸跳过了懒惰的狗。快狐狸跳过了懒狗。"狗坐在那里什么也不做"“其他动物坐在那里看着”];documents1 = tokenizedDocument(textData1)
9个token:敏捷的棕色狐狸跳过了懒惰的狗8个token:敏捷的狐狸跳过了懒惰的狗7个token:狗坐在那里什么都不做6个token:其他动物坐在那里看着
textData2 = [一只棕色的狐狸跳过了那只懒狗。“另一只狐狸跳过了那条狗。”];documents2 = tokenizedDocument(textData2)
documents2 = 2x1 tokenizedDocument: 8个token:一只棕色的狐狸跳过了懒狗。6个token:另一只狐狸跳过了狗

要计算BM25+文档相似度,请使用bm25Similarity函数,并设置“DocumentLengthCorrection”选项设置为非零值。在本例中,设置“DocumentLengthCorrection”选项1。

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

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

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

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

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

输入参数

全部折叠

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

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

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

  • 一个tokenizedDocument数组

  • 一个bagOfWordsbagOfNgrams对象

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

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

为了计算术语频率和逆文档频率统计数据,该函数进行编码查询使用词汇袋模型。它使用的模型取决于调用它的语法。如果您的语法指定了输入参数文档,则使用bagOfWords(文档).如果你的语法指定了,则使用

名称-值参数

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

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

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

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

  • “textrank”-使用TextRank IDF加权[2].对于每个术语,将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输入数据中包含每个术语的文档数。

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

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

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

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

该选项对应于该值b在BM25算法。当b = 1, BM25算法等价于BM11。当b = 0, BM25算法等价于BM15。有关更多信息,请参见BM11BM15,或BM25

数据类型:

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

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

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

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

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

数据类型:

输出参数

全部折叠

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

  • 给定一个标记化文档数组,相似之处是一个N——- - - - - -N非对称矩阵,其中相似性(i, j)表示之间的相似性。文档(我)而且文档(j), N为输入文档的个数。

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

  • 给定一个单词袋或n-grams袋模型,相似之处是一个袋里。NumDocuments——- - - - - -袋里。NumDocuments非对称矩阵,其中相似性(i, j)类之间的相似度th和j文件编码

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

提示

  • 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表示文档长度缩放因子的值“DocumentLengthScaling”名称-值对参数)。这个因素控制了文档的长度如何影响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 ¯ + δ

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

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

版本历史

R2020a中引入