CN104268148A - 一种基于时间串的论坛页面信息自动抽取方法及系统 - Google Patents
一种基于时间串的论坛页面信息自动抽取方法及系统 Download PDFInfo
- Publication number
- CN104268148A CN104268148A CN201410429698.9A CN201410429698A CN104268148A CN 104268148 A CN104268148 A CN 104268148A CN 201410429698 A CN201410429698 A CN 201410429698A CN 104268148 A CN104268148 A CN 104268148A
- Authority
- CN
- China
- Prior art keywords
- node
- page
- building
- information
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于时间串的论坛页面信息自动抽取方法及系统。该方法包括创建文件对象模型树,清除文件对象模型树中的无用标签和空标签;根据所述时间串,对所述文件对象模型树进行聚类,生成多个聚类集合,遍历所述聚类集合,获取最大簇,若所述最大簇只包含一个单独节点,则所述论坛页面为单楼页面,根据所述单独节点的时间串,获取所述单楼页面的发帖时间信息;遍历所述文件对象模型树,获取包含网页地址的新节点,通过关键字列表或正则式列表,对网页地址进行关键字查找或正则式查找;若网页地址包含关键字列表中的关键字或所述正则式列表中的正则式,则获取新节点及其子节点包含的文本信息,文本信息为所述单楼页面的用户名信息。
Description
技术领域
本发明涉及网络信息抽取方法,特别是一种基于时间串的论坛帖子自动抽取方法及系统。
背景技术
互联网成为了许多人生活中不可或缺的一部分,而且内容越来越丰富,然而,随着内容的丰富、规模的扩大、用户数量的急剧增长,信息爆炸给人们也带来了相当大的困扰——人们无法快速、准确地获取自己想要得到的信息,这一方面是由于数据量大,找到想要的信息犹如大海捞针;另一方面,还因为各种网页噪音(广告等)、垃圾网页等一些用户不想看到的信息在泛滥,针对前者,目前比较好的解决方式是搜索引擎和个性化推荐引擎,搜索引擎可以让用户自定义的去查找用户自己想要的信息,而个性化推荐引擎试图自动寻找用户大概想要的内容,对用户进行推送。目前通常的搜索引擎、个性化推荐引擎采用的是对网页文本进行处理、分析(分词、建索引、排序等),而如果不对网页中的噪音信息进行处理,最终系统搜索或推荐出的内容质量也会大打折扣。
为了解决上面这些问题,网络信息抽取技术应需求而生。该技术的目标是将网页中的信息提取并表示为结构化的、计算机可以存储和理解的格式。信息抽取的质量直接影响系统的效果,因此,网络信息抽取研究具有重大的应用价值。
目前,按照是否需要模板,可以将信息抽取方法分为模板相关与模板无关的方法。模板相关的方法是指通过人工标注或者自动算法寻找到网页中关键信息的位置,并记录为模板,以便用来抽取结构相似的页面,这种方式在抽取时速度快,缺点是如果采用人工标注的话会耗费大量的人力,模板的维护代价高,可扩展性差;模板无关的方法是指对于每个待处理的页面,通过自动化的抽取方法获取网页的关键信息,一般是基于网页的结构特征或者文本特征,这种方法的优点是全自动化,无需人工标注,也没有模板维护的代价,但是抽取效率 以及准确率偏低。
对于论坛类页面,目前模板无关的方法一般是基于页面结构的相似性,寻找重复结构,从而找到页面中记录所在的位置。但是对于主楼与跟贴结构不同的论坛页面(比如天涯论坛),会导致主楼信息很容易丢失;对于单楼页面(只有一个帖子),由于不符合算法中关于页面存在相似、重复结构的假设,导致抽取效果很差。
自动化抽取方法在对自动化要求较高的应用场合中发挥着重要作用,在实时信息采集系统中,单楼页面的比例较高,导致自动抽取方式抽取效果较差。
发明专利“一种多记录网页的信息抽取系统及方法”,该发明涉及一种多记录网页的信息抽取系统及方法,该系统包括:一个网页预处理模块,用于将HTML网页转换为XHTML网页,并过滤网页中用来渲染显示效果的标签,然后根据标签的嵌套结构,构建文档次序树;一个记录区域定位模块,用于接收文档次序树,并利用横向层次分析法在文档次序树中定位出记录区域的位置;一个记录分隔符识别模块,用于从记录区域中找到记录之间的分隔符并进行存储;以及一个记录输出模块,用于将记录区域里所有文本节点按层次顺序遍历输出,在碰到分隔符时输出分隔线,得到最终的抽取结果。该系统及方法能够高效、准确地对传统和新式多记录网页进行信息抽取,抽取速度快、准确度高,通用性强,适用范围广。该发明通过建立文档次序树、并结合分隔符来抽取多记录内容,与本发明基于时间串寻找记录的方式完全不同。
发明专利“一种Web论坛信息抽取系统”,该发明公开了一种Web论坛信息抽取系统,该系统包括如下模块:网页采集模块,用于根据用户指定的论坛站点和相应的版块自动下载论坛网页;网页解析模块,用于对网页内容进行清洗,形成网页的文档对象模型(DOM)以便信息抽取算法的实施;在线抽取模块,用于根据论坛网页的布局结构特点对网页中的指定信息进行抽取;数据库存储模块,用于将所抽取的内容存储在数据库系统中以便进行其它的应用;该发明的能对互联网上多种论坛的指定信息进行自动抽取,且有很高的准确率。但该发明通过计算结构相似性,并通过阈值来寻找记录,与本发明基于时间串的方式差别很大。
发明专利“一种自动抽取论坛数据的方法”,该发明公开了一种从论坛帖子中抽取数据的方法,按照如下步骤:a根据论坛网页结构的特点,用网页结 构聚类的方法,识别网页帖子页面;b根据网页帖子的簇的相似子树的数量变化,计算该簇内所有同路径下的相似子树的熵,来定位条目信息;c构建帖子页面可视字串的特征集,利用统计特征对特征集进行划分,然后利用先验知识对具体的可视字串代表的含义,并生成模板;d利用模板解析网页,完成最终的提取。但该发明通过计算网页帖子的簇的相似子树的数量变化来定位记录,并生成相应模板,与本发明基于时间串的方式差别很大。
发明内容
针对现有技术的不足,本发明提出一种基于时间串的论坛帖子自动抽取方法及系统。
本发明提出一种基于时间串的论坛页面信息自动抽取方法,包括:
步骤1,对所述论坛页面进行文件对象模型解析,并创建文件对象模型树,清除所述文件对象模型树中的无用标签和空标签,其中将所述无用标签和所述空标签对应的节点,标记为非关键节点,以完成清除;
步骤2,根据所述时间串,对所述文件对象模型树进行聚类,生成多个聚类集合,遍历所述聚类集合,获取最大簇,若所述最大簇只包含一个单独节点,则所述论坛页面为单楼页面,根据所述单独节点的时间串,获取所述单楼页面的发帖时间信息;
步骤3,初始化关键字列表和正则式列表,遍历所述文件对象模型树,获取包含网页地址的新节点,通过所述关键字列表或所述正则式列表,对所述网页地址进行关键字查找或正则式查找;
步骤4,若所述网页地址包含所述关键字列表中的关键字或所述正则式列表中的正则式,则获取所述新节点及其子节点包含的文本信息,所述文本信息为所述单楼页面的用户名信息。
所述的基于时间串的论坛页面信息自动抽取方法,所述步骤1和所述步骤2之间还包括:
通过正则式获取所述文件对象模型树的所述时间串。
所述的基于时间串的论坛页面信息自动抽取方法,还包括:
步骤5,对所述单独节点和所述新节点在所述文件对象模型树中的父节点进行标记;
步骤6,查找所述文件对象模型树中的标题节点,提取每个标题节点的标题文本信息;
步骤7,根据所述标题文本信息,查找所述单楼页面的主楼的标题文本信息,并查找所述主楼的所述标题文本信息在所述文件对象模型树中对应的主楼标题节点;
步骤8,若找到所述主楼标题节点,则遍历所述主楼标题节点及其子节点,否则遍历所述文件对象模型树,在除被标记的所述父节点和所述非关键节点之外的节点中,查找文本密度最大的节点,并获取文本信息作为所述单楼页面的正文信息。
所述的基于时间串的论坛页面信息自动抽取方法,所述步骤2还包括:
步骤21,若所述最大簇只包含两个节点,且所述两个节点没有公共父节点,则所述论坛页面为主楼与跟帖结构不同的两楼页面;
步骤22,获取所述两楼页面的每楼时间串对应节点的最低公共父节点,获取所述最低公共父节点的儿子节点,查找所述儿子节点中所述每楼时间串的祖先节点,并将所述祖先节点作为根节点,生成两颗文件对象模型树;
步骤23,根据所述两颗文件对象模型树,通过所述单楼页面的获取发帖时间信息、用户名信息、正文信息的方法,获取所述两楼页面每楼帖子的发帖时间信息、用户名信息、正文信息。
所述的基于时间串的论坛页面信息自动抽取方法,所述步骤2还包括:
步骤24,获取所述最大簇包含的节点,并获取所述节点的公共父节点,查找所述公共父节点中出现频率最高的公共父节点作为统领节点,并记录所述统领节点对应时间串的节点;
步骤25,将所述公共父节点对应时间串的祖先节点进行标记,查找所述公共父节点的直接子节点,获取第一个被标记的祖先节点作为第一楼节点;
步骤26,获取与所述最大簇对应的时间串的正则式,根据所述正则式查找与所述第一楼节点对应的时间串。
所述的基于时间串的论坛页面信息自动抽取方法,还包括:
步骤27,若未找到与所述第一楼节点对应的时间串,则所述论坛页面为普通多楼页面;
步骤28,对所述统领节点的子节点进行聚类,将包含时间串最多的一簇 作为每楼帖子的统领节点;
步骤29,以所述每楼帖子的统领节点作为根,生成每楼帖子的文件对象模型树,通过所述单楼页面的获取发帖时间信息、用户名信息的方法,获取每楼帖子的发帖时间信息、用户名信息;
步骤30,获取每楼帖子的最大文本密度节点,并根据所述最大文本密度节点的信息,对每楼帖子的节点进行聚类,并根据每个节点包含的文本长度,将所述每楼帖子的节点进行赋权值,将同一簇的每个节点进行权值求和,获取权值和最大一簇的信息;
步骤31,根据所述权值和最大一簇的信息,查找每楼帖子中满足所述信息且具有最大文本密度的节点,将所述节点及其祖先节点标记为关键节点;
步骤32,获取每楼帖子中文本密度最大的关键节点,通过所述步骤29,获取所述文本密度最大的关键节点中权值和最大一簇的信息;
步骤33,查找每楼帖子中包含所述步骤31中的信息,且文本密度最大的节点,将所述节点包含的文本信息进行拼接,以获取正文信息。
所述的基于时间串的论坛页面信息自动抽取方法,还包括:
步骤34,若找到与所述第一楼节点对应的时间串,则所述论坛页面为主楼与跟帖结构不同的多楼页面;
步骤35,通过所述单楼页面的获取发帖时间信息、用户名信息、正文信息的方法,获取所述第一楼节点的发帖时间信息、用户名信息、正文信息。
所述的基于时间串的论坛页面信息自动抽取方法,还包括:
步骤36,通过所述普通多楼页面的获取发帖时间信息、用户名信息、正文信息的方法,获取除所述第一楼节点之外的节点的发帖时间信息、用户名信息、正文信息。
本发明还提出一种基于时间串的论坛页面信息自动抽取系统,包括:
解析模块,用于对所述论坛页面进行文件对象模型解析,并创建文件对象模型树,清除所述文件对象模型树中的无用标签和空标签,其中将所述无用标签和所述空标签对应的节点,标记为非关键节点,以完成清除;
获取单楼页面发帖时间信息模块,根据所述时间串,对所述文件对象模型树进行聚类,生成多个聚类集合,遍历所述聚类集合,获取最大簇,若所述最大簇只包含一个单独节点,则所述论坛页面为单楼页面,根据所述单独节点的 时间串,获取所述单楼页面的发帖时间信息;
查找模块,初始化关键字列表和正则式列表,遍历所述文件对象模型树,获取包含网页地址的新节点,通过所述初始化关键字列表或所述正则式列表,对所述网页地址进行关键字查找或正则式查找;
获取单楼页面用户名信息模块,若所述网页地址包含所述关键字列表中的关键字或所述正则式列表中的正则式,则获取所述新节点及其子节点包含的文本信息,所述文本信息为所述单楼页面的用户名信息。
所述的基于时间串的论坛页面信息自动抽取系统,还包括:获取时间串模块,用于通过正则式获取所述文件对象模型树的所述时间串。
由以上方案可知,本发明的优点在于:
与以往的论坛帖子页面自动抽取方法相比,本发明中提及的方法及系统由于对帖子页面进行了分类,分而治之,利用对论坛这类用户自产生数据的页面最为明显的特征——发布时间(绝大多数论坛页面的楼层信息中都有发表时间这一关键信息),将以往论坛类页面自动抽取算法中很难处理的单楼页面以及主楼跟贴结构不一致的页面做了单独处理,取得了良好的效果,在完全自动化的条件下,达到了93%的抽取正确率。
附图说明
图1A为帖子页面分类算法图;
图1B为帖子页面分类算法图;
图2A为单楼页面提取发帖时间和发帖人用户名信息算法图;
图2B为单楼页面提取发帖正文信息算法图;
图3为主楼与跟帖结构不同的两楼页面提取发帖时间和发帖人用户名信息和发帖正文信息的算法图;
图4A为普通多楼页面提取发帖人用户名信息和发帖时间的算法图;
图4B为普通多楼页面提取发帖正文信息的算法图;
图5为主楼与跟贴结构不同的多楼页面提取发帖时间和发帖人用户名信息和发帖正文信息的算法图。
以下为附图标记:
步骤100为帖子页面分类步骤,包括:
步骤101/102/103/104/105/106/107/108/109/110/111/112/113/114/200/400/500/600;
步骤200为单楼页面提取发帖时间和发帖人用户名信息步骤,包括:
步骤201/202/203/204/205/206/207/208/209/210/211;
步骤300为单楼页面提取发帖正文信息步骤,包括:
步骤301/302/303/304/305/306/307/308;
步骤400为主楼与跟帖结构不同的两楼页面提取发帖时间和发帖人用户名信息和发帖正文信息步骤,包括:
步骤401/402/403/404;
步骤500为普通多楼页面提取发帖人用户名信息和发帖时间和发帖正文信息步骤,包括:
步骤501/502/503/504/505/506/507/508/509/510;
步骤600为主楼与跟贴结构不同的多楼页面提取发帖时间和发帖人用户名信息和发帖正文信息步骤,包括:步骤601/602/603。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的从论坛帖子内容页面中抽取帖子关键数据的方法进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的从论坛帖子内容页面抽取关键信息(发布时间、发帖人、发帖内容)的方法,利用论坛数据基本由用户自产生数据构成,而用户自产生数据又都包含数据产生时间(发帖时间)这一特点,主要基于时间串,对页面进行分类、抽取,很好地解决了之前论坛类页面自动信息抽取方法在处理单楼页面以及主楼跟贴结构不一致页面时表现较差地问题,在实际应用中表现良好,满足了系统的需求。
本发明利用时间串的特性,对页面中的时间串进行聚类,找出最有可能是帖子发布时间的时间串。通过分析找到的时间串的特点,对网页进行分类。具体流程如图1A和图1B所示,具体步骤如下:
步骤101读取网页,创建DOM(文档对象模型,Document Object Model) 树。为了准确的获取时间串所在节点的相关信息、以便于后面的聚类,本发明对网页进行了DOM解析;
步骤102清除无用标签。一些标签明显不属于时间所在的节点集,比如input、noembed、noscript等等,本发明先将这些标签通过标记的方式去掉(标记为NOT_CONTENT_NODE节点);
步骤103清除空标签。主要是一些空节点(DOM树解析时会生成一些空文本节点,可能会影响到后面的文本密度计算),为之后的正文抽取服务,同样是通过标记的方式去除(标记为NOT_CONTENT_NODE节点),避免了对DOM树直接进行删减操作可能带来的程序崩溃;
步骤104通过正则式获取页面中所有的时间串。正则式主要有两种形式:一种是我们经常看到的用来匹配“2013-12-1511:33:52”或者“May 5th2014 11:53”等类型时间串的正则式,比如“(\d{2,4})(\D)(\d{1,2})(\D)(\d{1,2})(\s)(\d{1,2})(\D)(\d{1,2})(\s)*$”;还有一种是用于匹配一些类似于“3天前”、“昨天11:23:15”这种类型时间串的正则式,比如“^(\s)*(((\d{1,2})(\s)*(秒前|分钟前|小时前|天前|日前|年前))(\s)*((\d{1,2})(\D)(\d{1,2})((\D)(\d{1,2}))?)?|(昨天|前天)(\s)*(\d{1,2})(\D)(\d{1,2})((\D)(\d{1,2}))?)(\s)*$”,前者可以比较明确的区分时间串形式的不同,而后者则很困难,因为后者有可能与前者任何一种正则式对应的时间串共同存在于同一个网页中,这里需要对两者分别进行处理,原则是:前者分门别类地统计,而后者匹配出的时间串作为公共的时间串集合加入到前者里面;
步骤105根据时间模式串进行聚类,由时间串所在的节点两两求公共父节点。对于由步骤S4中前者正则表达式匹配出来的每一类时间串集合,分别加上后者的公共时间串集合,然后每一类分别进行聚类。聚类的主要依据是时间串所处节点的相关信息,主要包括父节点的标签名称、class属性,以及其父节点的父节点(the parent node of the parent node)的相关属性,将完全一致的聚为一簇,请注意,由于“几天前”这种类型的时间串所处的节点深度一般会比普通时间串深一层,一般位于同普通时间串在一层的<span>标签里,所以在统计“几天前”这种类型的节点特征时是取该节点的父节点的父节点(假设为node_x)的相关特征,以及node_x的父节点的相关特征;
步骤106取最大簇。遍历相关集合(包括步骤S4中前者正则表达式匹配出来的每一类时间串集合和公共时间串集合),取得最大簇,并记录其对应的时间模式串的正则表达式,为后续的寻找主楼发帖时间做储备;
步骤107判断是否为单楼页面。获取了最大簇所对应的所有节点,如果最大簇中只包含一个节点,则认为文章是单楼页面,则转到步骤200,否则执行步骤109;
步骤109取“最频繁”公共父节点。在步骤107中,获取了最大簇所对应的所有节点,对这些节点进行两两求公共父节点,在得到的所有公共父节点中,找到出现频率最大的一个,这就是本发明所需要寻找的几乎所有帖子的统领节点(如果有的话)并记录该公共父节点对应的时间串所在的节点,这样做的主要依据是:假设各楼层的发帖时间都位于同一层,它们的公共父节点就是不同楼层的统领节点,就算有引用,不同楼层之间引用所在的节点的公共父节点还是所有楼层的统领节点;
步骤110如果最大簇中只有两个节点,而且没有找到公共父节点,执行步骤400此页面为主楼不同(即主楼与跟帖结构不一致)的两楼页面,否则执行步骤111;
步骤111将公共节点所对应的所有时间串节点的祖先节点们标记为FATHER_NODE节点或祖先节点,寻找该公共节点的所有直接子节点;
步骤112找到第一个标记为祖先的节点,作为“第一楼”所在的节点(不一定是第一楼,因为有可能主楼节点特征与跟帖不同,可能主楼还在“第一楼”的前面);
步骤113从DOM树的头部开始遍历,先序遍历到“第一楼”为止;
步骤114根据之前记录的最大簇所对应的正则表达式,寻找是否有相应的时间模式串,如果有,执行步骤600,否则执行步骤500;
步骤600表明主楼还在前面,且与跟帖不同,页面是主楼与跟帖结构不同的多楼页面;
步骤500表明当前的第一楼就是主楼,与跟帖并列,页面就是普通的多楼页面;
通过以上分类算法,将待抽取页面分为四类,下面分别对四种页面进行关键信息抽取:首先,对单楼页面进行发帖时间和发帖人的用户名信息进行抽取, 如图2A所示,步骤如下:
步骤201通过上述分类算法,得到单楼论坛类页面后,如果发帖时间为普通时间串(比如”2014-3-1012:13”),执行步骤203,否则执行步骤202;
步骤202如果发帖时间类似于“三天前”这一类的时间串,则根据此时间节点的子结点中的em节点中的属性进行查找,寻找真正的发帖时间串;
步骤203根据发帖时间串所处的节点直接获取到发帖时间;
通过以下方式获取em节点中的属性:
通常发帖人的昵称、ID等不为空,并且该昵称、ID通常为一个超链接,链接到该用户所对应的个人空间或者个人资料等,因此,本发明通过通过两种方式来确定以上超链接是否为发帖人名字所对应的超链接,一种是通过关键字:
"&uid=","&;uid=","space-uid-","-uid","?uid=","?amp;uid=","&userid=","&;userid=","?userid=","?amp;userid=","/uid=","/userid=","showuserinfomenu","/user/index","?user=","?amp;user=","&;showuser=","uname"。
另外一种是正则表达式:"/u\\d+/","user-\\d+","&u=\\d+","&;u=\\d+"。
以下为对单楼页面抽取发帖时间的具体算法流程:
步骤204初始化关键字列表——vecAuthorKey;
步骤205初始化正则式列表——vecAuthorRegex;
步骤206先序遍历DOM树。对每一个获取到的a标签(注意,由于html标签不区分大小写,所以在处理标签名时,一般将标签名转换为小写后再做处理);
步骤207对于a标签节点,首先,解析后获得href属性内的url,然后,对url进行关键字查找,如果包含vecAuthorKey中的某个关键字,则执行步骤209,否则执行步骤208;
步骤208通过vecAuthorRegex中的正则表达式进行查找,如果找到,则执行步骤209和步骤210,否则执行步骤211;
步骤209需要对标签进行验证,主要是验证以该a标签作为根节点的子树下是否包含文本信息(假设每个发帖人的ID或者昵称不为空),如果包含文本 信息,则执行步骤210,否则执行步骤211;
步骤210获取文本信息,即发帖人的用户名信息;
步骤211返回判别失败。
通过以上发帖人抽取算法,获得了发帖时间和发帖人的昵称(或者用户名信息)。
对于单楼页面,很难通过已经找到的时间串对全体楼层的统领节点进行直接定位,因为没有其它处于同层的并且结构相同的时间节点,无法通过求解时间节点的公共父节点来寻找统领节点,而单楼页面的内容长度可长可短,当作单记录页面抽取,抽取到噪音信息的可能性很大,因此,本发明做了一些处理来尽量避免抽取到噪音信息,以下是具体的算法流程,如图2B所示,包括:
步骤301将发帖时间的父节点全部标记为FATHER_NODE节点,假设发帖时间不会位于正文中,也就是说发帖时间的父节点以及所有祖先节点都不是正文的统领节点,标记为FATHER_NODE的节点说明这些节点底下包含发帖时间或者发帖人,在计算正文统领节点时会忽略这类节点;
步骤302将发帖人的父节点全部标记为FATHER_NODE节点,理由同步骤301;
步骤303找到title中的文本,作为原始标题(这里可以做一些处理,通过取出经由一些分隔符分割的字串,比如“-”,“_”等,去掉“某某版块”、“某某论坛”一类的噪音信息);
步骤304找到疑似标题的标签(“h1”、“h2”、“h3”、“h4”、“b”、“strong”),取出文本,作为候选标题;
步骤305通过基于字符串最长公共子序列的相似度算法来计算候选标题与原始标题的相似性;
步骤306查找到文中的真正标题,并记录标题所在的节点,如果找到,执行步骤308,否则执行步骤307;
步骤307如果找到了标题所在的标签,就从标题之后的节点开始,依次向后遍历,在合理的正文可以出现的位置区间内,从非NOT_CONTENT_NODE节点(步骤S2和S3中的无用标签和空标签)以及非FATHER_NODE节点中寻找文本密度最大的节点包含的文本信息,将其作为正文;
步骤308否则从DOM树的根节点开始,依次向后遍历,在合理的正文可以 出现的位置区间内,从非NOT_CONTENT_NODE节点(步骤S2和S3中的无用标签和空标签)以及非FATHER_NODE节点中寻找文本密度最大的节点包含的文本信息,将其作为正文。
通过以上算法,将单楼页面的关键信息都抽取完毕,然后,开始处理主楼与跟贴结构不同且只有两楼的帖子页面,只有两楼并且两楼的结构还不一样,这样的页面比较特殊。既不能被当作单记录页面进行抽取,又无法利用跟帖相似性来抽取跟帖的内容,针对主楼与跟贴结构不同且只有两楼的帖子页面,本发明专门设计了一种方法,来将网页分成两块,如图3所示,具体步骤如下:
步骤401对于两楼页面,寻找两个时间串所在节点(假设为A节点和B节点)的最低公共父节点,此公共父节点的所有儿子节点中,有两个节点(假设为C节点和D节点)分别是之前两个时间串所在节点的祖先节点,也就是说C节点是A节点的祖先节点,D节点是B节点的祖先节点。取C节点和D节点分别作为第一楼和第二楼的统领节点(即根节点)。
步骤402根据所述两个根节点,生成两个子树,对于以两个楼层的根节点为根的两个子树,看作为两棵独立DOM树,对于两个DOM树分别按照步骤200抽取发帖人、发帖时间以及通过步骤300抽取发帖内容(正文信息)。
通过以上算法,将两楼页面的关键信息抽取完毕,再然后,开始处理普通多楼页面,如图4A所示,首先获取发帖人的用户名信息和发帖时间,具体步骤如下:
步骤501在步骤109中获取所有楼层的根节点之后,对统领节点下的子结点进行聚类,将包含时间串并且个数最多的一簇作为各个楼层的统领节点;
步骤502将各个楼层看作为以其统领节点为根的DOM树,通过步骤200,获取各楼层的发帖时间、发帖人。
针对多楼页面的帖子正文抽取,需要统计各个楼层的文本密度,并对找到的节点进行聚类,找到最有可能是帖子正文所在位置的统领节点,具体步骤如下,如图4B所示:
步骤503首先需要分别找到各楼层自身的统领节点。在之前的页面分类算法中,已经获取了公共父节点,也就是所有楼层共同的统领节点(假设为ConNode),并对各个相应时间串所在节点的祖先节点进行了标记,取出ConNode的所有儿子节点,如果节点已经被标记为时间串的祖先节点,则说明 此儿子节点下面包含时间串,也就是说,此儿子节点是某一楼层的统领节点,取出所有的楼层统领节点;
步骤504抽取第一楼。首先取出第一楼,是因为尽管通过之前的分类,认为主楼与跟帖结构一致,但在现实中,通过之前的分类算法只能保证主楼的所有信息均与跟帖位于同一统领节点之下,并不能保证主楼与跟帖结构特征完全一致,如果每个楼层分别抽取,主楼与跟帖结构是否一致也就无关紧要了,但是需要对各楼层找到的结果进行汇总,并根据节点特征确定各个楼层统一的正文统领节点,而主楼与跟帖结构不一致可能会对之后计算正文的统领节点带来严重的影响,因为主要是通过每楼层找到的正文统领节点下的文本长度来为每个特征的节点加权,主楼不一致并且主楼内容很长可能会对最终正文统领节点的确定带来毁灭性的打击,因此,本发明将第一楼特殊处理;
步骤505计算各楼层的最大文本密度节点。这主要是为了让每一层楼中各个最佳文本得到“出现”的机会,总体来说,在论坛类网页里面,纯文本越长的节点越有可能是正文的一部分;
步骤506分别取出各楼层的最大文本密度节点,根据节点信息(父节点及其“爷爷”节点的标签名加class属性名)对各个节点进行聚类,然后根据每个节点所带的文本长度为节点赋权值,同一簇的各个节点权值求和,最后,找到权值和最大的一簇,并记录其特征或信息。这主要是为了防止部分楼层正文很短,导致噪音信息“上位”,通过多楼合作,能够共同将噪音信息排除在外;
步骤507根据上一步找到的特征,在各个楼层里面寻找满足这个信息的且具有最大文本密度的节点,并将它以及它的各祖先节点标记为CONTENT_NODE节点(顾名思义,是说此节点以及其祖先节点可能是要找的正文统领节点)。这样做是为了给之后使用文本密度和查找正文的统领节点时不至于找偏,现在找到的节点是正文的统领节点,或者是正文的一部分。也就是说,正文统领节点统领的子树必须包含此节点;
步骤508分别取出各楼层拥有最文本大密度且标记为CONTENT_NODE(关键节点)的节点,并像步骤506一样对各个节点进行聚类,然后根据每个节点所带的文本长度为节点赋权值,同一簇的各个节点权值求和,最后,找到权值和最大的一簇,并记录其特征或信息,统计节点,找到最大可能是正文的统领节点的节点信息;
步骤509根据步骤508中取到的节点特征,寻找各楼层拥有该节点特征并且文本密度和最大的节点,如果找不到相应的节点,则按普通的方式遍历寻找拥有最大文本密度的节点;
步骤510将各个楼层找到的节点统领的子树分别拼接成文本,这样,各楼层的正文就抽取完成了。
最后,处理主楼与跟贴结构不同的多楼页面,如图5所示,具体步骤如下:
步骤601找到多楼页面的“第一楼”。(此处第一楼可能是页面中的第二楼,这里的“第一”是指各楼层统领节点之下的第一楼,如果第一楼结构不同的话,有可能真正的第一楼在此统领节点之前);
步骤602在多楼页面之前寻找第一楼的关键信息,通过步骤200和步骤300获取发帖时间、发帖人用户名信息和正文信息;
步骤603抽取除第一楼之外的楼层的关键信息,通过步骤500获取发帖时间、发帖人用户名信息和正文信息。
至此,所有流程均结束。
本发明的系统包括如下模块:
解析模块,用于对所述论坛页面进行文件对象模型解析,并创建文件对象模型树,清除所述文件对象模型树中的无用标签和空标签,其中将所述无用标签和所述空标签对应的节点,标记为非关键节点,以完成清除。
获取单楼页面发帖时间信息模块,根据所述时间串,对所述文件对象模型树进行聚类,生成多个聚类集合,遍历所述聚类集合,获取最大簇,若所述最大簇只包含一个单独节点,则所述论坛页面为单楼页面,根据所述单独节点的时间串,获取所述单楼页面的发帖时间信息。
查找模块,初始化关键字列表和正则式列表,遍历所述文件对象模型树,获取包含网页地址的新节点,通过所述初始化关键字列表或所述正则式列表,对所述网页地址进行关键字查找或正则式查找。
获取单楼页面用户名信息模块,若所述网页地址包含所述关键字列表中的关键字或所述正则式列表中的正则式,则获取所述新节点及其子节点包含的文本信息,所述文本信息为所述单楼页面的用户名信息。
获取时间串模块,用于通过正则式获取所述文件对象模型树的所述时间串。
Claims (10)
1.一种基于时间串的论坛页面信息自动抽取方法,其特征在于,包括:
步骤1,对所述论坛页面进行文件对象模型解析,并创建文件对象模型树,清除所述文件对象模型树中的无用标签和空标签,其中将所述无用标签和所述空标签对应的节点,标记为非关键节点,以完成清除;
步骤2,根据所述时间串,对所述文件对象模型树进行聚类,生成多个聚类集合,遍历所述聚类集合,获取最大簇,若所述最大簇只包含一个单独节点,则所述论坛页面为单楼页面,根据所述单独节点的时间串,获取所述单楼页面的发帖时间信息;
步骤3,初始化关键字列表和正则式列表,遍历所述文件对象模型树,获取包含网页地址的新节点,通过所述关键字列表或所述正则式列表,对所述网页地址进行关键字查找或正则式查找;
步骤4,若所述网页地址包含所述关键字列表中的关键字或所述正则式列表中的正则式,则获取所述新节点及其子节点包含的文本信息,所述文本信息为所述单楼页面的用户名信息。
2.如权利要求1所述的基于时间串的论坛页面信息自动抽取方法,其特征在于,所述步骤1和所述步骤2之间还包括:
通过正则式获取所述文件对象模型树的所述时间串。
3.如权利要求1所述的基于时间串的论坛页面信息自动抽取方法,其特征在于,还包括:
步骤5,对所述单独节点和所述新节点在所述文件对象模型树中的父节点进行标记;
步骤6,查找所述文件对象模型树中的标题节点,提取每个标题节点的标题文本信息;
步骤7,根据所述标题文本信息,查找所述单楼页面的主楼的标题文本信息,并查找所述主楼的所述标题文本信息在所述文件对象模型树中对应的主楼标题节点;
步骤8,若找到所述主楼标题节点,则遍历所述主楼标题节点及其子节点,否则遍历所述文件对象模型树,在除被标记的所述父节点和所述非关键节点之外的节点中,查找文本密度最大的节点,并获取文本信息作为所述单楼页面的 正文信息。
4.如权利要求1或3所述的基于时间串的论坛页面信息自动抽取方法,其特征在于,所述步骤2还包括:
步骤21,若所述最大簇只包含两个节点,且所述两个节点没有公共父节点,则所述论坛页面为主楼与跟帖结构不同的两楼页面;
步骤22,获取所述两楼页面的每楼时间串对应节点的最低公共父节点,获取所述最低公共父节点的儿子节点,查找所述儿子节点中所述每楼时间串的祖先节点,并将所述祖先节点作为根节点,生成两颗文件对象模型树;
步骤23,根据所述两颗文件对象模型树,通过所述单楼页面的获取发帖时间信息、用户名信息、正文信息的方法,获取所述两楼页面每楼帖子的发帖时间信息、用户名信息、正文信息。
5.如权利要求1所述的基于时间串的论坛页面信息自动抽取方法,其特征在于,所述步骤2还包括:
步骤24,获取所述最大簇包含的节点,并获取所述节点的公共父节点,查找所述公共父节点中出现频率最高的公共父节点作为统领节点,并记录所述统领节点对应时间串的节点;
步骤25,将所述公共父节点对应时间串的祖先节点进行标记,查找所述公共父节点的直接子节点,获取第一个被标记的祖先节点作为第一楼节点;
步骤26,获取与所述最大簇对应的时间串的正则式,根据所述正则式查找与所述第一楼节点对应的时间串。
6.如权利要求1或3或5所述的基于时间串的论坛页面信息自动抽取方法,其特征在于,还包括:
步骤27,若未找到与所述第一楼节点对应的时间串,则所述论坛页面为普通多楼页面;
步骤28,对所述统领节点的子节点进行聚类,将包含时间串最多的一簇作为每楼帖子的统领节点;
步骤29,以所述每楼帖子的统领节点作为根,生成每楼帖子的文件对象模型树,通过所述单楼页面的获取发帖时间信息、用户名信息的方法,获取每楼帖子的发帖时间信息、用户名信息;
步骤30,获取每楼帖子的最大文本密度节点,并根据所述最大文本密度 节点的信息,对每楼帖子的节点进行聚类,并根据每个节点包含的文本长度,将所述每楼帖子的节点进行赋权值,将同一簇的每个节点进行权值求和,获取权值和最大一簇的信息;
步骤31,根据所述权值和最大一簇的信息,查找每楼帖子中满足所述信息且具有最大文本密度的节点,将所述节点及其祖先节点标记为关键节点;
步骤32,获取每楼帖子中文本密度最大的关键节点,通过所述步骤29,获取所述文本密度最大的关键节点中权值和最大一簇的信息;
步骤33,查找每楼帖子中包含所述步骤31中的信息,且文本密度最大的节点,将所述节点包含的文本信息进行拼接,以获取正文信息。
7.如权利要求1或3或5所述的基于时间串的论坛页面信息自动抽取方法,其特征在于,还包括:
步骤34,若找到与所述第一楼节点对应的时间串,则所述论坛页面为主楼与跟帖结构不同的多楼页面;
步骤35,通过所述单楼页面的获取发帖时间信息、用户名信息、正文信息的方法,获取所述第一楼节点的发帖时间信息、用户名信息、正文信息。
8.如权利要求6所述的基于时间串的论坛页面信息自动抽取方法,其特征在于,还包括:
步骤36,通过所述普通多楼页面的获取发帖时间信息、用户名信息、正文信息的方法,获取除所述第一楼节点之外的节点的发帖时间信息、用户名信息、正文信息。
9.一种基于时间串的论坛页面信息自动抽取系统,其特征在于,包括:
解析模块,用于对所述论坛页面进行文件对象模型解析,并创建文件对象模型树,清除所述文件对象模型树中的无用标签和空标签,其中将所述无用标签和所述空标签对应的节点,标记为非关键节点,以完成清除;
获取单楼页面发帖时间信息模块,根据所述时间串,对所述文件对象模型树进行聚类,生成多个聚类集合,遍历所述聚类集合,获取最大簇,若所述最大簇只包含一个单独节点,则所述论坛页面为单楼页面,根据所述单独节点的时间串,获取所述单楼页面的发帖时间信息;
查找模块,初始化关键字列表和正则式列表,遍历所述文件对象模型树,获取包含网页地址的新节点,通过所述初始化关键字列表或所述正则式列表, 对所述网页地址进行关键字查找或正则式查找;
获取单楼页面用户名信息模块,若所述网页地址包含所述关键字列表中的关键字或所述正则式列表中的正则式,则获取所述新节点及其子节点包含的文本信息,所述文本信息为所述单楼页面的用户名信息。
10.如权利要求9所述的基于时间串的论坛页面信息自动抽取系统,其特征在于,还包括:获取时间串模块,用于通过正则式获取所述文件对象模型树的所述时间串。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410429698.9A CN104268148B (zh) | 2014-08-27 | 2014-08-27 | 一种基于时间串的论坛页面信息自动抽取方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410429698.9A CN104268148B (zh) | 2014-08-27 | 2014-08-27 | 一种基于时间串的论坛页面信息自动抽取方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104268148A true CN104268148A (zh) | 2015-01-07 |
CN104268148B CN104268148B (zh) | 2018-02-06 |
Family
ID=52159670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410429698.9A Active CN104268148B (zh) | 2014-08-27 | 2014-08-27 | 一种基于时间串的论坛页面信息自动抽取方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104268148B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104834717A (zh) * | 2015-05-11 | 2015-08-12 | 浪潮集团有限公司 | 一种基于网页聚类的Web信息自动抽取方法 |
CN106933827A (zh) * | 2015-12-29 | 2017-07-07 | 北京国双科技有限公司 | 论坛目录页内容解析方法和装置 |
CN107239520A (zh) * | 2017-05-25 | 2017-10-10 | 东北大学 | 一种通用论坛正文提取方法 |
CN107403002A (zh) * | 2017-07-21 | 2017-11-28 | 山东师范大学 | 一种基于词汇关键度的网络论坛正文提取方法、装置 |
CN107590288A (zh) * | 2017-10-11 | 2018-01-16 | 百度在线网络技术(北京)有限公司 | 用于抽取网页图文块的方法和装置 |
CN108205732A (zh) * | 2017-12-26 | 2018-06-26 | 云南电网有限责任公司 | 一种基于文件的新能源预测数据接入的校验方法 |
CN108780462A (zh) * | 2016-03-13 | 2018-11-09 | 科尔蒂卡有限公司 | 用于对多媒体内容元素进行聚类的系统和方法 |
CN110764781A (zh) * | 2019-10-29 | 2020-02-07 | 厦门市美亚柏科信息股份有限公司 | 一种自动解析论坛网站数据的方法 |
CN111104624A (zh) * | 2018-10-25 | 2020-05-05 | 富士通株式会社 | 内容提取方法和设备以及存储介质 |
CN111966901A (zh) * | 2020-08-17 | 2020-11-20 | 山东亿云信息技术有限公司 | 政策类网页正文提取方法、系统、设备及存储介质 |
CN112819513A (zh) * | 2021-01-22 | 2021-05-18 | 北京有竹居网络技术有限公司 | 一种文本链生成方法、装置、设备及介质 |
CN113343140A (zh) * | 2020-03-03 | 2021-09-03 | 四川大学 | 一种基于neo4j图形数据库自动提取网页正文内容的方法 |
CN113392354A (zh) * | 2021-06-28 | 2021-09-14 | 山东亿云信息技术有限公司 | 一种网页正文解析方法、系统、介质及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103116591A (zh) * | 2011-11-17 | 2013-05-22 | 北大方正集团有限公司 | 论坛贴内容抽取方法和装置 |
CN103136358A (zh) * | 2013-03-07 | 2013-06-05 | 宁波成电泰克电子信息技术发展有限公司 | 一种自动抽取论坛数据的方法 |
CN103853770A (zh) * | 2012-12-03 | 2014-06-11 | 北大方正集团有限公司 | 一种抽取论坛网页中帖子内容的方法及系统 |
-
2014
- 2014-08-27 CN CN201410429698.9A patent/CN104268148B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103116591A (zh) * | 2011-11-17 | 2013-05-22 | 北大方正集团有限公司 | 论坛贴内容抽取方法和装置 |
CN103853770A (zh) * | 2012-12-03 | 2014-06-11 | 北大方正集团有限公司 | 一种抽取论坛网页中帖子内容的方法及系统 |
CN103136358A (zh) * | 2013-03-07 | 2013-06-05 | 宁波成电泰克电子信息技术发展有限公司 | 一种自动抽取论坛数据的方法 |
Non-Patent Citations (2)
Title |
---|
张柱山: "基于聚类分析的网络论坛热点话题检测", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
朱佳,张忠能: "一种基于聚类的全自动网页数据记录抽取方法", 《微型电脑应用》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104834717A (zh) * | 2015-05-11 | 2015-08-12 | 浪潮集团有限公司 | 一种基于网页聚类的Web信息自动抽取方法 |
CN106933827A (zh) * | 2015-12-29 | 2017-07-07 | 北京国双科技有限公司 | 论坛目录页内容解析方法和装置 |
CN108780462A (zh) * | 2016-03-13 | 2018-11-09 | 科尔蒂卡有限公司 | 用于对多媒体内容元素进行聚类的系统和方法 |
CN107239520B (zh) * | 2017-05-25 | 2020-07-03 | 东北大学 | 一种通用论坛正文提取方法 |
CN107239520A (zh) * | 2017-05-25 | 2017-10-10 | 东北大学 | 一种通用论坛正文提取方法 |
CN107403002A (zh) * | 2017-07-21 | 2017-11-28 | 山东师范大学 | 一种基于词汇关键度的网络论坛正文提取方法、装置 |
CN107403002B (zh) * | 2017-07-21 | 2020-01-31 | 山东师范大学 | 一种基于词汇关键度的网络论坛正文提取方法、装置 |
CN107590288A (zh) * | 2017-10-11 | 2018-01-16 | 百度在线网络技术(北京)有限公司 | 用于抽取网页图文块的方法和装置 |
CN107590288B (zh) * | 2017-10-11 | 2020-09-18 | 百度在线网络技术(北京)有限公司 | 用于抽取网页图文块的方法和装置 |
US10755091B2 (en) | 2017-10-11 | 2020-08-25 | Baidu Online Network Technology (Beijing) Co., Ltd. | Method and apparatus for retrieving image-text block from web page |
CN108205732A (zh) * | 2017-12-26 | 2018-06-26 | 云南电网有限责任公司 | 一种基于文件的新能源预测数据接入的校验方法 |
CN111104624A (zh) * | 2018-10-25 | 2020-05-05 | 富士通株式会社 | 内容提取方法和设备以及存储介质 |
CN111104624B (zh) * | 2018-10-25 | 2023-08-22 | 富士通株式会社 | 内容提取方法和设备以及存储介质 |
CN110764781A (zh) * | 2019-10-29 | 2020-02-07 | 厦门市美亚柏科信息股份有限公司 | 一种自动解析论坛网站数据的方法 |
CN110764781B (zh) * | 2019-10-29 | 2022-06-14 | 厦门市美亚柏科信息股份有限公司 | 一种自动解析论坛网站数据的方法 |
CN113343140A (zh) * | 2020-03-03 | 2021-09-03 | 四川大学 | 一种基于neo4j图形数据库自动提取网页正文内容的方法 |
CN113343140B (zh) * | 2020-03-03 | 2022-12-13 | 四川大学 | 一种基于neo4j图形数据库自动提取网页正文内容的方法 |
CN111966901A (zh) * | 2020-08-17 | 2020-11-20 | 山东亿云信息技术有限公司 | 政策类网页正文提取方法、系统、设备及存储介质 |
CN112819513A (zh) * | 2021-01-22 | 2021-05-18 | 北京有竹居网络技术有限公司 | 一种文本链生成方法、装置、设备及介质 |
CN113392354A (zh) * | 2021-06-28 | 2021-09-14 | 山东亿云信息技术有限公司 | 一种网页正文解析方法、系统、介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104268148B (zh) | 2018-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104268148A (zh) | 一种基于时间串的论坛页面信息自动抽取方法及系统 | |
CN103544255B (zh) | 基于文本语义相关的网络舆情信息分析方法 | |
CN103914478B (zh) | 网页训练方法及系统、网页预测方法及系统 | |
CN103023714B (zh) | 基于网络话题的活跃度与集群结构分析系统及方法 | |
CN105045875B (zh) | 个性化信息检索方法及装置 | |
Kim et al. | Text: Automatic template extraction from heterogeneous web pages | |
US20090063538A1 (en) | Method for normalizing dynamic urls of web pages through hierarchical organization of urls from a web site | |
US20120102015A1 (en) | Method and System for Performing a Comparison | |
CN103955529A (zh) | 一种互联网信息搜索聚合呈现方法 | |
CN101593200A (zh) | 基于关键词频度分析的中文网页分类方法 | |
CN107885793A (zh) | 一种微博热点话题分析预测方法及系统 | |
CN103823824A (zh) | 一种借助互联网自动构建文本分类语料库的方法及系统 | |
CN103530429A (zh) | 一种网页正文抽取的方法 | |
CN114090861A (zh) | 一种基于知识图谱的教育领域搜索引擎构建方法 | |
CN108874870A (zh) | 一种数据抽取方法、设备及计算机可存储介质 | |
CN103064966B (zh) | 一种从单记录网页中抽取规律噪音的方法 | |
Viet et al. | Analyzing recent research trends of computer science from academic open-access digital library | |
CN112597370A (zh) | 指定需求范围的网页信息自主搜集筛选系统 | |
Kamanwar et al. | Web data extraction techniques: A review | |
CN115982390A (zh) | 一种产业链构建和迭代扩充开发方法 | |
Liu et al. | Clustering-based topical Web crawling using CFu-tree guided by link-context | |
CN114238735B (zh) | 一种互联网数据智能采集方法 | |
CN115640439A (zh) | 一种网络舆情监控的方法、系统及存储介质 | |
Thakare et al. | Extraction of template using clustering from heterogeneous web documents | |
Gkotsis et al. | Self-supervised automated wrapper generation for weblog data extraction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |