基于Python与spimi的新闻搜索引擎设计与实现_kaic

摘   要
在互联网还没有被普及的那个年代,人们查阅资料首先会想到去图书馆,而互联网的诞生,极大便利了人们查询信息的方式,搜索引擎打开了最有效的查询方法大门。 
利用Python语言以及相关技术,实现了以新闻为主题的搜索引擎,完成这个项目要用到Python爬虫的多个新闻网站的数据,从所述目标新闻数据中提取信息,筛选过滤无用信息,提取新闻主干内容,获取结构化新闻数据;采用基于内存式单遍扫描索引构建方法(SPIMI)建立倒排索引并构建检索;利用向量空间模型,计算出两条新闻间的余弦相似度;使用BM25公式对关键词和文档进行评分,并根据相关度、时间与热度的顺序,实现了对同类新闻自动聚类,从而达到推荐有关新闻的目的,最后的形式是以Flask Web框架反映网页版搜索引擎。

关键词:搜索引擎;提取新闻主干;倒排索引;新闻推荐
Design and Implementation of News Search Engine Based on Python
Abstract
In the era before the Internet was popularized, people would first think of going to the library to consult information. The birth of the Internet greatly facilitated the way people query information, and the search engine opened the door of the most effective query method.
A news topic search engine is realized by Python language and related technology. The completion of this project requires crawling multiple news website data, extracting information from target news data, filtering useless information, extracting news trunk content, and getting structured news data. The inverted index and retrieval were constructed using the in-memory single-pass scan index construction method (SPIMI). Vector space model is used to calculate the cosine similarity between pairwise news. BM25 formula is used to calculate the scores of keywords and documents, and it can be sorted according to relevance, time and popularity, realizing automatic clustering of similar news, so as to achieve relevant news recommendation. 

Key Words:Search engine;Extracting news trunk;Inverted index; News recommendation
 
目   录
1 绪   论
1.1 研究背景与意义
1.2 国内外研究现状
1.3 搜索引擎工作原理
1.4 主要工作内容及章节安排
2 搜索引擎相关技术介绍
2.1 Python爬虫技术
2.1.1 python
2.1.2 爬虫概述
2.2 结巴分词
2.3 SPIMI构建索引算法
2.3.1 倒排索引技术
2.3.2 SPIMI介绍
2.3.3 索引算法介绍
2.3.4 SPIMI的算法流程
2.4 计算两两新闻之间余弦相似度
2.5 BM25公式进行打分排序
2.5.1 检索概率模型BM25公式
2.5.2 BM25聚类算法
2.6 Flask
2.7 文本预处理
2.7.1 中文文本分词
2.7.2 去停用词
2.7.3 文本向量化
2.8 小结
3 搜索引擎具体实现
3.1 课题内容实现
3.2 新闻爬虫实现
3.2.1新闻数据来源
3.2.2爬虫基本架构
3.3 构建索引实现
3.4 推荐阅读实现
4 实现效果展示
4.1 系统主页展示
4.2 搜索结果展示
4.3 词条正文展示
4.4 推荐阅读展示
5 总结与展望
参考文献
致   谢
附   录
1 绪   论
1.1 研究背景与意义
在互联网普及之前,人们首先想到的就是藏书量巨大的图书馆。如今,很多人会选择一种更方便、快捷、全面、准确的方式——互联网。如果说互联网是一个知识宝库,那么搜索引擎就是打开知识宝库的一把钥匙。随着网页信息的迅速增加,搜索引擎相关技术从90年代开始逐渐发展,该技术的出现极大便利了网上用户高效率查询信息。使用各种不同的技术爬取网页搜集信息,将搜集到的信息预处理后,进行识别与分辨,后进行整合,提供功能完善的搜索引擎为用户服务。目前,搜索引擎已经成为网络用户关注的焦点,也成为计算机工业界和学术界研究开发的对象。
现在存在的搜索引擎巨头大大便利了用户获取数据。网上信息的分类目录组织是提高检索效率和检索精度的有效途径, 如在利用搜索引擎对网页数据进行检索时, 若能提供查询的类别信息, 必然会缩小与限制检索范围[1]。
对于普通用户来说,商业搜索引擎基本可以满足其应用需求;但是,对于特定的用户,如中小企业用户或科研机构人员,商业搜索引擎并没有针对性,这使得企业需要开发自己的搜索引擎来满足用户需求。同时,商业搜索引擎也存在不能按需分配的劣势,因此,其应用需求不可能在商业互联网搜索引擎中充分满足。
搜索引擎开源工具的出现很好地满足了这一需求。因为它们是完全开源的,开发者可以根据自己的需求自主开发适合特定领域的搜索引擎。本课题就是以互联网新闻为例,基于开源工具设计一个关于新闻数据的搜索引擎。
通过Python语言和相关技术实现一个新闻主题的搜索引擎,完成该项目需要爬虫多个新闻网站数据,对目标新闻数据进行信息的抽取、索引和检索,并且能够按照相关度、时间和热度进行排序,实现相似新闻的自动聚类,从而实现相关新闻推荐。
1.2 国内外研究现状
在国外,Salton提出了向量空间模型,并成功地将该模型运用到SMART系统中。Kleiberg等人提出了HITS算法,通过超链接引入了两种网页类型——权威网页和集中网页。同时,Brin和Page提出了PageRank算法,其基本思想是:一个页面被引用多次,那么这个页面很可能是最重要的,一个页面虽然没有被引用多次,但是被一个重要的页面引用,那么这个页面也很可能是最重要的,一个页面的重要性是均匀分布的,传递给它所引用的页面;D Freitag 提出 Machine lerning for information extraction in Information domains 技术,将机器学习的理论融入信息提取技术中;GuPta等提出 DOM-based content extraction of HTML documents 技术,利用DOM树对HTML网页分析,进而得到有效信息;MANASKASEMSAK等提出 Parallel PageRank Computation on a gigabit PC cluster 技术,是对PageRank并行计算提出的改进;Christos Makris等提出 Categoryranking for personalized search 算法,在排序算法中加入用户反馈信息与用户偏好信息;Eiron N等提 出 Link analysis: Ranking the web frontier 技术,通过对网页的链接结构进行分析,探讨对己有的链接分析算法的改进措施。
在国内,王春花等提出改进的非平均传递权值 PageRank 算法,把页面的出度和页面之间的相关度融入 PageRank 算法;段准川等提出基于主题特征和时间因子的改进 PageRank 算法,将网页权威性权值、网页之间的相关度和时间因子引入 PageRank 算法。
垂直搜索引擎的发展速度非常快,涉及的领域也非常多[13][14][15]。
Momondo是国外最具代表性且非常好用的航班搜索引擎之一,可以及时获取国内所有航班的信息内容;国内最初出现的百度是模仿谷歌而慢慢开发自己的垂直搜索引擎,但现如今我国的搜索引擎也有了自己的创新,通过书名,作者名精准查找小说的好书搜索;关于旅游信息提供用户查找的携程网,提供了机票,酒店等预订,还加入了各种旅游攻略,大大方便了人们出行旅游的需求。
1.3 搜索引擎工作原理
搜索引擎要对互联网上的主要信息网站进行信息检索,然后进行信息预处理,存储在索引数据库中。检索器会对用户输入的关键检索信息进行识别,并基于索引数据库快速响应,达到快速检索目标信息的目的。最后,根据相关性得分对信息进行排序并反馈给用户。
1.4 主要工作内容及章节安排
(1)收集大量的新闻数据。
(2)对采集到的新闻数据进行数据清洗,过滤掉无用信息,包括图片、视频、广告等无关元素,提取新闻的主要内容,得到结构化的新闻数据,存储在xml文件中。
(3)接下来使用内存式单遍扫描索引构建方法(SPIMI)构建倒排索引,供检索模块使用。
(4)之后根据向量空间模型计算两两新闻之间的余弦相似度,供推荐模块使用。
(5)最后利用概率检索模型中的BM25公式计算给定关键词下的文档相关度得分,将BM25得分与时间因子结合得到流行度得分,根据得分给出排名结果。
本文的章节安排如下[16]:
第一章绪论,主要从研究背景及意义,国内外研究现状,搜索引擎工作原理以及主要工作内容及章节安排来展开;
第二章搜索引擎相关技术介绍,主要从Python爬虫技术,结巴分词,SPIMI构建索引算法,计算两两新闻间的余弦相似度,通过BM25公式为文档进行打分排序,以Flask的Web框架实现网页版的新闻搜索引擎以及文本预处理来展开;
第三章搜索引擎具体实现,主要从课题内容实现,新闻爬虫实现,构建索引实现以及推荐阅读实现来展开;
第四章实现效果展示,主要从系统主页展示,搜索结果展示,词条正文展示以及推荐阅读展示来展开;
第五章总结与展望。 
2 搜索引擎相关技术介绍
2.1 Python爬虫技术
2.1.1 python
在本次项目开发过程中,选择使用面向对象的解释型语言python,能够帮助在更加广泛的平台当中进行项目执行处理,选择使用该语言主要是因为python具有以下几种特点:
(1)编程执行速度快,可以直接通过程序结果进行输出。在编程过程中python对于缩进控制的要求是比较严格的,通过python所完成的编码内容在后续编写调试过程中也不会带来其它难度,对于编程工作推进来说具有较大的帮助。
(2)python的第三方标准库山涵盖了大量的内容,可以帮助开发者更好地满足他们的需求。本次项目开发过程也需要借助到一些python第三方库当中的语言来使用。
(3)通过python语言来实现多线程处理,对于提高操作效率来说具有一定的帮助,并且执行过程是通过单独的模块来处理,能够很好的完成封装控制需求。
2.1.2 爬虫概述
从互联网中,利用自动抓取技术捕获对我们具有价值的信息。
它是一种应用程序,可以自动下载在网上自动爬取信息的网络机器人,爬虫技术在搜索引擎的运行上起到至关重要的因素,因为爬取的数据可直接反应引擎搜索的结果的优劣程度。
Python爬虫框架包括五大部分,即调度器、URL管理器、网页下载器、网页解析器、应用程序。

 

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_39563171/article/details/129979694