一种从社区问答网站自动获取知识领域短文本的方法与流程

文档序号:14720466发布日期:2018-06-17 13:21阅读:219来源:国知局

本发明涉及对网站信息的获取方法,具体为一种从社区问答网站自动获取知识领域短文本的方法。



背景技术:

以社区问答网站为代表的开放知识源已成为人们获取知识的重要来源。这些知识源由于具有开放、协作式的知识共享机制,可以有效地促进知识的传播和应用,但同时也加剧了知识碎片化,日积月累的碎片化知识以短文本的形式分散在不同的角落且存在重复。以社区问答网站Quora为例,Quora是一个有着快速增长的知识领域短文本的社区问答网站(英文网站),Quora网站中的问题主要是以话题(也称主题)的形式组织的,它的问题数据规模从2009年的102的数量级增长到2012年的106的数量级。

现有技术中公开的,专利号为CN201210484746.5的中国专利“一种聚焦爬虫的设计方法”包括三个步骤:(1)配置领域本体的描述信息并作为聚焦爬虫的模板,这些描述信息包括:搜索关键词、筛选关键词、爬取关键词;(2)选择爬虫模板的搜索关键词提交给搜索引擎进行资源检索,获取本领域网页URL信息,形成初始种子URL序列N;(3)从初始种子URL序列N中依次取出种子URL交给爬虫处理线程。

上述专利通过搜索引擎检索到与领域相关的本领域网页URL资源,针对URL资源与领域的相关性强弱,采用一定的概率选取种子URL进行资源爬取。因此,上述专利根据URL爬取的资源可能不是完整的,不能完全覆盖某个领域的所有资源,不利于学习者使用和学习。



技术实现要素:

针对现有技术中存在的问题,本发明提供一种从社区问答网站自动获取知识领域短文本的方法,能够爬取社区问答网站知识领域相应领域下每个主题的问题网页和作者网页,获取数据全面系统,方便用户学习和使用。

本发明是通过以下技术方案来实现:

一种从社区问答网站自动获取知识领域短文本的方法,包括如下步骤:

步骤1,爬取社区问答网站中知识领域的Web页面;按照领域的不同,基于深度优先遍历算法爬取社区问答网站的动态网页,解析得到含有知识领域知识的网页中的主题页面、问题页面和作者页面的基本信息,构建包含这三类页面的集合,形成知识领域的网页数据集;

步骤2,抽取网页数据集中的知识领域短文本;通过使用HTML解析工具分别对网页数据集中的主题页面、问题页面和作者页面进行解析,得到每类页面包含的知识领域短文本,构建短文本数据集;

步骤3,构建领域主题树;通过分析短文本数据集,得到每个领域对应主题下的短文本及其父子关系,构建多棵以领域名为树根和以知识领域短文本为树节点的树,将其命名为领域主题树;

步骤4,领域主题树的存储;首先将领域主题树中的节点信息存入相应的树节点集合中,然后根据领域分别设计得到对应的领域表格;其次将树节点集合的信息存入领域表格的对应列中,补全每张领域表格的信息,构建用于存储每个领域所有短文本的知识领域数据库。

优选的,步骤1中基于深度优先遍历算法爬取社区问答网站的动态网页时;首先,根据主题页面地址爬取主题页面,通过HTML解析获得主题页面中指向问题页面的超链接,并将这些超链接存入URL池;其次,根据URL池中问题页面的地址爬取问题页面,问题页面包含一个问题及0条或多条回答,解析问题页面的每条回答得到指向作者页面的超链接,存入URL池;最后,根据URL池中作者页面的地址爬取作者页面,解析作者页面的基本信息。

优选的,步骤1中爬取社区问答网站中知识领域的Web页面,具体包括如下步骤;

1.1对于每个领域根据已有的主题词集合,爬取该领域的网页数据集;

1.2从已有的主题开始,根据主题词得到主题页面的链接,将每个领域下的所有主题链接存入URL池中,并去除重复链接;爬取网页得到主题页面集,并将其加入网页数据集;

1.3解析主题页面集中每个主题页面的问题列表,分析问题列表的HTML标签,得到所包含问题页面的链接;选择问题与主题相关性高的若干问题网页的链接存入URL池中,并去除重复链接;爬取网页得到问题网页集,将其加入网页数据集;

1.4解析问题页面集中每个问题页面的回答列表,根据问题页面是否含有回答列表的HTML标签,得到每条回答的作者页面链接;将每条回答的作者链接存入URL池中,并去除重复链接;爬取网页得到作者网页集,并将其加入网页数据集,得到包含三类页面的网页数据集。

优选的,步骤2中抽取网页数据集中的知识领域短文本时;首先,设计主题页面的抽取规则,使用该规则解析主题页面对应的问题列表,得到每个主题页面包含的所有问题;其次,设计问题页面的抽取规则,使用该规则解析问题页面的回答列表,获取相应知识领域短文本,包括描述问题的短文本、回答问题的短文本、问题及回答的支持票数和评论数;再次,设计作者页面的抽取规则,使用该规则解析作者页面的个人信息列表,获取相应作者信息,包括作者姓名、作者粉丝数和作者擅长领域;最后,利用解析得到的所有短文本信息,构建短文本数据集。

优选的,步骤2中抽取网页数据集中的知识领域短文本,具体包括如下步骤;

2.1解析每个领域对应的的网页数据集,包括主题页面、问题页面和作者页面这三类页面的HTML结构,根据页面HTML标签定位相应的逻辑块,逻辑块中的每段短文本表示一个实体;

定义短文本数据集TFS={domainc}s,其中s表示网页数据集中的领域数量,domainc表示网页数据集中的第c个领域;如果一段文本隶属于另外一段文本,则称它们之间存在父子关系;

2.2解析主题页面,依据HTML标签定位并解析主题块,得到主题短文本及所属领域,所属领域与主题短文本集合形成父子关系集,并将其加入短文本数据集TFS;

2.3二次解析主题页面,依据HTML标签定位并解析问题块,得到描述问题的短文本,得到所有问题短文本的集合,即问题集合;主题短文本与问题块中的问题短文本集合形成父子关系集,并将其加入短文本数据集TFS;

2.4解析问题页面,解析问题页面的HTML标签,得到问题的评论数和投票数,得到所有问题的评论数和投票数的集合;问题集合与问题的评论数集和投票数集分别形成父子关系集,并将其加入短文本数据集TFS;

2.5二次解析问题页面,解析问题页面的HTML标签,得到问题的回答,得到所有回答的集合;问题与回答集合形成父子关系集,将其加入短文本数据集TFS;

2.6三次解析问题页面,解析问题页面的HTML标签,得到答案的评论数和投票数,得到所有评论数和投票数的集合;回答集合与回答的评论数集和投票数的集合分别形成父子关系集,将其加入短文本数据集TFS;

2.7解析作者页面,解析作者页面的HTML标签,得到作者的姓名;解析HTML标签得到作者的粉丝数;解析HTML标签得到作者擅长领域;得到所有作者信息,包括分别构成的作者姓名集合、作者粉丝数集合和作者擅长领域集合;回答集合与回答的作者信息集形成父子关系集并将其加入短文本数据集TFS。

进一步,步骤3中构建领域主题树时;首先,依据短文本数据集中的所有短文本和父子关系构建一个有向无权图G=(V,E),其中V表示实体集合,它是由短文本数据集中的所有短文本构成的节点集合,E表示实体间的父子关系,它是根据实体间的父子关系生成的有向边集合;其次,根据领域名domain∈V及有向图G,基于有向图的深度优先遍历算法,生成以domain为根的领域主题树T(domain)=(V',E',domain),其中

进一步,步骤3中构建领域主题树时,具体包括如下步骤;

3.1针对短文本数据集TFS,构建一个有向无权图G=(V,E),其中V表示由短文本数据集TFS中的所有短文本构成的实体集合,E表示实体间的父子关系,开始G为空;

3.2从TFS中取出一个父子关系ei=<parent,child>∈TFS,其中parent表示父亲节点,child表示父子关系中的儿子对象,同时执行TFS=TFS-{ei};

3.3判断在V中某个实体与parent是否等价;如果不存在等价实体,则将parent加入V;判断在V中某个实体与child是否等价;如果不存在等价实体,则将child加入V;

3.4如果parent或child任何一个在V中不存在等价实体,则将ei作为G的一条新的边;

3.5执行步骤3.2,直到TFS为空;

3.6根据领域名domain∈V及有向图G,基于有向图的深度优先遍历算法,生成多棵以domain为根的领域主题树T(domain)=(V',E',domain),其中

优选的,步骤4中领域主题树存储时,具体包括如下步骤;

4.1建立知识领域数据库,针对不同的领域分别设计得到对应的领域表格,领域表格包含若干列信息;

4.2领域表格的每列包含一个树节点在领域主题树中的层数属性;

4.3对领域的领域主题树,定义根节点的层数为1,且每个树节点的层数都是其父节点层数加1;深度优先遍历从根节点到叶子节点每条路径上的节点,记录每个树节点的层数及其短文本内容;用Hashmap将树节点的这两个属性值封装到对应的树节点对象中;每个领域可以得到一个树节点集合;

4.4针对步骤4.3中的领域的树节点集合和步骤4.1中的领域表格,对比树节点的层数信息和领域表格每列的层数属性,若相同,则将树节点的短文本内容存入领域表格的对应列中,补全每张领域表格的信息;最终,得到存储所有领域下的所有短文本的知识领域数据库。

与现有技术相比,本发明具有以下有益的技术效果:

本发明能够从社区问答网站半结构化数据中自动抽取知识领域短文本,通过爬取社区问答网站知识领域相应领域下每个主题的问题网页和作者网页,构建了知识领域的网页数据集,然后自动抽取其中的知识领域短文本并发现其中的父子关系,从而构建了领域主题树并实现了领域主题树的存储,最终方便用户学习和使用。其主要有如下几个优点。

(1)对于步骤一,一方面使用基于队列管理和集合去重的URL池存储URL链接,减少了对于重复链接的爬取,降低了爬虫的工作量,并且方便了多线程爬取;另一方面构建了知识领域的网页数据集,作为原始知识源进行存储,方便定位处理。

(2)对于步骤二,使用基于包装器的信息抽取模型,使得信息抽取更加的简单且易于实现,方便用户使用。

(3)对于步骤三,使用领域主题树的形式将知识生动形象地展现给学习者,方便学习者了解知识之间的父子关系,使得学习者可以更加全面地掌握知识点。

(4)对于步骤四,提供一种知识存储方案,保证了数据的持久化,提供了学习者的知识库。

附图说明

图1是本发明实例中所述方法的流程框图。

图2是本发明实例中所述网页数据集爬取流程图。

图3是本发明实例中所述知识领域短文本抽取流程图。

图4是本发明实例中所述基于包装器的信息抽取模型图。

图5是本发明实例中所述的Quora网站的主题页面图。

图6是本发明实例中所述的Quora网站的问题页面图。

图7是本发明实例中所述的Quora网站的作者页面图。

图8是本发明实例中所述的以“Datastructure”为根的领域主题树。

图9是本发明实例中所述的存储知识领域短文本的知识领域数据库。

具体实施方式

下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。

本发明一种从社区问答网站自动获取知识领域短文本的方法,实现了对社区问答网站的知识领域短文本进行自动采集与整理。其包括如下步骤。

(1)爬取社区问答网站中知识领域的Web网页:爬取社区问答网站的动态网页并保证其中数据的完整性。以Quora网站为例,含有知识领域知识的网页包括主题页面、问题页面和作者页面,依照深度优先遍历算法爬取这些网页。首先,根据Quora主题页面地址爬取主题页面,通过HTML解析获得主题页面中指向问题页面的超链接,并将这些超链接存入URL池;其次,根据URL池中问题页面的地址爬取问题页面,问题页面包含一个问题及多条回答(可能为0条),解析问题页面的每条回答得到指向作者页面的超链接,存入URL池;最后,根据URL池中作者页面的地址爬取作者页面,解析作者页面的基本信息,构建这三类页面的集合,形成网页数据集。

(2)抽取网页数据集中的知识领域短文本:通过使用HTML解析工具对(1)中的网页数据集进行解析,得到每类页面包含的知识领域短文本,从而构建短文本数据集。首先,设计主题页面的抽取规则,使用该规则解析主题页面对应的问题列表,得到每个主题页面包含的所有问题;其次,设计问题页面的抽取规则,使用该规则解析问题页面的回答列表,获取相应知识领域短文本,包括描述问题的短文本、回答问题的短文本、问题及回答的支持票数、评论数等;再次,设计作者页面的抽取规则,使用该规则解析作者页面的个人信息列表,获取相应作者信息,包括作者姓名、作者粉丝数、作者擅长领域等。最后,利用解析得到的所有短文本信息,包括领域、主题、问题、回答、支持票数等信息,构建短文本数据集TFS。

(3)构建领域主题树:通过分析(2)中的短文本数据集TFS,得到每个领域对应主题下的短文本及其父子关系,最终构建多棵以领域名为树根、以知识领域短文本为树节点的树,将其命名为领域主题树。首先,依据短文本数据集中的所有短文本和父子关系构建一个有向无权图G=(V,E),其中V表示实体集合,它是由短文本数据集中的所有短文本构成的节点集合,E表示实体间的父子关系,它是根据实体间的父子关系生成的有向边集合;其次,根据领域名domain∈V及有向图G,基于有向图的深度优先遍历算法,生成以domain为根的领域主题树T(domain)=(V',E',domain),其中

(4)领域主题树的存储:负责将(3)中的领域主题树按领域分别保存到知识领域数据库相应的领域表格中,提供了一种知识领域短文本的存储方案。首先,针对每个领域domain设计一个领域表格TABLE(domain),包含10列信息,即主题名、问题或回答id、问题或回答内容、投票数、评论数、作者姓名、作者粉丝数和作者擅长领域等,且每列包含一个树节点在领域主题树中的层数属性;其次,对每个领域的领域主题树T(domain)进行深度优先遍历,并在遍历过程中将树节点在树中的层数及其短文本内容封装到树节点对象中,就可以构建每个领域的树节点集合NODE(domain);最后,对于每个领域的领域表格及其树节点集合,对比领域表格每列的层数属性与树节点的层数信息,若相同,则将树节点的短文本内容存入领域表格的列中,就可以补全每张领域表格TABLE(domain)的信息。最终构建了用于存储每个领域所有短文本的知识领域数据库DATABASE(knowledgeDomain)。

具体的,如图1所示,可以分为如下四个过程:

(1)爬取社区问答网站中知识领域的Web页面,包括4个步骤。

第1步:对于每个领域domain,根据已有的主题词集合{topici}n,爬取该领域的网页数据集PAGE(domain),并设PAGE(domain)=Φ;

第2步:从已有的主题开始,根据主题词得到主题页面的链接为:http://www.quora.com/search?q=topici,即主页链接(http://www.quora.com/)拼接(search?q=)再拼接主题名称topici。将每门学科下的所有主题链接存入URL池中,并去除重复链接。最后,在主程序中设置多个线程并爬取网页,从而得到主题页面集PAGE(topic),并将其加入PAGE(domain),

即PAGE(domain)=PAGE(domain)∪PAGE(topic);

第3步:解析主题页面集中每个主题页面的问题列表,分析HTML标签(<aclass=\"question_link\">),得到所包含问题页面的链接。实证分析发现主题页面搜索结果中的平均前50条问题与主题相关性较高,之后的问题与主题相关性较低。因此,选择前50条问题网页的链接存入URL池中,并去除重复链接。最后,在主程序中设置多个线程并爬取网页,从而得到问题网页集PAGE(question),将其加入PAGE(domain),

即PAGE(domain)=PAGE(domain)∪PAGE(question);

第4步:解析问题页面集中每个问题页面的回答列表,根据问题页面是否含有HTML标签(<divclass=\"author_info\">),得到每条回答的作者页面链接。将每条回答的作者链接存入URL池中,并去除重复链接。最后,在主程序中设置多个线程并爬取网页,从而得到作者网页集PAGE(author),并将其加入PAGE(domain),

即PAGE(domain)=PAGE(domain)∪PAGE(author)。

这四个步骤的流程如图2所示,比如图5、图6及图7分别给出主题页面、问题页面和作者页面的页面结构,即网页集中包含的三种不同类型的页面。

(2)抽取网页数据集中的知识领域短文本,包括7个步骤。

第1步:解析每个领域domain对应的的网页数据集PAGE(domain),包括主题页面、问题页面和作者页面这三类页面的HTML结构,根据页面HTML标签定位相应的逻辑块,包括主题块、问题块、答案块、作者块等,逻辑块中的每段短文本表示一个实体。定义短文本数据集TFS,并设TFS={domainc}s,其中s表示网页数据集中的学科数量。如果一段文本隶属于另外一段文本,则称它们之间存在父子关系;

第2步:解析主题页面,依据HTML标签定位并解析主题块,得到主题短文本及所属领域,表示为topicl和domain;所有主题短文本的集合表示为{topicl}t,其中t表示领域domain包含的主题短文本数目,该表达式等同{topic1,…,topict};领域domain与主题短文本集合{topicl}t形成父子关系集{<domain,topicl>}t,并将其加入TFS,

即TFS=TFS∪{<domain,topicl>}t;

第3步:解析主题页面,依据HTML标签定位并解析问题块,得到描述问题的短文本,表示为questioni;所有问题短文本的集合表示为{questioni}m,其中m表示该主题下的问题短文本的数目,该表达式等同{question1,…,questionm};主题短文本topic与问题块中的问题短文本集合{questioni}m形成父子关系集{<topic,questioni>}m,并将其加入TFS,

即TFS=TFS∪{<topic,questioni>}m;

第4步:解析问题页面,设计问题页面的抽取规则,获得问题页面附加信息,即解析问题页面的HTML标签,得到问题的评论数和投票数,分别表示为:和qupvotei;所有问题的评论数和投票数的集合表示为{qcommenti}m和{qupvotei}m,其中m表示问题总数;问题名集合{questioni}m与问题的评论数集和投票数集分别形成父子关系集{<questioni,qcommenti>}m和{<questioni,qupvotei>}m,并将其加入TFS,

即TFS=TFS∪{<questioni,qcommenti>}m∪{<questioni,qupvotei>}m;

第5步:解析问题页面,获得问题页面的答案信息,即解析问题页面的HTML标签,得到问题的回答,表示为answerk;所有回答的集合表示为{answerk}n,其中n表示该问题下回答的个数;问题question与回答集合{answerk}n形成父子关系,将其加入TFS,即TFS=TFS∪{<question,answerk>}n;

第6步:解析问题页面,获得每条答案的附加信息,即解析问题页面HTML标签,得到答案的评论数和投票数,分别表示为:acommentk和aupvotek;所有评论数和投票数的集合表示为{acommentk}n和{aupvotek}n,其中n表示回答总数;回答集合{answerk}n与回答的评论数集和投票数集分别形成父子关系集{<answerk,acommentk>}n和{<answerk,aupvotek>}n,并将其加入TFS,

即TFS=TFS∪{<answerk,acommentk>}n∪{<answerk,aupvotek>}n

第7步:解析作者页面,设计作者页面的抽取规则,获得每条回答的作者信息,即解析作者页面的HTML标签,得到作者的姓名,表示为authork;解析HTML标签得到作者的粉丝数,表示为followerk;解析HTML标签得到作者擅长领域,表示为majork;所有作者信息分别构成集合为:{authork}n、{followerk}n和{majork}n,其中n表示回答总数;回答集合{answerk}n与回答的作者信息集形成父子关系集并将其加入TFS可以得到:TFS=TFS∪{<answerk,authork>}n∪{<answerk,followerk>}n∪{<answerk,majork>}n。

这七个步骤的流程如图3所示,比如基于图4的包装器模型进行信息抽取,抽取的碎片化知识在图5、图6和图7中都可以找到相应的栏目和模块。

(3)构建领域主题树,包括6个步骤。

第1步:针对短文本数据集TFS,构建一个有向无权图G=(V,E),其中V表示由短文本数据集TFS中的所有短文本构成的实体集合,E表示实体间的父子关系,开始G为空;

第2步:从TFS中取出一个关系ei=<parent,child>∈TFS,其中parent表示父亲节点,child表示父子关系中的儿子对象,同时执行TFS=TFS-{ei};

第3步:判断在V中某个实体与parent是否等价。如果不存在等价实体,则将parent加入V,V=V∪{parent};判断在V中某个实体与child是否等价。如果不存在等价实体,则将child加入V,V=V∪{child};

第4步:如果parent或child任何一个在V中不存在等价实体,则将ei作为G的一条新的边,即E=E∪{ei};

第5步:执行步骤第2步,直到TFS为空;

第6步:根据领域名domain∈V及有向图G,基于有向图的深度优先遍历算法,生成多棵以domain为根的领域主题树T(domain)=(V',E',domain),其中

基于这六个步骤构建的领域主题树如图8所示。选择领域名“DataStructure”作为根节点,通过有向图的深度遍历即可获得以“DataStructure”为根的领域主题树。对于不同的领域,可以得到不同的领域主题树。

(4)领域主题树的存储,包括4个步骤。

第1步:建立知识领域数据库DATABASE(knowledgeDomain),针对领域domain设计一个领域表格TABLE(domain)。该表格包含10列信息,包括主题名topic、问题或回答id、问题或答案内容(questioni和answerk)、投票数upvote、评论数comment、作者姓名author、作者粉丝数follower和作者擅长领域major等。

第2步:领域表格的每列包含一个树节点在领域主题树中的层数属性depth(column),如:depth(topic)=2,表示主题名的层数是2;

depth(id)=3,表示问题和答案ID对应的层数为3;

depth(question)=depth(answer)=depth(qupvote)=…=4,表示问题和答案内容、问题投票数和问题评论数等对应的层数为3;

depth(aupvote)=depth(acomment)=depth(author)=…=5,回答的投票数、评论数和作者信息等对应的层数为5。

第3步:对领域domain的领域主题树T(domain),定义根节点的层数为1(即:depth(domai)n=1),且每个树节点的层数都是其父节点层数加1(即:depth(child)=depth(parent)+1)。深度优先遍历从根节点(领域)到叶子节点每条路径上的节点(知识领域短文本),记录每个树节点的层数depth(nodei)及其短文本内容content(nodei);用Hashmap将树节点的这两个属性值封装到对应的树节点对象nodei中。最终每个领域domain可以得到一个树节点集合NODE(domain)。

第4步:针对第3步中的领域domain的树节点集合NODE(domain)和第1步中的领域表格TABLE(domain),对比树节点的层数信息depth(nodei)和学科表格每列的层数属性depth(column),若相同,则将树节点的短文本内容content(nodei)存入领域表格的对应列中,就可以补全每张领域表格TABLE(domain)的信息。最终,可以得到存储所有领域domain下的所有短文本的知识领域数据库DATABASE(knowledgeDomain)。

基于这四个步骤构建的知识领域数据库如图9所示。选择Mysql作为存储数据库,其中包含了三个领域的知识领域的短文本,图9以“Data_Structure”为例展示了数据集构造结果。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1