首页 文学文摘 时政新闻 科技科普 经济法律 健康生活 管理财经 教育教学 文化艺术 社科历史

论坛正文内容提取通用方法的研究

作者:范媚琳 司明皎 孟媛 来源:科技风

DOI:10.19392/j.cnki.16717341.201714071

摘要:本文提出了一种新颖的通用论坛信息的提取算法。针对标题,利用论坛标题与网页标题相同这一特征提取。针对回帖模块的定位,我们提出了一种称为基于相似性度量和最低公共父节点的边界确定(BDBSL)的算法。针对回帖内容的提取,我们利用该标签所采用的css样式绝大多数都含有minheight属性这一特点进行提取。针对主题帖,利用主题帖独有的分享模块进行单独提取。

关键词:论坛正文提取;BDBSL算法;dom树;html

1 标题的提取

通过查看网页的源代码我们发现,论坛标题总是用来做网页标题,而网页的标题在标签下面的标签中。</p> <p>在100个样例数据中进行验证,成功率高达98%,所以我们采用固定的xpath来提取标题。</p> <p>2 BD-BSL算法确定回帖所在的模块</p> <p>2.1 DOM树的使用及锚节点的提出</p> <p>对于一给定URL的论坛,我们可以通过它的URL提取到它的HTML源代码,进而生成与源代码相对应的DOM树。</p> <p>通过分析大量论坛发现,同一论坛中所有回帖各部分内容对应的标签格式是相一致的。假设论坛中所有的回帖都包含同一个属性N,回帖数量有M个,则DOM树中至少有M个节点为属性N的标签。通过分析随机选取的100个论坛样例,我们发现所有论坛的所有回帖都包含“发布时间”(PT)这一属性,因此,我们选取PT作为属性N,它的标签所对应的DOM树中的节点作为锚节点。假设锚节点的数量是m(m>1)。</p> <p>下文中,我们将一个回帖模块记为一项数据记录(DR)。</p> <p>2.2 相似度分析聚类确定哪些锚节点是属于DR部分的有效锚节点</p> <p>Step1 构造相似性矩阵M1</p> <p>从锚节点出发依次经过它的所有祖先节点一直到达树的根节点会形成一条路径,将这条路径上的所有节点对应的标签按照经过的先后次序提取出来形成一个序列。前文中我们假设锚节点数量为m,因而最终会形成m个序列,对于在DOM树中从左到右依次出现的m个锚节点项分别标号为1,2,…m。</p> <p>接下来,构造一个m×m的矩阵M1。对这m个锚节点两两进行相似性分析,形成一个相似性分值作为相似性矩阵对应位置的值(m1ij是第i个锚节点提取到的序列和第j个锚节点提取到的序列的相似性分值,这个值处在矩阵的第i行第j列)。m1i j 介于01之间,其值越接近于1,相似度越大。</p> <p>Step2 构造相似性矩阵M2</p> <p>除了要对上一步形成的序列做相似性分析之外,我们注意到,锚节点的直接父节点通常不止有锚节点一个子节点。此外,大部分锚节点的兄弟节点依然会向下拓展形成多个子节点,显然,对这些兄弟节点及它们的的子节点做相似性匹配也是很有必要的。基于此,我们构造了一个m×m的相似性矩阵M2。</p> <p>接下来,对锚节点所在的直接子树做相似性分析。锚节点的直接子树涵盖范围如图1。</p> <p>图1 锚节点的直接子树覆盖范围(蓝色圆圈为锚节点)</p> <p>M2矩阵中存储的值是每两个锚节点的所<b class="dmOEnQrwW4qKsk/T+ycHidITBI0="></b>在的直接子树的相似性分值m2i j (i,j = 1,2, … ,m)。</p> <p>Step3 通过M1和M2构造最终相似性矩阵M</p> <p>通过矩阵M1和M2得到矩<code name="Nd1iU4CPLW+4HaGsAGKfk6fO83w="></code>阵M相应位置的值mi j 。即:</p> <p>mi j = m1i j + m2ij 2(i,j = 1,2, … ,m)</p> <p>通过矩阵M我们便可以知道任意两个锚节点之间的相似性分值。</p> <p>Step4 基于贪婪策略的聚类分析</p> <p>在此,我们将对锚节点做聚类分析。首先,设定一个阈值Χ作为衡量相似的指标,若第一个锚节点和第二锚节点的相似度大于Χ,则认为它们之间有较高的相似性从而将其分类为新的簇。然后,继续与第三个锚节点进行比较,只要相似度符合条件,就将锚点放在包含第一个锚节点的群集上。重复执行该操作,直到所有节点与其余节点聚集。</p> <p>最终我们把最长的簇里面的锚节点确定为有效的锚节点。</p> <p>2.3 BD-BSL算法确定回帖边界</p> <p>我们对每一个锚节点向上遍历寻找它的父节点并进行比对,直到找到一个共同祖先节点,这个节点就是所有锚节点的最低公共父节点(LCN)。</p> <p>任意一个锚节点Ni,Ni以上,LCN以下部分便是一个DR的模块。</p> <p>3 回帖内容的提取</p> <p>在论坛网页中,用户回复内容区域被分配固定的一块大小。我们查看其对应标签的class并在层叠样式表(css)中查找该class的属性,发现minheight就是定义内容区域大小默认值的属性。为了证明这个属性可以被用来作为提取内容的标准,我们做了检验,成功率约为90%。</p> <p>4 主题帖的提取</p> <p>利用主题帖独有的分享模块提取主题帖。分析分享模块的标签,发现它们往往处于类似“<div class~=“share”>”的标签中。我们人工分析了50个论坛,大多数主贴都符合情况。</p> <p>5 结语</p> <p>用我们的方法进行通用论坛正文提取是可行的,但是需要进一步的优化。比如对于帖子数较少的网页提取成功率会降低。</p> <p>参考文献:</p> <p>[1]Song X,Liu J,Cao Y,et al.Automatic extraction of web data records containing usergenerated content[C].ACM International Conference on Information and Knowledge Management.ACM,2010:3948.</p> <p>[2]苏秀芝.网页去噪与特征提取算法的研究及实现[D].西南交通大學,2010.</p> </p> </div> </div> </div> </div> </div> <div class="right"> <div class="top"> <a href="/tag-0"><img src="/img/part_pic1.jpg?v=2"/></a> <a href="/tag-1"><img src="/img/part_pic2.jpg?v=2"/></a> <div class="cl"></div> </div> <div class="recom"> <div class="title"> <span>热门推荐</span> </div> <ul class="ul1"> <ul class="ul1"> <li><em class="top3">1</em><a href="#" class="l">[食品与健康]</a><a href="/info/YX3mnRu8uBA=" target="_blank">孕妇可以吃微波炉加热的食物吗?</a></li> <li><em class="top3">2</em><a href="#" class="l">[食品与健康]</a><a href="/info/1CMCLc+JqkU=" target="_blank">吃菠菜可以补铁吗?</a></li> <li><em class="top3">3</em><a href="#" class="l">[食品与健康]</a><a href="/info/C3@UZQwzZTw=" target="_blank">吃菠菜可以补铁吗?</a></li> <li><em>4</em><a href="#" class="l">[食品与健康]</a><a href="/info/O3EYSJHYx0g=" target="_blank">锁住营养的速冻食品</a></li> <li><em>5</em><a href="#" class="l">[食品与健康]</a><a href="/info/2c1PQjivBBk=" target="_blank">锁住营养的速冻食品</a></li> <li><em>6</em><a href="#" class="l">[食品与健康]</a><a href="/info/kS8P2lxYcHg=" target="_blank">心若年轻 岁月不老</a></li> <li><em>7</em><a href="#" class="l">[食品与健康]</a><a href="/info/k+dPV7OqQ28=" target="_blank">心若年轻 岁月不老</a></li> <li><em>8</em><a href="#" class="l">[食品与健康]</a><a href="/info/Wu4Mn61yc88=" target="_blank">老年朋友不要盲目“被种草”</a></li> <li><em>9</em><a href="#" class="l">[食品与健康]</a><a href="/info/nZibq5d3RGw=" target="_blank">老年朋友不要盲目“被种草”</a></li> <li><em>10</em><a href="#" class="l">[食品与健康]</a><a href="/info/CBqYmA6KMOQ=" target="_blank">做好心理定位和谐亲子关系</a></li> </ul> </ul> </div> <div class="recom book_ce"> <div class="title"> <span>电子杂志</span> <a href="/book">更多 +</a> </div> <ul class="ul2"> <li><a href="/book/食品与健康"><img src="https://img1.qikan.com/qkimages/spjk/spjk202007-z.jpg"/></a></li> <li><a href="/book/企业科技与发展"><img src="https://img1.qikan.com/qkimages/qyfz/qyfz202005-z.jpg"/></a></li> <li><a href="/book/现代电子技术"><img src="http://alicdn.hnyunji.com/buzhibushi.com/book/moet201814-z.jpg"/></a></li> <li><a href="/book/决策探索"><img src="http://alicdn.hnyunji.com/buzhibushi.com/book/jcts201810-z.jpg"/></a></li> <li><a href="/book/南方文坛"><img src="http://alicdn.hnyunji.com/buzhibushi.com/book/nflt201803-z.jpg"/></a></li> <li><a href="/book/办公室业务"><img src="http://alicdn.hnyunji.com/buzhibushi.com/book/bgsy201806-z.jpg"/></a></li> <li><a href="/book/现代装饰"><img src="http://alicdn.hnyunji.com/buzhibushi.com/book/xdza201612-z.jpg"/></a></li> <li><a href="/book/电子技术与软件工程"><img src="http://alicdn.hnyunji.com/buzhibushi.com/book/djrg201805-z.jpg"/></a></li> <li><a href="/book/神州·中旬刊"><img src="http://alicdn.hnyunji.com/buzhibushi.com/book/snzo201807-z.jpg"/></a></li> <li><a href="/book/当代作家评论"><img src="http://alicdn.hnyunji.com/buzhibushi.com/book/ddzp201706-z.jpg"/></a></li> </ul> </div> </div> <div class="cl"></div> </div> <div id="foot"> <div class="foot_t"> <img src="/img/foot_logo.png" alt="" /> <a href="/">首页</a> <a href="/column-1">文学文摘</a> <a href="/column-2">时政新闻</a> <a href="/column-3">科技科普</a> <a href="/column-4">经济法律</a> <a href="/column-5">健康生活</a> <a href="/column-6">管理财经</a> <a href="/column-7">教育教学</a> <a href="/column-8">文化艺术</a> <a href="/column-9">社科历史</a> <div class="cl"></div> </div> <div class="foot_b"> Copyright © 2018 www.buzhibushi.com Inc. All Rights Reserved. </div> </div> </div> <div style="display:none"> <script type="text/javascript">var cnzz_protocol = (("https:" == document.location.protocol) ? " https://" : " http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1274378079'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s22.cnzz.com/stat.php%3Fid%3D1274378079' type='text/javascript'%3E%3C/script%3E"));</script> </div> </body> </html>