本学期参与了信息组织与检索课程的学习,并通过一次次练习掌握了信息检索的各项技能。
目录
1.信息检索读物读后感......p1-2
2.安装scrapy抓取热门标签书本......p2-5
3.利用scrapy抓取公管老师信息......p5-10
4.查询lofter网站的robot权限......p10-11
5.安装jieba中文分词包并调试......p11-13
6.自定义字典的学习以及词频统计......p13-15
7.了解solr以及检索的构建查询......p15-27
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:admin="http://webns.net/mvcb/">
<foaf:PersonalProfileDocument rdf:about="">
<foaf:maker rdf:resource="#me"/>
<foaf:primaryTopic rdf:resource="#me"/>
<admin:generatorAgent rdf:resource="http://www.ldodds.com/foaf/foaf-a-matic"/>
<admin:errorReportsTo rdf:resource="mailto:leigh@ldodds.com"/>
</foaf:PersonalProfileDocument>
<foaf:Person rdf:ID="me">
<foaf:name>cong su</foaf:name>
<foaf:title>Mr</foaf:title>
<foaf:givenname>cong</foaf:givenname>
<foaf:family_name>su</foaf:family_name>
<foaf:nick>james</foaf:nick>
<foaf:mbox_sha1sum>5e26490ccb0a4c88db6756ac6cc88680b97e0b24</
foaf:mbox_sha1sum>
<foaf:homepage rdf:resource="https://user.qzone.qq.com/561350767/main"/>
<foaf:phone rdf:resource="tel:15680927082"/>
<foaf:schoolHomepage rdf:resource="http://www.scu.edu.cn/"/>
<foaf:knows>
<foaf:Person>
<foaf:name>Guanyan</foaf:name>
<foaf:mbox_sha1sum>2c8471e452467d260c9238eb02b93b3aea936155</
foaf:mbox_sha1sum></foaf:Person></foaf:knows>
<foaf:knows>
<foaf:Person>
<foaf:name>Duanyun</foaf:name>
<foaf:mbox_sha1sum>bd708090bd0a2cc38094c49a9d631aaba4e06ce9</
foaf:mbox_sha1sum></foaf:Person></foaf:knows></foaf:Person>
</rdf:RDF>
当今是大数据时代,随着信息技术,通信技术的快速发展,每天都在产生大量而无序的信息,而这些大量的数据在为人利用之前必须经过一定的处理和排序,这就需要信息组织技术。
在使用实体存储信息的年代,信息的组织与特定的检索是特别有局限性的。在《新数字秩序的革命》一书中,举到了贝德曼图书资料馆的例子。在比尔盖茨花费大量精力财力人力将贝德曼图书资料馆搬移到洞穴之后,尽管将这些胶片进行两层秩序排列和摆放,其仍然存在巨大的局限性:无法记录藏品的所有信息,在检索过程中,也要花费大量时间才能找到想要的图片。这是无法避免的,是元数据不完整,是实体存储信息的漏洞。可以理解为大海捞针。而在信息时代来临,人们普遍开始用数字化存储信息后,第三层秩序出现了,也拯救了索引。Corbis的数字图片让人们能快捷得寻找到自己需要寻找的图片,而且其维护成本大大减少,电脑代替人更高效地进行查找。当然,数字化革命的影响远远不限于此,实体世界中所有信息都能通过数字化更加高效地为人查找和利用。
信息可以有序得排列,也可以无序得排列,这取决于你的目的用途。在古老的观念中,于第一秩序和第二秩序都必然需要保证信息的有序性,因为其时的人工查找需要通过顺序来方便查找,典型的例子就是杜威十进制法则来管理图书馆书目。而在信息化技术发展成熟后,第三层秩序并不一定需要进行信息的有序排列,比如说在亚马逊网的图书销售中,会打乱顺序,以此提高用户阅览的范围,就像一场图书嘉年华,让浏览的人发现更多自己未注意的惊喜,从而提高他的销量。
由此我认为,信息组织的任务,核心还是服务于特定环境下,满足应有的需求,在为检索信息而设的系统中,组织信息的任务即为剔除冗余信息,将某方面的信息整合在一个数据库中,仅仅限定其范围来方便查找,将其实体化就是前面举到的贝德曼图书资料馆将所有资料存放于一处,而在数字化存储中,就避免了"有序"这个条件,可有可无。当然在一些其他必要的环境下,信息也需要有序化,比如涉及标签和关键字的搜索环境。涉及到关键字和标签搜索,这就体现出来信息组织与检索目前存在的问题,关键字和标签需要不断添加完善,而且没有止境,需要不断更新目录。以照片共享站Flickr为例,用户上传了超过2.25亿张照片,而标签数就多达570万种,而事实证明标签数量越多,混乱度越高,Flickr的分析就越准确,因为一张图片涵盖标签越多,用户如果寻找特定图片,则可以输入多个标签来快速精确寻找到特定图片。"每样东西都是元数据而且什么都可以被当做标签"
信息检索还包含隐性的搜索问题,从沃尔玛在线商城出现的因搜索记录和关联性而产生的种族争端问题可以看出,搜索引擎存在着不可避免的问题,它的导向功能并不能满足每个群体的眼光,甚至可能出现群体间的矛盾和用户对搜索引擎的不满。在这里我觉得垂直搜索是很重要的,可以尽量服务于某一特定群体,虽然无法根除但有利于减少此类问题。
总而言之,信息组织体系应走的道路还很长,仍然在不断进步与改善之中。
![$J{1]S`XNV7P]A3RWB~J7X6.png](http://upload-images.jianshu.io/upload_images/5886630-205a1f5dff6434f0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
查看python版本 并且安装更新名叫virtualenv的工具
创造名为 venv的虚拟环境
利用pip通过链接来安装twisted
系统的安装更新
安装四个工具 结果发现系统已经安装有 无需再安装
新建名为sucong的scrapy工程
爬取热门标签books (tag books)下的数据 并且保存在sucong.json中
在报告前面,先放一些困扰我很久的debug 让我终生铭记的debug
就是这个所谓的unexpected indent 让我删了一次又一次的new.py 重新改又重新传输上去开始爬 一遍又一遍的在百度和同学之间询问求解 着实令我难忘!从缩进用tab和空格开始改 然后改到每一个符号(,:)最后改到行之间是否需要空行 。这一个问题周周转转得有个几十次循环。
然后是invalid syntax 又是一个格式方面的问题 和前面差不多 改的方式都差不多 就不多说 反正也很不容易啊!
然后就是比较核心的问题了 在spider的上层目录里没有改好items文件 导致后面不断出现路径上的错误 后来直接新建了一个工程 一步一步往目录里面走 重写了item.py 然后参考了郭盛镶同学的报告 将starturl改正为http://ggglxy.scu.edu.cn/index.phpc=article&a=type&tid=18&page_1_page=1
避免了爬不到数据的情况。
以上为修改后的item文件
import scrapy
from ggteachers.items import GgteachersItem
class TeachersSpider(scrapy.Spider):
name = "teachers"
start_urls = [
'http://ggglxy.scu.edu.cn/index.php?c=article&a=type&tid=18&page_1_page=1',
]
def parse(self, response):
for href in response.css('div.right_info.p20 ul.teachers_ul.mt20.cf li.fl div.l.fl a::attr(href)'):
url = response.urljoin(href.extract())
yield scrapy.Request(url, callback=self.parse1)
next_page = response.css('div.w780.pb30.mb30.fr div.right_info.p20 div.pager.cf.tc.pt10.pb10.mobile_dn li.c::text').extract_first()
if next_page is not None:
next_url = int(next_page) + 1
next_urls = '?c=article&a=type&tid=18&page%s' % next_url
print next_urls
next_urls = response.urljoin(next_urls)
yield scrapy.Request(next_urls,callback = self.parse)
def parse1(self, response):
items = []
for second in response.css('div.js_infobox.cf'):
item = GgteachersItem()
item['names'] = second.css('div.r.fr h3::text').extract_first(),
item['career'] = second.css('div.r.fr p::text').extract_first(),
item['intro'] =second.css('div.desc::text').extract_first(),
items.append(item)
return items
以上为spider代码
然后开始执行
然后是爬取数据的部分截图
![D~`A_H4Y29QUTZ(]LWA8Q)A.png](http://upload-images.jianshu.io/upload_images/5886630-4e14a6e308d7c8dd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
然后出现了与郭盛镶同学一样的问题 参考了他的解决方法后 下载保存
scrapy crawl teachers -o teachers.json
sz teachers.json
然后就succeed了
User-agent: *
Disallow:/dwr
Disallow:/dashboard
Disallow:/message/
Disallow:/postmanage/
Disallow:/notice
Disallow:/followed
Disallow:/follow
Disallow:/theme/
Disallow:/newblog
Disallow:/setting
Disallow:/inviteelist
Disallow:/submit
Disallow:/like
Disallow:/logout
Disallow:/edit/
Disallow:/reblog/
Disallow:/control
Disallow:/comment.do
Disallow:/mydomainr.do
Disallow:/invite
Disallow:/art/checkorder
Disallow:/art/orderpayresult
Disallow:/art/ordersnapshot
Disallow:/benefit/
Sitemap: http://www.lofter.com/sitemap.xml
User-agent: *代表爬的所有数据
Disallow代表不可爬的内容 比如个人信息这些隐私内容
查询到电脑中是python2.7版本
于是登入服务器中,直接使用 pip install jieba 代码来实现自动安装jieba
![Paste_Image.png](http://upl oad-images.jianshu.io/upload_images/5886630-0270fec04f4aeae4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
安装好之后开始写一个简单文档进行测试并输出结果为txt文件下载
full mode 指全模式 也就是将所有可以构成词语的都显示出来
默认的话是精确模式 也就是不增加字数 只在自身分词出来
jieba.cut方法接受两个输入参数: 1) 第一个参数为需要分词的字符串 2)cut_all参数用来控制是否采用全模式
jieba.cut_for_search方法接受一个参数:需要分词的字符串,该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细
安装过程及代码解释参考http://www.tuicool.com/articles/QV36ru以及老师上传的jieba的pdf
然后输出结果
但是这里可以看出 全模式中没有展示出我预期的 苏聪/是/四川大学/学生 因为没有输入自定义字典的原因 毕竟机器分词 需要人的辅助
于是开始进入自定义字典的学习
这是原文档
这是字典 词语和词频
输入字典和原文件到同一目录
然后发现 大学生 这个词 确实单独分开了 成功!
然后我在四川新闻网上找到一篇新闻来进行词频分析和关键词提取
并保存为csv文件
以上为部分截图,可以观察出出现了中文的乱码现象
但在使用tableau之后 就正常显示了
通过这次作业,自己对python的操作能力得到了很大提升,并掌握理解了大部分代码的含义,虽说还不能做到脱机写全代码,但是感觉自己在一次次的实验报告中收获颇丰!最后由衷的感谢范炜老师及同学们的热心解答!
在本地进入solr文件中 新建一个名为teahpoducts的内核
很快遇到第一个障碍,显示java版本过低,需要1.8版本及以上,查了一下java版本是1.8但是为什么会出现这样的问题呢?在与助教老师的共同钻研与努力下,发现是java的路径问题没对,于是找到1.8版本的路径修改之后,重启cmd建立了techproducts内核。
然后找到其中的data文件里的index文件,使用luke打开。luke的overview中显示了每个name出现的次数以及所占的权重,并且显示了他们出现的位置,而在search中可以去搜索特定的name,如iPod,点击explain,搜索结果就出来了。通过权重计算出score。在找到scheme文件并打开,我的理解是这个文件定义了索引中出现的字段,定义他们是否可以被检索和储存以及他们的类型。
查询制造商为Belkin的iPod并以价格升序排列,显示name,price,features字段,返回其xml数据。
查询流行度为5以上的产品等等
查询价格在400以下等等
查询特征中play等等
搜索出价格为等等
找出电子产品等等
以上为本学期本人实践信息检索课程的个人作业整合,谢谢观看!