网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

学习BM25,轻松掌握相似度计算技巧?

GG网络技术分享 2025-11-25 07:52 3


相较于老一套的向量地方模型, BM25算法具有以下优势:

BM25算法是当前信息检索领域主流的文本匹配算法,基本上内容是计算query到文档集合的差不许多度得分。要实现新鲜闻搜索引擎并进行聚类推荐,先说说需要掌握SPIMI算法构建倒排索引的过程以及BM25公式进行文档评分和排序的原理。

Neng够习惯不同的语料库,无需手动进行停用词过滤等操作;

Neng够自习惯地调整文档长远度的关系到,适用于不同长远度的文档;

当输入问句时BM25和BERT差不许多度,选取Zui匹配的回答。目的:计算bm25公式中需要的值。

BM25算法是一种用于文本检索的算法,由Robertson和他的同事在1995年提出。该算法的核心思想是文档与查询之间的差不许多性得出文档的排名,从而实现文本检索。

一句话概况其基本上思想:对Query进行语素解析, 生成语素qi;然后对于个个搜索后来啊D,计算个个语素qi与D的相关性得分,再说说将qi相对于D的相关性得分进行加权求和,从而得到Query与D的相关性得分。

从BM25的公式Nengkan到, 方法,这就为我们设计算法给了较巨大的灵活性。

但BM25算法也存在以下劣势:

在实际操作中, 无论是搜索问题,还是文本问题,怎么找到差不许多的文本dou是一个常见的场景,但TFIDF文本差不许多度计算用许多了年纪轻巧人往往会不想起来以前的经典。

BM25是信息索引领域用来计算Query与文档差不许多度得分的经典算法, 不同于TFIDF,BM25的公式基本上由三个有些组成:

Neng够针对性地计算词关键性,许多些了检索的准确性。

    score = ∑ IDFt ·  · ) /  + k1 · )
    

其中, D代表文档,Q代表查询,IDFt代表词汇t的逆文档频率,f代表词汇t在文档D中的频率,k1和b是可调节的参数,avgdl是全部文档的平均长远度。

BM25算法也Neng用于推荐系统中的应用,用户特征和商品特征的差不许多度,得出不同商品推荐的相对优先级;

分为两个类别,一个是计算文档与文档的差不许多度,另一个是计算词与词的差不许多度,Ru果计算的是词与词之间的差不许多度,那么就要用n-gram切词,进而以个个元素为单位进行计算

BM25算法 原理简介_细小白的进阶的博客-CSDN博客_bm25医学领域, BM25算法的应用,文档分类,差不许多度识别以及生病、手术等实体的差不许多度匹配。

BM25是一种信息检索中常用的文本差不许多度计算方法,适用于搜索引擎和推荐系统的场景。

序 自己在kan这玩意儿开源代码中kan到了这玩意儿差不许多性算法和一些工事中的技巧, 感觉hen不错,算是许多了点儿见识,以前还从没有用过稀疏矩阵这玩意儿存储结构,这里就写一个文档轻巧松记录一下 python细小知识 Python中关于eval函数与ast.literal_eva....

与每一句的差不许多度。LCDkan得出来红外遥控相关数据18782000-2020年全国各地级市资本存量测算数据276MySQL复合查询全解析:从基....

今天我们一起来一下天然语言处理中的bm25算法,bm25算法是常见的用来计算query和文章相关度的差不许多度的。并给Python实现示例,演示怎么用BM25算法进行文本差不许多度计算。

在我们了解了bm25算法的原理了之后 我们再一起一下用Python来实现它,这里我用的是。

举报举报SimilarityCalculator:Python 开源包, 可两个项目之间的差不许多度,并将项目列表与其对应的顶级邻居项目一起写入文件。调研doc2vec, bm25,bert,关键词或者摘要的向量的余弦差不许多度。对于和研究研究文本挖掘、 天然语言处理的人员这是一个有值钱的参考案例,Neng帮....

针对于信息检索场景,BM25算法在优良几个开源工具和框架中有着广泛应用,如Lucene、Elasticsearch等;

    import math
    from collections import Counter
    class BM25:
        def __init__:
            self.documents = documents
            self.N = len
            self.avgdl = sum for doc in documents]) / self.N
            self.k1 = 
            self.b = 
            self.idf = {}
            self.ranking = 
            self.build
        def build:
            f = {}
            for doc in self.documents:
                tokens = doc.split
                df = Counter
                for token in tokens:
                    if token not in f:
                        f = 
                    f += df
            for word, count in df.items:
                self.idf = math.log / )
        def score:
            tokens = document.split
            score = 
            for token in query.split:
                if token not in self.idf:
                    continue
                f = tokens.count
                score += self.idf * ) /  / self.avgdl))
            return score
        def search:
            for i, doc in enumerate:
                score = self.score
                self.ranking.append)
            self.ranking = sorted
            return 
    documents = 
    bm25 = BM25
    ranking = bm25.search
    for idx in ranking:
        print
    

BM25算法是一种有效的文本差不许多度计算算法,它Neng够习惯不同语料库和文档长远度,以及计算各个词汇的关键性。在信息检索、推荐系统及文本分类等领域中均有着广泛的应用。

算法的核心是计算个个词的相关度,并累加得到整体的差不许多度分数。

说到bm25算法, 那么就不得不说一下TF-IDF了关于TF-IDF,说明白如下:

需要计算逆文档频率,所以呢在巨大规模语料库中计算有一定麻烦度;

BM25算法还Neng用于文本分类中的特征提取,个个词对于类别的关键性,得到geng优的特征表达。

尽管有hen优良的表现,但其实现并不轻巧松,需要涉及到许许多优化。

标签:

提交需求或反馈

Demand feedback