主要内容

bm25Similarity

文档与BM25算法的相似性

描述

使用bm25Similarity计算文档相似性。

缺省情况下,该函数计算BM25的相似度。要计算BM11, BM15,或BM25+的相似性,使用“DocumentLengthScaling”“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”选项为非零值。

例子

全部折叠

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

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

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

相似性= bm25Similarity(文件);

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

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

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

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

创建一个输入文档数组。

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

创建一个查询文档数组。

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

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

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

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

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

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

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

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

文件名=“sonnets.csv”;台= readtable(文件名,“TextType”“字符串”);textData = tbl.Sonnet;文件= tokenizedDocument (textData);袋= bagOfWords(文档)
bag = bagOfWords with properties: Counts: [154x3527 double]词汇:[1x3527 string] NumWords: 3527 NumDocuments: 154

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

相似性= bm25Similarity(袋);

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

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

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

BM25+算法解决了BM25算法的一个限制:根据文档长度的术语频率规范化的分量不是适当的下界。由于这种限制,与查询词不匹配的长文档通常会被BM25不公平地评分,因为它们与不包含查询词的短文档具有类似的相关性。

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

创建两个令牌化文档数组。

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

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

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

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

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

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

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

输入参数

全部折叠

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

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

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

  • 一个tokenizedDocument数组

  • 一个bagOfWordsbagOfNgrams对象

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

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

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

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子: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”一个非负标量。

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

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

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

该选项对应于该值bBM25算法中。当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查询文档,和N1N2中文档的数量文档查询,分别。

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

  • 给定一个单词包或n-gram包模型和一组查询文档,相似之处是一个袋里。NumDocuments——- - - - - -N2矩阵,相似性(i, j)表示之间的相似性编码的文件jth文档查询,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] Barrios, Federico, Federico López, Luis Argerich, Rosa Wachenchauzer。自动文摘中TextRank相似函数的变化。arXiv预印本arXiv: 1602.03606(2016)。

介绍了R2020a