小型搜索引擎设计及实现v1.1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1 构建数据采集模型
十大站点
爬取网页数据量: 3 万+
1.1 构建数据采集模型
九大类别
ID 1 类别 politics 含义 政治新闻
2
3 4 5 6
world
finance tw military society
国际新闻
财经新闻 台湾新闻 军事新闻 社会新闻
7
8 9
edu
sports culture
以live这行为例我们说明一下该结构: live在文章1中出现了2次,文章2中出现了一次,它的出现位置为“2,5,2”这表示: 文章1中出现了2次,那么“2,5”就表示live在文章1的关键词中出现的两个位置, 文章2中出现了1次,剩下的“2”就表示live是文章2的关键词中第2个关键字。 以上就是lucene索引结构中最核心的部分。 我们注意到关键字是按字符顺序排列的(lucene没有使用B树结构), 因此lucene可以用二元搜索算法(或叫二分查找/折半查找)快速定位关键词。
条中文新闻标题。
分类器 scikit-learn(朴素 贝叶斯) scikit-learn(svm) TextGrocery 准确率(%) 76.8% 76.9% 79.6% 计算时间(s) 134 121 49
2.2 网页去重过滤
2.3 Elasticsearch全文检索引擎
Elasticsearch是基于Lucene构建,是一个分布式可扩展的实时搜索和分析引擎,提供了 REST API 操作接口。 另外,实现分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索;实
经过上面处理后: 文章1的所有关键词为:[tom] [live] [guangzhou] [i] [live] [guangzhou] 文章2的所有关键词为:[he] [live] [shanghai]
2.3 Elasticsearch全文检索引擎
(2) 建立倒排索引 有了关键词后,就可以建立倒排索引了。 上面的对应关系是:“文章号”对“文章中所有关键词”。 倒排索引把这个关系倒过来,变成:“关键词”对“拥有该关键词的所有文章号”。 文章1,2经过倒排后变成:
• Lucene倒排索引,通过由属性值来确定记录的位置。是实现“单词-文档矩阵”的一 种具体存储形式,可以根据单词快速获取包含这个单词的文档列表。主要由“单词词 典” 和“倒排文件”组成。
lucene框架
2.3 Elasticsearch全文检索引擎
(0)设有两篇文章1和2 文章1的内容为:Tom lives in Guangzhou,I live in Guangzhou too 文章2的内容为:He once lived in Shanghai. (1)获取关键字 全文分析:由于lucene是基于关键词索引和查询的,首先取得这两篇文章的关键词,通常需要 如下处理措施: a. 先要找出字符串中的所有单词,即分词。 英文单词由于用空格分隔,比较好处理。中文单词间是连在一起的需要特殊的分词处理。 b.文章中的”in”, “once” “too”等词没有什么实际意义,中文中的“的”“是”等字通常也无具 体含义, 这些不代表概念的词可以过滤掉 c.用户通常希望查“He”时能把含“he”,“HE”的文章也找出来,所以所有单词需要统一大小 写。 d.用户通常希望查“live”时能把含“lives”,“lived”的文章也找出来,所以需要把“lives”, “lived”还原成“live” e.文章中的标点符号通常不表示某种概念,也可以过滤掉
关键词 guangzhou he I Live Shanghai tom 文章号 1 2 1 1,2 2 1
通常仅知道关键词在哪些文章中出现还不够,还需要知道关键词在文章中出现次数和出现的位 置,通常有两种位置: a)字符位置,即记录该词是文章中第几个字符(优点是关键词亮显时定位快); b)关键词位置,即记录该词是文章中第几个关键词(优点是节约索引空间、词组(phase) 查询快),lucene中记录的就是这种位置。
增量式采集:在一定量规模的网络页面集合的基础上,采用更新数据的方式选取已有集 合中的过时网页进行抓取,保证所抓取到的数据与真实网络数据足够接近。 • 累积式爬取一般用于数据集合的整体建立或大规模更新,增量式采集则主要针对数据集 合的日常维护与及时更新。
1.1 构建数据采集模型
增量式数据采集 使用MongoDB数据库记录每个爬虫爬取到的新闻的最大时间 根据每个新闻网站的更新频率设置爬虫爬取时间间隔,爬取更新的新闻 后台持续运行爬虫程序 使用布隆过滤器(Bloom Filter)去掉重复的URL( Bloom Filter 保存上一次爬取的数 据,根据增量规则对保存的状态数据进行约束,从时间和空间上提升性能)
2.3 Elasticsearch全文检索引擎
加上“出现频率”和“出现位置”信息后,我们的索引结构变为:
关键词 guangzhou He I Live Shanghai Tom 文章号 1 2 1 1,2 2 1 出现频率 [2] [1] [1] [2] [1] [1] 出现位置 3,6 1 4 2,5,2 3 1
Web网页
URL选取系统 选取出URL
爬取系统
DNS解析服务系统 抓取调度系统 网页分析系统 URL提取系统 URL分析系统
URL库
抓取回网页 解析
数据存储
合并更新URL
新提取出的 URL
网页存储系统
1.1 构建数据采集模型
1. Scrapy Engine 从Scheduler中取出一
数据预处理 提取关键词(建立 DocView 模型) 消除重复或冗余网页(根据向量模型计算余弦相似度) 链接分析 (应用TF-IDF统计方法,提取文本特征,进行文本分类) 计算网页重要程度 (“被引用得最多的就是最重要的”,PageRank算法)
1.3 数据预处理并存储
02 系统模型设计及构建
2.1 网页文本分类
TextGrocery分类工具 基于LibLinear和结巴分词的短文本分类工具,特点是高效易用,同时支持中文和英文语 料。
API:Grocery,GroceryPredictResult,GroceryTestResult
性能,训练集:来自32个类别的4.8万条中文新闻标题;测试集:来自32个类别的41.6万
现实时分析;可扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
中文分词器一般使用第三方的ik分词器、mmsegf分词器和paoding分词器。本系统选择 ik分词器。 Elasticsearch使用lucene倒排索引,相比关系型数据库的B-Tree索引快。并支持模糊检 索。
2.3 Elasticsearch全文检索引擎
据这种方法来评价。于是PageRank的核心思想就诞生了。
2.4 网页排序
PageRank排序,如果一个网页被很多其他网页链接到的话说明这个网页比较重要,也就 是PageRank值会相对较高;如果一个PageRank值很高的网页链接到一个其他的网页, 那么被链接到的网页的PageRank值会相应地因此而提高。
Step 5 SVM分类器 Step 4 TF-IDF策略 特定空间上
间隔最大的 线性分类器 二类分模型,
结构化表示
Step 6 TextGrocery 分类工具
基于 LibLinear和 结巴分词
1
构建TFIDF词向量 空间
3
生成权重矩 阵
5 6
2 4
2.1 网页文本分类
2.1 网页文本分类
SVM 支持向量机 是一个二分类的分类模型,定义为特征空间上的间隔最大的线性分类器。给定一个包含 正例和反例的样本集合,根据正例和反例寻找一个超平面对样本进行分割。
系统模型设计及构建
网页文本分类 TF-IDF TextGrocery分类工具 网页去重过滤
Elasticsearch全文检索
PageRank网页排序 模糊检索
话题发现
2.1 网页文本分类
Step 1 预处理
得到训练集 语料库
得到测试集 语料库
Step 3 Step 2 中文分词
基于概率图 模型的条件 随机场 (CRF) Jieba分词 法 构建词向量 空间模型
小型搜索引擎设计及实现
信息系统建模课程项目
彭祯 卫罡 薛鲁国 柳俊全 何浩
目 录
数据采集与预处理
01
CONTENTS
02 03
系统模型设计 及构建
系统实现与可视化
课程项目要求
一个至少能支持10个以上网站的爬虫程序,且支持增量式数据采集;并至少采集10000个实际 网页; 数据采集与 预处理 针对采集回来的网页内容,能够实现网页文本的分类; 可进行重复或冗余网页的去重过滤; 对经去冗以后的内容建立倒排索引; 系统模型设计 及构建
个URL用于接下来的抓取;
2. Scrapy Engine 把 URL 封 装 成 一 个 Request传给Downloader; 3. Downloader 下 载 资 源 , 并 封 装 成 Response; 4. Spiders 解析Response; 5. 解析出Item,交给Pipeline 进行下一 步处理; 6. 解析出URL,把URL交给Scheduler等 待抓取。
教育新闻
体育新闻 文化新闻
1.2 设计数据存储格式
爬取字段名称 Title URL 爬取字段含义 新闻标题 新闻链接
Website
Type Content Releasing Crawling Image Links
新闻站点
新闻类别 新闻文本 发布时间 抓取时间 新闻图片 网页包含的其它URL
1.3 数据预处理并存储
2.4 网页排序
根据每个网页的超链接信息计算网页的权值,一个页面的得分情况由 所有链向它的页面的重要性经过加权计算得到的。 PageRank计算 初始值相同
3.3 可视化之 PageRank
2.4 网页排序
利用PageRank链接增强思想,计算新闻网 页权值。 所有节点初始rank值为1,迭代10次后网 页结果
Scrapy基本框架
1.1 构建数据采集模型
数据采集两种方式 累积式采集:从某一个时间点开始,通过遍历的方式抓取系统所能允许存储和处理的所 有网页。经过足够时间,该策略可以保证抓取到相当规模的网页集合。由于web数据的
动态性,累积式抓取到的网页集合事实上并无法与真实环境中的网络数据保持一致。
2.5 话题发现
网页文本
结巴分词
去停用词
词性过滤
话题
LDA主题模型
计算词向量(TFIDF)
2.5 话题发现
LDA简介
单篇文档的概率分布:
p(W | , ) p( | )( p( zn | ) p( wn | zn , ))d
n 1 zn N
采用PageRank算法、HITS算法、SALSA算法或其他你认为合适的算法,实现搜索结果的排序; 支持自然语言的模糊检索; 可实现搜索结果的可视化呈现。 系统实现与 可以在线记录每次检索的日志,并可对日志数据进行统计分析和关联挖掘。 可视化
项目具体分工
组长:卫罡,系统前端
组员:薛鲁国,系统后台:数据采集及预处理,话题发现
彭祯,系统后台:elastic search,
柳俊全,系统前端,系统文档, 何浩,系统后台:PageRank,
01 数据采集与预处理
主 要 工 作
1
百度文库2 3
构建数据采集模型
设计数据存储格式
预处理数据并存储
1.1 构建数据采集模型
Spider抓取系统
内部 DNS解析服务 DNS缓存
包含8大子系统
URL存储系统 URL选取系统
2.4 网页排序
最早的搜索引擎采用分类目录的方法,通过人工进行网页分类并整理出 高质量的网站。 随着网页越来越多,进入了文本检索时代,通过计算用户查询关键词与网页内容的相关 程度来返回搜索结果,但效果不好。 谷歌创始人,当时还是美国斯坦福大学 (Stanford University) 研究生的佩奇 (Larry Page) 和布林 (Sergey Brin) 开始了对网页排序问题的研究。他们借鉴了学术界评判学 术论文重要性的通用方法, 那就是看论文的引用次数。由此想到网页的重要性也可以根