蛙蛙推荐:基于标记窗的网页正文提取算法的一些细节问题
蛙蛙推荐:基于标记窗的网页正文提取算法的一些细节问题
网页的正文提取有好多种算法,有基于视觉的,基于标记窗的,基于双层决策等算法,这里讨论一些基于标记窗的算法(相对简单且效果还好)的相关细节问题,如下
问题:如何提取一个网页的标题
思路:提取网页的title,提取网页的meta里的keyword,提取网页里的所有h标签,先用title和keyword比,把title里的 keyword去掉,因为某些网站做SEO,在keyword和title里都有关键词堆叠,所以去掉重复的项,一般就是网页内容的标题了。一般一个网站的所有网页的keyword都相同,但碰上每个网页的meta keyword和本页内容相关这个算法就不灵了。然后再计算裁剪后的title和h标签(有限h1,h2次之)里提取的文本的文本相似度或者编辑距离,如果少于某个阈值,这个h标签的文本就是网页的标题。另外还要考虑title和正文标题一点关系都没有的情况。提取标题的算法有好多不可靠性,实在不行就直接去title了。
问题:如下文字,两个横杠之间的文字,
==================================================
<div>没有花香,
没有树高</div><td>((: 那就等 着沦陷吧,如果爱情真伟大</td>
<div>我早已为你种下<b>九百九十九</b>多 玫瑰</div>
<div>妹妹你坐船头,<td>哥哥我岸上走sdf</td></div>
==================================================
用正则分成以下几组字符串,引号引住的部分
1、"没有花香,\r\n没有树高"
2、" 那就等着沦陷吧,如果爱情真伟大"
3、"我早已为你种下九百九十九多玫瑰"
4、"妹妹你坐船头,哥哥我岸上走sdf"
5、"哥哥我岸上走sdf"
思路:其实就是取出html容器标签(td,div,span,p等)里的汉字部分,并且如果是嵌套容器的话,最里层的匹配一个分组,一直向外,每层算一个分组,最后把每个分组弄成一个字符串的列表
问题:如何用正则把一段html文本块取出其带格式的文本
思路:首先要去掉修饰性标签,<b>,<font>还有<img>等,其次要把<br>替换成\r\ n, 替换成空格,再把<srcipt><style>等标签及其中间的字符都去了,想<a title="嘿嘿">这个标签里的"嘿嘿"不能算是正文,正文中的链接不能去掉,要改成“百度(http://www.baidu.com)”这样的格式,否则提取文本后链接信息就没了。
问题:一个标题和多个正文,如何用程序来判断这个标题属于这个正文的
思路:把标题用中科院分词系统分词,然后去除停止词,然后根据词性标注把实词取出来,记为S,然后看每个正文里S里的每个词出现的次数,无论哪个词,取出现次数最多的那个正文就是这个标题的正文,我觉得这个思路比把标题和正文都切词后用编辑距离比较的算法更准一些,而且正文和标题切词后是两个字符串数组,两个字符串数组貌似没有现成的算法算他们之间的距离的。
问题:有若干段儿html文本块,去掉大多数为超链接的文本块
思路:先算出每个文本块中所有汉字的数量,再算出每个文本块中被<a>标签包围的汉字数量,如果这两个值的比例大于某个阈值,就删除这个文本块
以上几个文本解决后,网页的正文提取就能做的差不多了,最起码有百分之七八十的正确率吧。大家有兴趣和我一起解决哦,呵呵呵。
网页的正文提取有好多种算法,有基于视觉的,基于标记窗的,基于双层决策等算法,这里讨论一些基于标记窗的算法(相对简单且效果还好)的相关细节问题,如下
问题:如何提取一个网页的标题
思路:提取网页的title,提取网页的meta里的keyword,提取网页里的所有h标签,先用title和keyword比,把title里的 keyword去掉,因为某些网站做SEO,在keyword和title里都有关键词堆叠,所以去掉重复的项,一般就是网页内容的标题了。一般一个网站的所有网页的keyword都相同,但碰上每个网页的meta keyword和本页内容相关这个算法就不灵了。然后再计算裁剪后的title和h标签(有限h1,h2次之)里提取的文本的文本相似度或者编辑距离,如果少于某个阈值,这个h标签的文本就是网页的标题。另外还要考虑title和正文标题一点关系都没有的情况。提取标题的算法有好多不可靠性,实在不行就直接去title了。
问题:如下文字,两个横杠之间的文字,
==================================================
<div>没有花香,
没有树高</div><td>((: 那就等 着沦陷吧,如果爱情真伟大</td>
<div>我早已为你种下<b>九百九十九</b>多 玫瑰</div>
<div>妹妹你坐船头,<td>哥哥我岸上走sdf</td></div>
==================================================
用正则分成以下几组字符串,引号引住的部分
1、"没有花香,\r\n没有树高"
2、" 那就等着沦陷吧,如果爱情真伟大"
3、"我早已为你种下九百九十九多玫瑰"
4、"妹妹你坐船头,哥哥我岸上走sdf"
5、"哥哥我岸上走sdf"
思路:其实就是取出html容器标签(td,div,span,p等)里的汉字部分,并且如果是嵌套容器的话,最里层的匹配一个分组,一直向外,每层算一个分组,最后把每个分组弄成一个字符串的列表
问题:如何用正则把一段html文本块取出其带格式的文本
思路:首先要去掉修饰性标签,<b>,<font>还有<img>等,其次要把<br>替换成\r\ n, 替换成空格,再把<srcipt><style>等标签及其中间的字符都去了,想<a title="嘿嘿">这个标签里的"嘿嘿"不能算是正文,正文中的链接不能去掉,要改成“百度(http://www.baidu.com)”这样的格式,否则提取文本后链接信息就没了。
问题:一个标题和多个正文,如何用程序来判断这个标题属于这个正文的
思路:把标题用中科院分词系统分词,然后去除停止词,然后根据词性标注把实词取出来,记为S,然后看每个正文里S里的每个词出现的次数,无论哪个词,取出现次数最多的那个正文就是这个标题的正文,我觉得这个思路比把标题和正文都切词后用编辑距离比较的算法更准一些,而且正文和标题切词后是两个字符串数组,两个字符串数组貌似没有现成的算法算他们之间的距离的。
问题:有若干段儿html文本块,去掉大多数为超链接的文本块
思路:先算出每个文本块中所有汉字的数量,再算出每个文本块中被<a>标签包围的汉字数量,如果这两个值的比例大于某个阈值,就删除这个文本块
以上几个文本解决后,网页的正文提取就能做的差不多了,最起码有百分之七八十的正确率吧。大家有兴趣和我一起解决哦,呵呵呵。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2007-04-09 蛙蛙请教:关于rdl图表边框设置的问题
2007-04-09 蛙蛙请教:问两个关于剪贴板乱码和桌面工具栏开发的问题