我爱辅助论坛

 找回密码
 【点我注册】

QQ登录

只需一步,快速开始

查看: 2299|回复: 12

[聊天交友] 【伪原创】数据挖掘与搜索引擎相关

[复制链接]

签到天数: 2515 天

[LV.Master]伴坛终老

发表于 2015-7-21 01:41:44 | 显示全部楼层 |阅读模式
这几天在上一个课,课程名称就是数据挖掘与搜索引擎。在这里我整理一部分内容出来,一方面有兴趣的可以了解一下,另一方面也作为一个小复习吧。
之所以说是伪原创,本身这个东西就是复述了老师讲的东西,所以直接说原创不合适,但是这些东西都是我加工过的,所以也算半个原创吧。

简单的说,这个课讲的就是搜索引擎的简单原理。举个栗子,像百度谷歌这样的搜索引擎,返回一条搜索结果只需要微不足道的时间,有人说他们有计算机集群,运算快,但是用户量这么大,怎么可能是现场搜索的结果。具体他们是如何进行数据采集的,如何对采集的数据进行处理的,这就是很有意思的东西。
我们用的教材是一本大部头的英文书,老师也是推荐我们干脆下pdf看算了,网址在http://www-nlp.stanford.edu/IR-book/,有兴趣的可以看看。

首先是介绍了常见的几个搜索引擎,比如谷歌百度必应搜搜雅虎等等,他们的搜索结果基本都包括几个要素,比如搜索时间,结果的链接,结果的摘要,结果的来源信息,相关的搜索等等,这些都是要算的。

接下来是一个搜索引擎的模型,在爬到数据后,要进行处理,才能返回结果。比较重要的几个步骤和模块如下:
crawler:挖掘器(爬虫),从队列中提取url,抓取并描述页面,提取页面的URL,将URL加入队列。
indexer:索引器,把文档分成一个个关键词(hits)索引,分成一个个的barrel(桶,简单的说就是一坨一坨的数据)存入anchors file(锚文件,可以理解为目标文件之类的,英文的术语,不好理解也没办法).
URLresolver:URL解析器,读取anchors file并设置docID,建立docID的数据库,这个库是用来计算PR的。
sorter:分类器,读取按照docID分类的barrel,再次按照inverted index(反向索引,word到doc的对应,本来是doc到word,这里反过来了所以叫
inverted)的wordID分类,然后返回inverted index和PR。

具体说起来一堆,我这已经是精简了介绍了,再简单就只能说先抓数据,然后把文档拆分成关键词,然后用关键词来处理数据,最后返回结果。具体的后面会讲到。
接下来是一些处理过程中的意外情况,比如在crawling的过程中,经常会碰到垃圾页面(没错,就是你发的那个灌水帖,说你呢),在indexing的过程中碰到的关键词重复等问题,在query过程中碰到通配符或者拼写错误怎么办。返回的结果可能有几百万条,需要对这些数据进行rank才能输出,总不能一起出来。一些页面可能只是一堆关键词的重复(比如一整页都是“基佬”二字),如果我们搜索这个关键词,从文字上看这个页面是最符合要求的,因为只有这个关键词,然而这个跟我要的页面有个毛线关系啊。所以要对不同的网页评级,对于keyword重复的垃圾页面进行降级。

另外还有一些过程是不同的,比如当时我特地记录了一句classification has a label, but clustering just divides the similar doc together.简单的说就是
classification(分类)要有性质描述,比如科技类放到一起,游戏类放到一起,而clustering(聚集)只是把相似的数据集中到一起,至于具体这些数据是干啥的都不用管。

接下来是讲搜索引擎的模型,最基础的自然是Boolean模型,简单的说就是,我查询一个词,如果文档有就返回true,没有就是false,简单粗暴。像谷歌都是要对boolean的结果进行处理的,当然因为需要,一些地方还是这种简单模型比较方便,比如查询法律条文,这个可是有专业名词的,不会出错,直接这样查更加准确。

然后是举例说明这种模型,假定有两个文档,内容分别是asdf
和dasj,我们可以列个表

asdf dasj
a 1 1
s 1 1
d 1 1
f 1 0
j 0 1

1表示有,0表示没有,我们要看那个文档有某个内容,只要看相应的值是多少。比如我们要查j在哪个文档有,发现只有第二个文档那边是1,所以返回第二个文档。搜索a的话,两个都是1,都返回。
但是根据一个数学模型(具体不说了),东西多了之后其实上面为0的地方会很多,浪费空间,甚至只有几万分之一的利用率。于是采取inverted index的形式存储,简单的说就是建立关键字的词典,对文档进行索引,比如上面那个就是
a--12,s--12,d--12,f--1,j--2。
实际的查询效果还是一样的,但是省空间啊。

下一步是对这个index进行排序,因为东西多了也不好查,所以按照abcd的字母表顺序排序,这样好找,于是变成了

a--12,d--12,f--1,j--2,s--12。
这样我们找f就不用乱找了,反正有顺序了。

最后就是具体的检索了,比如我要搜索带有关键词a和d的,先对a的index进行搜索,一看有12两个文档,然后搜d,12也都有,就是两个文档都符合条件。再搜a和f,a的有12,但是f的只有1,所以2要舍去,只能返回文档1。
这就是一个最简单的模型了。

还有就是这个过程的一些问题。首先是语言,有的页面有中文也有英文,其他文字也有,混杂起来就不好处理了。因为英文只有26字母,拿这个简单的来分析,首先一些词的变化不同,比如dog和dogs只能算一个关键词,否则就重复了,这个首先要还原。像Los Angeles看上去是两个词其实算一个,这个问题在中文中更明显,一句话都能有好几种解释,断句更是大问题。还有一些数字,甚至顺序也很重要,比如7.21表示7月21日,但是你不能当成21.7,而且也没有21月。

一个很重要的点是stop word,我不造该怎么翻译合适,直译没啥意思,我就不翻译了。一些类似于he,a,at等单词其实并没有什么卵用,但是也是很占地方的,甚至比较啰嗦的句子一般都被这些无聊的词占据了,这就是所谓的
stop word,碰到这些词直接跳过就行,不用统计。中文中也有类似的,比如“是”“吗”“啊”一类的,所以大家在搜索的时候只要列出关键词就行了,比如“蛤蟆能不能食用呢?”,你直接搜“蛤蟆”“食用”就行了。但是问题就来了,在著名的蛤蟆雷特里,有句“to be or not to be”,这个句子基本都是stop word,如果一路忽略,那就直接没了,所以还是要特别处理的。

其他没啥好写的了,困死了,早上还要起来上课,各位晚安。。。。。。
温馨提示:为了保护系统安全,使用辅助前,请务必使用影子系统。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

签到天数: 799 天

[LV.10]以坛为家III

发表于 2015-7-21 15:14:18 | 显示全部楼层
菊花胸,你也知道我们的知识水平,我们看不懂

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 2515 天

[LV.Master]伴坛终老

 楼主| 发表于 2015-7-21 16:24:48 | 显示全部楼层
ゐ晓风残月 发表于 2015-7-21 15:14
菊花胸,你也知道我们的知识水平,我们看不懂

那就当我的笔记好了。。。。。。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 56 天

[LV.5]常住居民I

发表于 2015-7-22 18:14:56 | 显示全部楼层
那个stop word看起来像是那个叫啥虚词来着........不过这些好像都是用关键词来找的......
等等,我居然在看不懂的情况下看了两遍.......突然感觉我好无聊........

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 2515 天

[LV.Master]伴坛终老

 楼主| 发表于 2015-7-22 18:43:23 | 显示全部楼层
考试不作弊★纯 发表于 2015-7-22 18:14
那个stop word看起来像是那个叫啥虚词来着........不过这些好像都是用关键词来找的......
等等,我居然在 ...

简单的说,通常情况下,就算你的搜索中有这些stop word,他也会自动跳过,比如搜“解决的办法”和“解决 办法”的结果应该是一样的。但是因为一些情况下这些stop word也是不得不使用的,实际的搜索引擎是做过优化的,所以像百度之类的应该会根据情况作出一定的反馈。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 56 天

[LV.5]常住居民I

发表于 2015-7-22 19:07:51 | 显示全部楼层
ubuntu 发表于 2015-7-22 18:43
简单的说,通常情况下,就算你的搜索中有这些stop word,他也会自动跳过,比如搜“解决的办法”和“解决  ...

反正我也看不懂不用解释得这么清楚的啦.........

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 2515 天

[LV.Master]伴坛终老

 楼主| 发表于 2015-7-22 19:08:30 | 显示全部楼层
考试不作弊★纯 发表于 2015-7-22 19:07
反正我也看不懂不用解释得这么清楚的啦.........

了解一下也好,学点东西

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 56 天

[LV.5]常住居民I

发表于 2015-7-22 20:04:33 | 显示全部楼层
对了,菊花大大,这几个帖子
http://www.52fzba.com/thread-2210891-1-1.html
http://www.52fzba.com/thread-2213466-1-1.html
就算不同意都给个回复啊..........

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 2515 天

[LV.Master]伴坛终老

 楼主| 发表于 2015-7-22 20:35:01 | 显示全部楼层
考试不作弊★纯 发表于 2015-7-22 20:04
对了,菊花大大,这几个帖子
http://www.52fzba.com/thread-2210891-1-1.html
http://www.52fzba.com/thr ...

转正应该没问题,我qq跟admin说下,当然他啥时候上线我就不知道了。
第二个建议还是看情况,一般这种要看玩的人多不多,帖子多不多。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 56 天

[LV.5]常住居民I

发表于 2015-7-22 20:39:31 | 显示全部楼层
ubuntu 发表于 2015-7-22 20:35
转正应该没问题,我qq跟admin说下,当然他啥时候上线我就不知道了。
第二个建议还是看情况,一般这种要 ...

生死狙击是枪战游戏,而且是4399中最火的枪战游戏,绝对多人.....

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 【点我注册】

本版积分规则

QQ|小黑屋|我爱辅助 ( 辽ICP备19006053号-1 )

GMT+8, 2025-6-19 05:36 , Processed in 0.103172 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表