通信算法python_BM25算法的python实现

本文介绍了如何使用Python实现BM25算法,该算法用于文本相似度计算。通过示例展示了如何处理输入文本,计算IDF值,并计算文档之间的相似度得分。
摘要由CSDN通过智能技术生成

原作者:https://blog.csdn.net/u011734144/article/details/79559295

转的

import math

import jieba

from utils import utils

# 测试文本

text = '''

自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。

它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。

自然语言处理是一门融语言学、计算机科学、数学于一体的科学。

因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,

所以它与语言学的研究有着密切的联系,但又有重要的区别。

自然语言处理并不是一般地研究自然语言,

而在于研制能有效地实现自然语言通信的计算机系统,

特别是其中的软件系统。因而它是计算机科学的一部分。

'''

class BM25(object):

def __init__(self, docs):

self.D = len(docs)

self.avgdl = sum([len(doc)+0.0 for doc in docs]) / self.D

self.docs = docs

self.f = [] # 列表的每一个元素是一个dict,dict存储着一个文档中每个词的出现次数

self.df = {} # 存储每个词及出现了该词的文档数量

self.idf = {} # 存储每个词的idf值

self.k1 = 1.5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值