基于web的大规模中文人物信息提取说明书.doc_第1页
基于web的大规模中文人物信息提取说明书.doc_第2页
基于web的大规模中文人物信息提取说明书.doc_第3页
基于web的大规模中文人物信息提取说明书.doc_第4页
基于web的大规模中文人物信息提取说明书.doc_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国内图书分类号: TP301.6 密级:公开国际图书分类号: 681.14西 南 交 通 大 学研 究 生 学 位 论 文基于 Web 的大规模中文人物信息提取研究年 级 二一级 姓 名 胡万亭 申请学位级别 硕 士 专 业 计算机系统结构 指 导 教 师 杨燕 教授 二一三 年 五 月 Classified Index: TP301.6U.D.C: 681.14Southwest Jiaotong UniversityMaster Degree ThesisRESEARCH ON LARGE-SCALE CHINESE PEOPLE INFORMATION EXTRACTION BASED ON WEBGrade: 2010Candidate: Wanting HuAcademic Degree Applied for: MasterSpeciality: Computer ArchitectureSupervisor: Prof. Yan YangMay,2013西南交通大学西南交通大学学位论文版权使用授权书学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权西南交通大学可以将本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复印手段保存和汇编本学位论文。本学位论文属于1保密,在 年解密后适用本授权书;2不保密,使用本授权书。(请在以上方框内打“”)学位论文作者签名: 指导老师签名:日期: 日期:西南交通大学硕士学位论文主要工作(贡献)声明本人在学位论文中所做的主要工作或贡献如下:1、 采集人物相关网页数据,主要包括编写程序下载好大夫在线、评师网、百度百科等网站数百万网页,CNKI 网站三千多万条论文数据。2、 对基于统计的网页正文提取算法做出一些改进,并结合 DOM 解析工具实现正文提取程序。用该程序提取了网页的正文。3、 完成分词系统的组织机构名识别模块,主要工作包括:统计词语词频并排序、整理机构后缀词词典、建立机构名词典、统计机构名组成词词频、构建数学模型并实现基于词频统计的机构名识别算法。用该分词系统完成对网页正文的分词。4、 编程实现对半结构化和非结构化人物信息的提取,其中非结构化人物信息的提取采用基于规则的提取算法,手动建立了规则库,规则依赖于实验室分词系统对正文的分词标注。本人郑重声明:所呈交的学位论文,是在导师指导下独立进行研究工作所得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在文中作了明确说明。本人完全了解违反上述声明所引起的一切法律责任将由本人承担。 学位论文作者签名: 日期: 西南交通大学硕士研究生学位论文 第 I 页摘 要现代人越来越依赖于从互联网上检索信息,人物信息是人们关注检索的一个重要领域。本文致力于抽取尽可能多的重要人物信息,构建一个人物信息的知识库,既可以作为人物搜索引擎的知识库,也可以作为语义搜索引擎的知识库的人物相关部分。网络上有海量的人物信息,但是这些信息格式多样、内容纷乱,大量的垃圾信息又充斥其中,如何从互联网中自动高效地抽取准确的信息相对复杂,有很多问题需要解决。本文研究了一个从网页数据采集、网页正文抽取、中文分词处理到人物信息结构化的完整过程,每个部分都对应论文的一章。首先是网页数据的采集。论文详述了人物信息网页来源的选取和网页的下载方法。网页下载越来越困难,网站对爬虫程序的限制越来越严,甚至采取了各种反爬虫措施,比如对同一 IP 访问频率的限制。作者自己编写程序下载网页数据,针对网站的不同情况采用了三种网页数据的下载方式:一般下载方式、代理下载方式和动态网页数据的下载方式。然后是对网页正文进行抽取。论文综述了网页正文抽取的相关研究,采用了基于统计和 DOM 的方法进行正文抽取。方法采用的统计信息是正文字长、超链接数和结束标点符号数。对每个容器标签,统计三个信息值后,利用它们的数量比值判断标签是否正文标签,进而抽取正文。接着是对网页正文进行分词处理。常见的分词系统在实体识别方面存在不足,不能很好适用于知识抽取、自然语言处理等。本文分词处理使用的是西南交大思维与智慧研究所开发的分词系统,该系统在实体识别方面显著优于其它分词系统。机构名识别算法由本文作者实现,算法基于词频统计。实验中训练数据主要通过百度百科词条整理得到。训练时,作者利用百度百科词条名在词条文本中的频数统计,进行机构构成词的词频统计。在此基础上,构建了数学模型,实现了组织机构名识别算法。最后是网页人物信息的结构化。网页上的人物信息一般以半结构化和非结构化呈现,人物信息抽取的最后部分就是抽取半结构化和非结构化的人物信息并保存为结构化的人物信息。对于半结构化人物信息,需要正文去匹配人物属性词典,然后结合简单规则,直接提取属性值就行了,方法简单而有效。对于非结构化人物信息的提取,采用基于规则的提取方法,过程中建立触发词库和规则库,触发词库包括基本人物属性和对应的触发词,规则库是人工定义的提取属性值的规则。关键词:信息抽取;结构化;分词;词频统计;正文抽取 西南交通大学硕士研究生学位论文 第 II 页AbstractCurrently,people increasingly rely on the Internet to retrieve information. The information about people is an important aspect. The aim of this thesis is extracting information of famous people as much as possible. It can be used as a knowledge base of the people search engine, also can be used as a part of the knowledge base of the semantic search engine. This is vast personal information on the network. But, the format of information is different and complex. At the same time, a lot of spam full of the Internet. So, extracting accurate information from the network automatically and relatively faces with many difficulties. This thesis proposes a complete process of personal information extraction. It consists of downloading page, extracting webpage content, word segmentation and extracting structured personal information.Firstly, this thesis introduces the processing of data collection. The thesis narrates the process of selecting Web data sources and ways of downloading. It is more difficult to download page than in the past. Some Websites take a variety of measures against reptiles, such as limiting access frequency of the same IP. The writer makes up the downloading program and used three ways of downloading: general way, agent download way and dynamic Web data download way.Then, the content of page should be extracted. This thesis summarizes the relative research of content extraction and uses the extraction way based on statistics and DOM. To each container label, the thesis gets content length, the number of links and the number of end punctuation and computes their ratio. Then, it can be judged that whether the label contains content. The next step is word segmentation. Common segmentation systems are less effective in entity recognition so that they dont suite for knowledge extraction and natural language processing. The segmentation system of Southwest Jiaotong University is better than the other system in entity recognition. And, the organization name recognition algorithm is implemented in this thesis. The recognition algorithm is based on word frequency statistics. Training data mainly comes from Baidu encyclopedia entries. In the process of training, the organization names are split into a number of words and all the words frequency are computed. On the basis of computation of words frequency, this thesis establishes the mathematical model and implements the algorithm of organization name recognition.Finally, the most critical step is extracting the structured personal information. The personal information commonly is semi-structured and unstructured. At this part, semi- 西南交通大学硕士研究生学位论文 第 III页structured and unstructured personal information which came from page should be extracted and then saved as structured information. The method of extracting semi-structured information is simple and effective. The algorithm matches the text to the attribute dictionary and then extracts directly attribute value through simple rule. For extraction of unstructured information, this thesis proposes the algorithm based on rule. The dictionary of trigger words and rules need to be established in the extraction process. The dictionary of trigger words includes basic people attributes and their trigger words. The artificial rules are used to extract attribute values.Key words: Information extractions, structuring, word segmentation, word frequency statistics, content extraction 西南交通大学硕士研究生学位论文 第 IV 页目 录摘 要 IAbstractII第 1 章 绪论11.1 项目背景11.2 目的和意义11.3 研究现状分析11.4 本文主要研究内容3第 2 章 人物网页数据采集52.1 引言52.2 爬虫概述52.3 HttpClient 介绍62.4 网页数据下载62.4.1 网页数据普通方式下载62.4.2 网页数据代理方式下载72.4.3 动态网页数据下载92.4.5 实验结果112.5 本章小结11第 3 章 基于 DOM 的网页正文信息提取123.1 引言123.2 DOM 简介123.3 Html 解析器 143.4 基于 DOM 的正文抽取方法143.4.1 原理分析143.4.2 算法过程描述153.5 实验结果153.6 本章小结17第 4 章 网页正文的分词处理184.1 引言184.2 分词系统介绍194.3 组织机构名识别194.3.1 机构名的组成结构194.3.2 机构名构成词的词频统计204.3.3 词语频数统计排序20 西南交通大学硕士研究生学位论文 第 V 页4.3.4 机构后缀词整理204.3.5 机构名词典的建立214.3.6 机构词词频的计算214.3.7 机构名识别方法224.3.8 算法描述224.4 实验结果234.4.1 机构名识别实验234.4.2 正文分词处理实验244.4 本章小结25第 5 章 人物信息结构化265.1 引言265.2 人物信息结构类型265.3 半结构化人物信息提取285.3.1 基于知网的语义相似度285.3.2 属性词词典建立295.3.3 基于词典匹配的方法315.4 非结构化人物信息提取325.4.1 文本分析325.4.2 触发词库建立325.4.3 规则库建立335.4.4 算法描述345.5 实验结果345.6 本章小结35总结36致谢38参考文献39攻读硕士学位期间发表的论文和科研情况攻读硕士学位期间发表的论文和科研情况43 西南交通大学硕士研究生学位论文 第 1 页1第 1 章 绪论1.1 项目背景本课题结合自然科学基金委主任项目“基于人机共建智慧平台的语义搜索引擎”开展。语义搜索引擎是下一代的搜素引擎,旨在解决普通的搜索引擎技术的种种弊端。语义智能搜索引擎技术的成熟可能还需要十几二十年甚至更长,但是苹果 iphone 手机的语音识别智能搜索技术是智能搜索引擎技术已经开始应用的实例之一。语义搜索引擎具有智能化功能,可以理解用户的搜索意图,根据用户的意图直接给出答案,免去用户使用现在搜索引擎过程中那种繁琐的搜索查找过程。在处理过程中,语义搜索引擎或者直接检索知识库,或者查找互联网并经过匹配、筛选、提取等一系列的处理。用户的查询更加的方便、迅速,信息也更准确,特别适合于移动搜索用户,因为移动终端具有屏幕小、流量计费的限制。但是,语义搜索引擎不局限于移动终端,它是一场搜索引擎的革命,终将改变的是所有网络终端中搜索引擎用户的搜索体验。项目研究的语义搜索引擎的核心技术是知识库和智能引擎,本课题的研究成果有助于知识库中人物部分的构建。1.2 目的和意义随着互联网的迅速发展和普及,人们越来越依赖于互联网共享和获取信息。网络上海量的信息对人们是巨大而宝贵的资源,如何更加高效而方便的利用这些资源是摆在我们面前急需解决的问题。这些信息格式和内容纷杂多变,又充斥着大量虚假和垃圾信息,普通的搜索引擎不能解决这些问题已经不能满足我们的需求。从而,越来越多的人开始研究 web 信息抽取技术,希望能从互联网的汪洋大海中自动高效地抽取出有用的、准确的、结构化的信息。人物信息是互联网上的重要信息,也是人们最关心的信息类型之一。据调查,AllTheWeb 搜索引擎上有 5%到 10%的检索词中包含人名1。人物信息主要包括人物的姓名、性别、生日、籍贯、职务、工作单位以及经历等。但是,人物信息抽取技术面临诸多问题,除了信息抽取的一般问题外,还具有人物相关的特殊性。互联网上的人物信息既有结构化的又有非结构化的,越是普通人物,越以非结构化人物信息方式呈现。所以,研究自动化的人物信息抽取技术很有意义。1.3 研究现状分析信息抽取技术在国内外有了二十年左右的研究,有了成熟的发展。信息抽取的前 西南交通大学硕士研究生学位论文 第 2 页2身是文本理解,然而信息抽取出现之前已经有大量关于自然语言处理的研究和系统,但是这些系统通常只能适用于一定的范围或领域,具有很大局限性2。信息抽取技术的发展离不开消息理解会议(MUC)的召开。从 1987 年到 1998 年,MUC 会议召开了七届,会议的一项重要活动是对信息抽取系统的评测,评测主要考虑两个评价指标:召回率和准确率3。1993 年,Hobbs 在第五届 MUC 会议上提出了一个信息抽取系统的体系结构,认为信息抽取系统应该由十个模块组成4。Web 信息抽取技术是信息抽取技术最重要的组成部分,主要分为基于 DOM 树、基于包装器、基于统计理论、基于视觉特征等几类,也有了成熟的发展。但是,人物信息抽取具有人物相关的特殊性,比如人名识别和同名消岐的问题。最后的问题才是人物信息提取的问题。人名识别是各种结构的正文中识别出人的姓名。英文人名识别与中文人名识别差别较大。首先,英文单词都是间隔的,但是中文单词混合在句子中,所以分词对中文姓名的识别很重要。其次,中国人名数量很大,且很多人名随意性太大。早期,研究人员主要采用的方法是基于语料库和规则库的识别方法。很多的研究人员又提出了各种人名识别的方法,比如中科院计算所张华平提出的基于角色标注的人名识别5,毛婷婷等人提出了一种支持向量机和概率统计模型相结合的中国人名自动识别方法6,戴播等提出了一种基于共坐标上升算法的人名识别方法7,文献8采用了最大熵统计模型进行人名的提取。现在,人名识别虽然不能做到完全正确,但是有了很好的发展和应用,许多的分词软件已经能够实现很好的人名识别,方法研究与实现就不是本课题研究的重点了。人名消岐简单分为单文档消岐和跨文档消歧,国内外对人名消岐有很多的研究。2004年,G.S.Mann 采用对人物属性特征进行层次凝聚式聚类的方法进行人名消歧9。2005年,R.Bekkerman 提出了基于页面的链接关系和基于多路分布式聚类方法的算法框架找到指向同一人物的同名页面10。2011 年,国内的陈晨等人也提出了一种基于社会网络的跨文本同名消歧,陈晨等使用谱聚类对社会网络中的人名进行聚类,又引入了模块度阈值作为社会网络划分的停止条件11。除了人物信息提取方面的研究外,人物相关的研究还包括人物传记的生成方面12、人物社交网络方面13等。在中文人物信息结构化提取方面,国内一些研究人员做了一定的研究,提出了一些解决方法。但是,人物信息提取不仅要提取网页正文,还要实现非结构人物信息的结构化,这就需要对自然语言理解有一定研究,所以中文人物信息提取面临许多困难。人物信息主要分为两类:半结构化人物信息和非结构人物信息。半结构化人物信息指网页中人物的信息以“字段名:字段值”这种方式呈现,非结构化人物信息以描述性的自由文本呈现。半结构化的人物信息抽取直接利用属性名匹配就能达到很好的抽取效果,比如天津工业大学的燕敏就是用这种方法实现对半结构化人物信息的提取14。非结构化的人物信息抽取就要困难很多。2009 年,解放军电子工程学院的刘金红等提出了一种基于语义上下文分析的人物信息挖掘技术,这种方法利用语义特征词提取人 西南交通大学硕士研究生学位论文 第 3 页3物信息,但是方法有很大的局限性,因为网络上更多的非结构化人物信息没有语义特征词15。2010 年,兰州大学的陈晓云提出了一种基于 DOM 的中文人物信息提取方法,作者为网页的 DOM 树中的节点加入了主题相关度影响因子,达到了很好的正文提取效果,对正文再应用模式匹配的方法较好的实现了中文人物信息的抽取16。这种基于匹配的方法也主要面临两个问题,一方面是对网页正文准确的提取,另一方面是知识库全面而正确的构建。通过论文搜索尚未发现国内研究人员有做基于互联网的大规模人物信息自动提取的,这些研究人员大都是在小规模的网页数据库上做的算法研究,或者针对某一领域人物如教师信息进行抽取的,所以本文希望采集尽可能多的人物网页数据,研究通用的方法,获取大规模的人物数据。1.4 本文主要研究内容基于互联网的大规模中文人物信息提取过程相对复杂,涉及到的问题很多。本文介绍的是一个从网页数据下载、网页正文抽取、中文分词处理、半结构化和非结构化人物信息的结构化的完整过程。作者结合项目需要对课题展开研究,解决了过程中遇到的每个问题并用程序实现方法,得到实验结果。有一般方法的借鉴,有自己原创方法的提出,也有因为时间仓促、能力有限而难免挂一漏万、考虑不周的各种问题。庆幸的是,该文实现并论述了一个完整的过程,满足了作者所在项目的需求。作者按照实现过程的逻辑先后顺序,完成了本文的论述,每一个模块对应了一章的内容。文章共分五章,内容如下:第 1 章是绪论部分。主要讲述了项目背景、课题的目的和意义、研究现状分析。第 2 章是人物网页数据的采集。本章详述了网站的选取和网页的下载方法。网页下载有很多的困难,特别是现在网站对爬虫的限制越来越多。本章结合几个网站的特点详细讲述了三种网页数据的下载方式:一般下载方式、代理下载方式和动态网页数据的下载方式。第 3 章叙述了网页的正文抽取过程。本章首先综述了网页正文抽取的研究方法,确定了基于统计和 DOM 的方法进行正文抽取;然后,介绍了 DOM 的一般知识和HTML 解析工具 Jsoup;接着,结合数学公式讲解了算法的原理和实现过程;最后给出了实验结果。第 4 章主要内容是对抽取的网页正文进行分词处理。引言中给出了正文分词处理的必要性和一般分词系统在实体识别中的不足,从而引出西南交通大学思维与智慧研究所开发的中文分词系统。本章重点讲述了基于词频统计的机构名识别算法的实现过程。最后的实验部分,给出了识别方法的性能度量结果和分词系统对网页正文分词处理的结果。 西南交通大学硕士研究生学位论文 第 4 页4第 5 章讲述网页信息的结构化。本章给出了对网页信息呈现方式的分类:结构化、半结构化和非结构化。半结构化的信息提取方法简单,把网页正文匹配人物属性词典,结合简单规则直接提取属性值。本模块中较复杂的是对属性的映射问题,论文结合了百度百科人物属性的处理,给出了基于语义相似度的属性同义词处理方法。对非结构化人物信息,本文采用了基于规则的提取方法,首先建立触发词库和规则库,然后实现基于规则的抽取算法。 西南交通大学硕士研究生学位论文 第 5 页5第 2 章 人物网页数据采集2.1 引言人物信息提取的第一步就是数据源的获取。但是,互联网信息浩如烟海,本文以较高效率获取大量重要人物的相关网页为目标,进行了长时间的观察和大量的调研,选定了一批网站为主要的人物网页数据来源。主要有百度百科、评师网、好大夫在线、中国知网(CNKI)等。百度百科是一部内容开放、自由的网络百科全书,涵盖了各个领域的知识,有 400 多万的百科词条,而且数量还在不断的增长。其中的人物相关词条几乎涵盖了各个领域的重要人物,比如演艺明星、学术人物、运动员、医生、律师、网络草根红人等各个领域。百度百科的人物词条也有一定的规模限制,为了进一步扩大重要人物的数量,作者又选择了一些人们比较关心的领域人物的专业网站。比如:收录大部分高校教师信息的评师网;医生信息最全的好大夫网;可以检索几乎全部发表了论文的作者信息的 CNKI 等。这些网站的组织结构、URL 组织方式、对爬虫的限制、网页数据类型等各不相同,这些都对网页数据的下载造成了困难。本文使用了三种爬虫技术完成了对所有目标数据的采集,分别是普通方式下载、代理方式下载和动态网页数据下载。2.2 爬虫概述随着网络快速的发展,互联网上的信息成爆炸式的增长,用户如何快速搜索需要信息所在的网站和网页就面临着巨大的挑战。搜索引擎技术的发展解决了这一问题,成为了人们访问互联网的门户。搜索引擎能够爬取 T 级的数据并且对每天数以百万计的查询提供亚秒级响应服务17。搜索引擎关键的第一步就是抓取互联网上浩如烟海的网页,建立一个巨大的数据库,为文件的索引和检索打下基础。自动分析并下载网页的过程叫做爬取,下载程序称为网络爬虫,又叫网络蜘蛛,因为爬虫程序在互联网上爬取网页的过程就像一只蜘蛛在蜘蛛网上捕获食物一样。每一个网页对应着一个唯一的资源定位器,简称为 URL,由协议方案、主机名和资源名三部分组成。一个传统网络爬虫的工作原理并不复杂,从一个入口网页的 URL 开始,分析获取该初始网页上的所有 URL,然后遍历每一个 URL 对应的网页,在抓取网页的同时并解析新的 URL 放到队列,直到抓取了网站上所有的网页或者满足了设定的停止条件。网页的抓取策略分为深度优先、广度优先和最佳优先,常见的是广度优先和最佳优先两种方法18-19。不同于商业搜索引擎的爬虫,本文在对特定网站进行下载时,有时候是根据网站网页的 URL 规律或者网页的目录列表进行抓取的,有时候是使用广度优先的策略进行抓取的。 西南交通大学硕士研究生学位论文 第 6 页6网络上有很多开源的爬虫程序。主要的有 Heritrix、JSpider、WebSphinx、Larbin等,前三个是基于 Java 语言的,Larbin 是 C+语言开发的,还有很多 Python 语言开发的。开发人员可以灵活选择使用各种开源爬虫程序,也可以研究借鉴开源代码并编写自己的爬虫程序。2.3 HttpClient 介绍本文中爬虫程序使用的语言是 Java,对普通的下载方式使用 Java 基础类库就可以完成,对代理方式下载和动态数据的下载都使用了第三方的工具包 HttpClient。HttpClient 是 Apache Jakarta Common 的一个子项目,提供了高效的、功能丰富的 HTTP 协议支持功能20。HTTP 协议是现在 Internet 上使用得最多、最重要的协议之一,它的中文名称是超文本传输协议。超文本标记语言文档(即常见的网页)就是通过这种协议在浏览器和服务器之间进行传输的。HttpClient 对 HTTP 协议强大的支持功能,对爬虫程序的编写提供了极大的方便。HttpClient 的主要功能如下:(1) 、实现了所有 HTTP 的方法,如 Get、Post 方法等; (2) 、支持网页的自动转向;(3) 、支持 HTTPS 协议,增加了对 SSL 的支持;(4) 、支持代理服务器。HttpClient 新旧版本的差别较大,本文作者使用的版本是 HttpClient-4.1,新版本修改了很多的 bug、扩展了新的功能。2.4 网页数据下载2.4.1 网页数据普通方式下载爬虫程序和浏览器采用同样的方式来请求网页。程序首先连接域名服务器,域名服务器将 URL 里的主机名转化成 IP 地址,然后程序连接该 IP 地址所属的服务器,一般是连接到默认的 80 端口上。建立连接后,程序试着发送 HTTP 请求给网络服务器,即请求网页,常见的请求是 GET 请求和 POST 请求。GET 请求一般用来请求服务器上的资源,服务器响应简短的头部消息之后,将文件资源传给客户端程序。POST 请求与 GET 请求类似,但是可以发送额外的请求,用于传递给服务器一些东西,比如收集网页表单内容购买商品。爬虫程序一般只使用 GET 请求,请求完成后,断开连接。本文用 Java 编写自己的爬虫程序,Java 类库提供很多的类实现各种网络通信,避免了 C+编程中繁琐的 socket 通信操作。网页在浏览器和服务器间是通过 HTTP 协议进行传输的,Java 中的类 HttpURLConnection 可以完成我们下载网页的需求。 西南交通大学硕士研究生学位论文 第 7 页7HttpURLConnection 继承自 URLConnection,是支持 HTTP 特定功能的 URLConnection 。URLConnection 代表了应用程序和 URL 之间的通信链接。网页下载时,通 HttpURLConnection 可以建立一个到目标 URL 的连接,然后就可以访问目标资源了,即下载网页内容。创建一个链接的步骤如下:(1) 、通过在 URL 上调用 openConnection 方法创建连接对象; (2) 、通过 HttpURLConnection 的方法设置参数和请求属性,比如如设置请求超时时间; (3) 、通过 HttpURLConnection 的 connect 方法建立到远程对象的实际连接。网页下载的一个完整过程如图 2-1 所示。图 2-1 网页下载的程序流程图2.4.2 网页数据代理方式下载普通的网络爬虫程序并不能解决所有网站的网页下载问题。特别是对特定网站进行下载的时候,这种问题更为突出。因为,互联网上充斥着大量的爬虫程序,大部分网站在希望被更多的用户访问的时候,也要防着大量的无效 HTTP 请求占用过多的服务器资源,或者防着数据被爬虫获取而未经授权私自使用。越来越多的网站开始采取各种各样的手段避免上述情况的发生,一般采用的方式是对来自同一 IP 的请求频率进行限制,超过频率阈值的则判定为无效的 HTTP 请求,Web 服务器防火墙对其屏蔽, 西南交通大学硕士研究生学位论文 第 8 页8拒绝响应21-22。这种问题在我们抓取领域知识时很常见,比如下载评师网的教师网页时,普通的爬虫程序就不能使用了。这种情况就选择用代理方式进行下载。代理服务器(Proxy Server)的功能就是代理网络用户去获得网络信息,它是网络信息的中转站。在普通的网页浏览方式中,用户使用浏览器向 Web 服务器发送一个 HTTP 请求,服务器响应请求后传回请求的网页资源。而在代理模式下,浏览器发送请求到代理服务器,代理服务器把请求转发到 Web 服务器,Web 服务器响应请求将网页传回代理服务器,最后是代理服务器将网页传回给浏览器。交互过程如图 2-2 所示。代理服务器的功能有很多,而我们选择代理方式下载就是利用它隐藏真实 IP 地址的功能。虽然某些网站对每个 IP 的访问进行了监控,但是本文作者在下载时,用多个代理 IP 同时进行下载,既避免了一个 IP 频繁访问网站服务器的情况,又提高了下载速度。代理服务器客户端Web 服务器HTTP 请求HTTP 请求HTTP 响应HTTP 响应图 2-2 HTTP 请求的代理模式通过访问网站的 robots 文件可以发现,很多网站并不希望被所有的爬虫爬取,或者只希望被少数几个有助于网站被检索到的商业搜索引擎爬取,他们设置了很多的限制。对这种情况,使用代理方式进行网页下载,主要过程如下:(1) 、从互联网上获取免费的代理 IP 地址,并从中测试可以使用的。免费的代理 IP 大多有效时间不长,收集时尽量寻找最近更新的,并尽可能多找。(2) 、编写爬虫程序,设置好入口 URL。(3) 、运行爬虫程序,程序自动加载筛选过的代理 IP 地址,进行下载。爬虫程序用 Java 实现较为简单,Java 对 Http 请求实现了很好的封装,又有很多的第三方的程序可以使用。作者使用 httpclient4.1 实现下载程序。本爬虫程序的下载过程如下:(1) 、实例化一个 HttpClient 对象。通过 new DefaultHttpClient()返回一个HttpClient 的对象 hClient。(2) 、设置代理 IP。通过 new HttpHost(param1,param2)设置代理 IP,并返回一个 西南交通大学硕士研究生学位论文 第 9 页9HttpHost 的对象 hProxy。其中,param1 是 IP 地址,param2 是端口号。(3) 、设置代理方式。通过 httpClient.getParams().setParameter(param1,param2)可以把 httpClient 设置成代理方式。其中,param2 就是上一步的 HttpHost 对象 hProxy。(4) 、设置请求的目标。通过 new HttpGet(“/”)设置请求的目标,并返回一个 HttpGet 对象 hGet。(5) 、执行 HTTP 请求。通过 httpClient.execute(httpGet)执行请求,返回一个HttpResponse 对象 hResponse。(6) 、保存网页源码。通过对象 hResponse 就可以获得网页源码,并保存到文件里。2.4.3 动态网页数据下载前面两节下载的网页都是静态网页,静态网页数据直接存储在网页文件里。动态的网页数据是存储在后台数据库的,用户访问动态网页时,有一个与后台数据库的交互过程,通过交互操作获取后台数据。对动态网页数据的下载就比静态网页数据的下载困难得多了。爬虫程序需要模拟浏览器用户与网站服务器的交互过程才能获取到需要的数据。本文以下载 CNKI 网站上的期刊论文及作者信息数据为例,介绍一种使用HttpClient 和 FireBug 工具下载动态数据的方法。FireBug 是火狐浏览器的一个插件,具有 JavaScript 调试、DOM 查看与调试等等功能,是一个强大的 Web 开发功能。用户也可以使用它对网站做整体分析,本文就是利用该插件获得了该网站用户与服务器的数据交互过程及参数,然后编写了爬虫程序下载了全部的期刊论文检索列表中的数据。图 2-3 和图 2-4 是检索前后的两个网页,图 2-5 右下角的检索结果列表里的数据就是动态数据,是用户设定检索条件后,点击检索按钮,网站服务器执行数据库查询后返回的数据。直接查看网页源码,发现检索按钮对应着一段 JavaScript 脚本。检索按钮按下时,该段 JavaScript 代码会执行多个 Get 请求,图 2-5 就是 FireBug 对整个交互过程的显示。通过在查询操作中使用 FireBug 进行分析,作者掌握了整个交互过程中浏览器的操作,发现核心的步骤只有三步。爬虫程序只要模拟浏览器完成这三步操作就可以获取所需要的数据了,这三步就是三个 GET 请求,对应了三个 URL。三个URL 分别用 URL1、URL2 和 URL3 代替,URL1 是“/brief/Result.aspx” ,URL2 是“/request/search.aspx” ,URL3 是“/brief/brief.aspx” 。这里的三个 URL 都省略了域名和参数,实际的 URL 长度过长而不能显示。抓取数据的三个步骤如下:(1) 、开始会话,获取 Cookie。Cookie 是网站为了辨别用户身份、进行 session跟踪而储存在用户本地终端上的数据。Cookie 由服务器端生成,发送给浏览器,服务器可以通过 Cookie 记录并控制 HTTP 会话状态。Cookie 有生存周期,这个生存周期决定了查询会话的有效时间,所以用户必须在生存周期结束后,不断获得新的 Cookie 西南交通大学硕士研究生学位论文 第 10 页10继续进行数据下载。爬虫程序进行一个到 URL1 的 GET 请求。在请求前,通过HttpGet 类的 setHeader 方法设置一系列的头消息,比如 User-Agent 的值设置设置成火狐浏览器的 User-Agent。执行完 GET 请求后,可以通过 Cookie 类来获得服务器返回的 Cookie 值。(2) 、设置查询参数进行查询,获取 queryId。查询信息时的各种筛选条件可以设置成 URL2 的参数值,第一步获得的 Cookie 值设置到头消息里,然后发送 GET 请求,根据服务器的相应信息就可以获得 queryId 值,该值是网站标记一次查询的 ID。(3) 、数据下载。最后就是一直发送到 URL3 的 GET 请求了。同样,通过HttpGet 类的 setHeader 方法把 Cookie 值、queryId 值等设置到头消息里。URL3 的一个重要的参数是 curPage,因为请求的数据很大,程序是一直通过模拟用户翻页来抓取全部数据的,所以参数值一直递增直到下载完了全部数据或者当前会话失效。图 2-3 CNKI 网站检索前的页面 西南交通大学硕士研究生学位论文 第 11 页11图 2-4 CNKI 网站检索时的页面图 2-5 FireBug 对交互过程的监控图2.4.5 实验结果作者根据观察和调研,选择了上面介绍的一批网站作为重要人物网页的数据来源,几乎涵盖了各个领域的重要人物。虽然互联网重要人物信息不能穷尽,但是这个规模已经可以说是非常的大了,特别是医生、高校教师和学术论文作者方面非常详尽。其中,百度百科网页 400 多万个,根据开放分类找到人物相关的 10 万多个。好大夫在线网站的近 30 万个医生页面,几乎涵盖全国各大医院名医。评师网也涵盖了中国各大高校,实验中共下载了高校教师页面 123 万个。CNKI 网站的 3500 万条论文作者数据收录了近现代中国几乎全部的期刊论文、硕士论文和博士论文作者的论文基本信息。2.5 本章小结本章主要讲述了人物相关网页数据的采集。数据采集的第一步是选定数据源,文章简要介绍了一批各领域人物信息的重要网站。数据源确定后就是数据的下载过程遇到的问题和解决方法。本章逐一讲述了作者在下载中使用的爬取技术,主要是一般的下载方式、代理下载方式和动态网页数据的下载方式,对每种下载方式都详细介绍了程序的实现方法,其中还包括了对实用工具 HttpClient 和 FireBug 的介绍和使用方法。文章最后介绍了下载的选定网站的网页数量和数据条数。 西南交通大学硕士研究生学位论文 第 12 页12第 3 章 基于 DOM 的网页正文信息提取3.1 引言随着Internet的迅速发展,web网页的规模急剧膨胀,海量的数据远远超过以往人类所有的信息载体。这些信息极大的方便了人们获取信息的途径,促进了个人的进步和社会的发展,但是网页信息的获取面临诸多挑战。HTML语言在格式上较为自由,不同于数据结构化的XML,HTML网页工作者也不一定严格按照规范来编写网页。不仅大量的垃圾网页或者垃圾信息充斥着互联网,而且追求美观或者个性的网页结构越来越复杂,风格越来越多变,网页里嵌入了很多的显示样式或者脚本代码等噪声内容。网页噪声指网页中的导航栏、广告、版权信息、装饰信息等与主题内容无关的内容。网页中的主题内容就是我们要抽取的网页正文,而大量的噪声信息却穿插其中,给网页正文的提取带来了很大的困难。许多研究者就网页正文信息提取领域,提出了大量的方法和技术。主要有基于模板的方法23-26,基于视觉特征的方法27-28和基于统计的方法29-30。基于模板的方法主要适用于结构规范的网页,比如网页取自同一网站或者网页结构相似。基于视觉特征的正文抽取方法,适合于结构复杂并且内容分布在多个标签中的网页。基于统计的网页正文提取方法适用于结构复杂但是内容集中的网页。实际应用中,可以选择一种方法进行正文抽取,也可以根据抽取的不同网页特点采取不同的方法。基于统计的提取方法,根据网页的正文特征,转化成统计信息参数,根据参数值来判断网页正文位置。文献31利用超链接数与文本长度的比值为判断标准确定正文位置。文献32在上述基础上增加了标点符号特征,因为一般情况下标点符号出现在正文中的比例远远大于出现在非正文中的情况。文献33提出了 SCF 方法,是对上述方法处理过程做了一些改进,效果也得到一定的提升,特在对风格多样的网页内容进行抽取时,提取结果得到改善。一般在基于统计的网页正文提取时,使用 HTML 解析器将 HTML 网页转化成对应的 DOM 树,算法在网页 DOM 树的基础上更容易实现。3.2 DOM 简介DOM 是 Document Object Model 的缩写,中文名称是文档对象模型。DOM 是W3C 推荐的处理可扩展置标语言的标准编程接口。它起源于微软与网景公司的浏览器之争,当时的双方因为利益冲突爆发了技术冲突,最后导致很多网页在非微软浏览器上不能正常的显示, DOM 在这种情况下应运而生。DOM 解决了微软的 Jscript 和网景的 Javascript 之间的冲突,定义了标准的方法,让 web 设计师和开发者用统一的 西南交通大学硕士研究生学位论文 第 13 页13方法访问站点中的数据、脚本和表现层对像。DOM 以对象管理组织的规约为基础进行设计,因此不拘泥于某种编程语言,可以以独立于语言和平台的方式来访问、修改文档的结构和内容34。最初,DOM 是为了解决 JavaScript 在不同浏览器间可移植的方法,现在 DOM 的应用范围却增强。DOM 的使用使得页面的交互性大大的增强,用户页面可以动态变化,可以动态地显示、隐藏某个元素,改变元素属性,增加新的元素等。DOM 描述文档模型采用的是面向对象的方式,它定义了表示文档的对象、对象的行为和属性以及对象之间的关系。DOM 被习惯叫做 DOM 树,可见 DOM 是页面上数据和结构的树形表示。依据 DOM 的标准,HTML 文档由一个个节点组成的。DOM 规定:文档本身是一个文档节点;每一个 HTML 标签都是一个元素节点;元素节点中的文本是文本节点; HTML 属性是属性节点;注释是注释节点。节点之间有等级关系,或者叫层次关系。HTML 文档中的所有节点组成了一个文档树。下面是一个 HTML 文档:图 3-1 是该文档表示成 DOM 树形结构的示意图。文档标题链接标题 西南交通大学硕士研究生学位论文 第 14 页14图 3-1 HTML 文档的 DOM 树形结构示意图图 3-1 中,文档节点是根节点,其它的每个节点都有父节点。 和 的父节点是 节点,文本节点 标题 的父节点是 节点。反过来,节点的子节点就是和。有共同父节点的节点是兄弟节点,比如和节点就是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论