## 算法原理与程序使用
BM25算法原理参见我的博文:[【NLP】非监督文本匹配算法——BM25](https://blog.csdn.net/meiqi0538/article/details/124218635)
测试程序:
```python
bm25 = BM25()
result = bm25.cal_similarity("自然语言处理并不是一般地研究自然语言")
for line, score in result:
print(line, score)
```
测试结果如下:
```python
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。 1.012567843290477
它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。 2.0911221271793545
自然语言处理是一门融语言学、计算机科学、数学于一体的科学。 1.012567843290477
因此,这一领域的研究将涉及自然语言,即人们日常使用的语言, 2.2068046420905443
所以它与语言学的研究有着密切的联系,但又有重要的区别。 1.4616618736274032
自然语言处理并不是一般地研究自然语言, 3.2072055608059036
而在于研制能有效地实现自然语言通信的计算机系统, 1.201522188129132
特别是其中的软件系统。因而它是计算机科学的一部分。 0
在信息搜索中,我们做的第一步就是检索。 0
再延展一下,搜索这项功能在我们生活中也是太多太多。 0
大众一点就是搜索引擎,商品搜索等,在问题系统中可以匹配相似的问题,然后返回对应答案等。 0
文本匹配包括监督学习方法以及非监督学习方法。 0
或者分为传统方法和深度学习方法。 0
BM25 在 20 世纪 70 年代到 80 年代被提出,到目前为止已经过去二三十年了,但是这个算法依然在很多信息检索的任务中表现优异,是很多工程师首选的算法之一。 0
有时候全称是 Okapi BM25,这里的“BM”是“最佳匹配”(Best Match)的简称。 0
那么,当通过使用不同的语素分析方法,语素权重判定方法以及语素与文档的相关性判定方法,可以衍生很多不同的搜索相关性计算方法,灵活性也比较大。 0
```
其中第一列为待检索的内容,第二列为query与待检索内容之间的打分。
## 程序设计简要思路
待检索的数据存放在data/data.txt中,如果BM25这个类在初始化时没有传入一个文档路径,就使用这个默认路径。
程序在第一次加载时会对待检索的数据进行统计计算,然后将相关参数保存到data/param.pkl中。当更换文档时,需要收到删除data/param.pkl。
程序中使用jieba进行分析,构建语素。使用data/stop_words.txt作为程序的停用词。
BM25中的`cal_similarity()`方法提供对外的计算文本相似度(文本匹配)接口,其中包含一个参数,即待搜索的query,其返回的结果是list,list中包含tuple(doc, score)形式的内容,代表各文档与query之间的打分值。
BM25核心算法程序如下:
```python
def _cal_similarity(self, words, index):
score = 0
for word in words:
if word not in self.param.f[index]:
continue
molecular = self.param.idf[word] * self.param.f[index][word] * (self.param.k1 + 1)
denominator = self.param.f[index][word] + self.param.k1 * (1 - self.param.b +
self.param.b * self.param.line_length_list[index] /
self.param.avg_length)
score += molecular / denominator
return score
```
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
资源推荐
资源详情
资源评论
收起资源包目录
python爬虫练习.zip (44个子文件)
SJT-code
poet_241url_01.xlsx 15KB
poem_241_01.xlsx 60KB
poet_url_150_02.xlsx 14KB
poem_1w.xlsx 5.11MB
test1.py 4KB
bm25.py 6KB
poet_url1211_03.xlsx 13KB
poet_url_150.xlsx 17KB
poem_03.xlsx 2.09MB
poet_241url_02.xlsx 19KB
time_01.py 153B
data
data.txt 2KB
test1.txt 423B
param.pkl 5KB
stop_words.txt 9KB
poet_241url.xlsx 28KB
作品列表url获取1209.py 3KB
poem_04.xlsx 497KB
readme.md 4KB
诗人作品url获取.py 5KB
zuopin11.xlsx 13KB
links_2_59.xlsx 11KB
诗人作品获取2.py 9KB
links_3.xlsx 14KB
.idea
BM25-master.iml 284B
misc.xml 336B
inspectionProfiles
profiles_settings.xml 174B
modules.xml 274B
.gitignore 176B
encodings.xml 192B
poet_url1211.xlsx 10KB
links_2.xlsx 11KB
poem_01.xlsx 2.02MB
poet_modify.xlsx 119KB
poem_5.xlsx 2.17MB
poet_url1211_02.xlsx 15KB
poem_16.xlsx 7KB
poem_02.xlsx 1.46MB
links.xlsx 16KB
诗人主页爬取1205.py 4KB
result
poem_150_02.xlsx 1.2MB
poet_output.xlsx 59KB
poem_150_01.xlsx 1.27MB
诗人作品获取.py 9KB
共 44 条
- 1
资源评论
JJJ69
- 粉丝: 5965
- 资源: 5593
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功