前言

好久没有更新博文了,三月份、四月份都在为春招而呕心准备,期间巩固了 java 基础知识、Android 基础知识以及计算机相关的课程知识。

说回正题,四月末的时间参加了一个数据挖掘竞赛:第五届泰迪杯数据挖掘挑战赛
现在写一篇博文分享一下这次参赛经历吧。

泰迪杯官网:http://www.tipdm.org/bdrace/index.html

有兴趣可以看看。

可选题目

可选题目有三道,分别是:

A 题 基于市场资金流向分析的商品期货量化交易策略

A 题分析:

A 题涉及金融相关知识,这是绝大多数计算机学生的短板,坦诚地说,很多金融关键词根本看不懂,所以直接跳过。

B 题 中央空调系统的数据分析与控制策略

B 题分析:

B 题 中央空调系统的数据分析与控制策略
相对于 A 题 来说,算是有一定的认识,题目和去年第四届泰迪杯的 B 题
铁路旅客流量预测 有一定的共同点。但是鉴于小组三人数学物理功底都不咋地,所以果断放弃这题。

C 题 通用论坛正文提取

C 题分析:

终于看到一道涉及 编程 的题目了,简单分析了题目,题目要求是一个通用的(也就是说得适合绝大多数的)论坛正文提取程序嘛,接下来就是深入分析如何去实现这个程序即可。

总的来说,就是对于任意 BBS 类型的网页,获取其 HTML 文本内容,设计一个智能提取该页面的主贴、所有回帖的算法。如下面的网页截图所示,提取主贴和回帖的区域,提取出相应数据字段(只需要提取文本, 图片、视频、音乐等媒体可以直接忽略),并按规定的数据格式(Json 格式)存储。

看看举办方给的示例:

示例提取这个论坛帖子的内容:
http://x.heshuicun.com/forum.php?mod=viewthread&tid=80

如图:

其中官方提取结果如下

http://x.heshuicun.com/forum.php?mod=viewthread&tid=80
{"post": {"content": "本帖最后由 临风有点冷 于 2012-7-27 08:26 编辑 从这条新闻中你得到了什么教训 在网上看个新闻,大概内容是:老公买了一只藏獒幼仔,没时间养,一直是老婆在养;一次老公老婆吵架,老公把老婆打了,结果藏獒冲出来果断把老公手咬断了! 看完新闻我问老公:“从这条新闻中你得到了什么教训?” 本想听他说不能打老婆,没想到这货居然说:“ 游客,如果您要查看本帖隐藏内容请回复”","title": "从这条新闻中你得到了什么教训?","publish_date": "20120727"},"replys": [{"content": "的分数高如果认购二哥让他退给我","title": "从这条新闻中你得到了什么教训?","publish_date": "20160904"},{"content": "1231231231321321","title": "从这条新闻中你得到了什么教训?","publish_date": "20161115"},{"content": "","title": "从这条新闻中你得到了什么教训?","publish_date": "20161208"}]
}

细心的朋友应该可以看出,官方给出的示例也是很有问题的,因为很容易看到帖主的内容提取少了(漏了 “打老婆时要把狗栓好!”),而且还提取到了不该提取的内容(如:游客,如果您要查看本帖隐藏内容请回复)。

可见举办方出题方并没有很严谨,示例显然不完美(也许就没打算我们做的多完美吧),更恐怖的是最后官方给出的结果验证数据的 Json 示例连格式都是错的。

接着分析,提取网页中的关键信息,通常的做法是,人工分析每个网页的源代码,找到特定内容对应的标签,通过标签匹配或其他关键字匹配的方法从网页源代码中获取到我们所需要的数据。

但是,不同网站网页所使用的网页格式、网页结构和标签体系都可能是不一样的,对于从互联网中获取的海量网页的批量处理,已经不能利用传统的方法去对每个有差异的网页逐一做人工分析。

不过我们可在传统做法的基础上加以演进,设计一个基于特征提取的机器学习模型,并对模型进行训练,给模型“灌输知识”,从而设计出一个相对智能提取网页正文的算法。

利用大部分网页都是以 HTML 格式文档存在这一特性,我们可使用各数据字段(主贴和回帖中标题,正文,时间等)的 Xpath 路径作为各数据字段的特征,参考决策树、模糊匹配等方法的思想设计各数据字段的学习算法模型,收集大量论坛网页的 HTML 文本作为训练样本有监督地对模型进行训练,得到题目要求算法。

模型假设

  • 假设所有论坛网页无需用户登录即可获取论坛内容;
  • 假设所有论坛网页没有使用诸如请求重定向,防盗链等反爬虫手段;
  • 假设所有论坛网页未经过加密;
  • 假设所有论坛使用的常用编码格式(GBK、UTF-8等);

当然这假设挺瞎扯淡的,尼玛这不就是最理想情况了吗?

样本进行训练

训练全程需要人工干预,具体过程如下:对于大量的 BBS 论坛网页样本,人工找到主贴正文内容,提取对应的 Xpath 路径(提取特征),所有主贴正文 Xpath 路径组成正文知识集(记为集合U)。
其他数据字段训练过程和正文训练过程一致,在此不重复描述。

构建获取各数据字段的算法

(以正文为例)对于任意的BBS论坛网页正文字段,查找网页中是否存在可以使用集合U 中 Xpath 表达式表达的节点,若存在,则直接获取 Xpath 节点内的文本内容作为对应数据字段,若不存在,则使用模糊匹配法。具体流程图如下:

其他数据字段的内容用相同的方法即可获得。

优缺点:

缺点:

在训练样本较少的情况下,准确率会有所降低。在训练样本过多的情况下,准确率相对较高。
训练完全采用人工训练,工作量较大。
部分干扰字符没有过滤掉。

优点:

使用 Python Scrapy 多线程分布式爬虫框架,大大提高爬取效率。
使用 XPath 替代正则匹配,程序更加简洁清晰。

结果示例

http://bbs.9game.cn/thread-21014570-1-1.html%0A {"post": {"content": "今天打恶魔深渊不知道什么原因开头四分多没让进去了还有一分多钟的时候自己就进去了坑了队友也坑了自己什么原因呀求大神给解释下","publish_date": "发表于 2016-11-1 10:11:45","title": "恶魔深渊拿不到经验"},"replys": [{"content": "楼主大大您好,恶魔深渊组队进入副本是要确认的,您是否是一开始没有点击确认进入后来又进入了呢,或者是因为网络的原来导致没有能够正常进入呢,请您多多留意下这方面的问题呢,感谢您的咨询, 祝您生活愉快~","publish_date": "发表于 2016-11-1 10:18:27","title": "恶魔深渊拿不到经验"},{"content": "我也遇到过类情况。。。","publish_date": "发表于 2016-11-1 10:23:49","title": "恶魔深渊拿不到经验"}]
}

后话

由于刚接触数据挖掘、机器学习,可能有的概念没有很好的把握,文章有不妥的地方欢迎指教哈。

欢迎关注我的公众号,一起学习一起飞。

【数据挖掘】通用论坛正文提取相关推荐

  1. 泰迪杯数据挖掘挑战赛C题 通用论坛正文提取

    参与第五届泰迪杯,侥幸获得二等奖,简单记录一下. 一.问题的背景 在当今的大数据时代里,伴随着互联网和移动互联网的高速发展,人们产生的数据总量呈现急剧增长的趋势,当前大约每六个月互联网中产生的数据总量 ...

  2. 网页详情页通用提取——通用新闻网站正文抽取器

    页面标题的爬取 以及页面text的爬取 python 新闻网站通用爬虫 GNE(GeneralNewsExtractor)是一个通用新闻网站正文抽取模块,输入一篇新闻网页的 HTML, 输出正文内容. ...

  3. php网页正文提取,通用网页正文抓取工具_任意网页正文提取API

    ArticleExtractor 智能提取任意网页正文内容 无需任何规则,输入目标内容面url地址(网站首页.列表页面除外),可轻松实现对任意新闻网页正文智能提取,并去除广告等与正文无关的内容. 提取 ...

  4. php 正文提取算法,基于机器学习的网页正文提取方法

    摘  要: 先将网页转换为规范的DOM树,然后计算每行文本的文本密度.与标题相关度等值,并将其作为输入参数利用BP神经网络进行训练,进而形成抽取规则,最后通过实验验证该方法的可行性. 关键词: 信息提 ...

  5. 案例:Oracle dul数据挖掘 磁盘损坏dul提取数据文件中表的数据及l

    通过使用Oracle DUL工具提取损坏磁盘里的数据库文件中的表及lob字段中内容 在有次8i的库恢复中,因为硬盘损坏导致几个表出现很多诡异性坏块,尝试使用dul对其进行挖掘数据,当时使用dul 9 ...

  6. 分词 正文提取 java

    java实现一个分词的功能,也就是正文提取关键词. 可以看下这个 http://ictclas.nlpir.org/ 下载后执行例子 一直提示 初始化失败 刷新后err提示 Not valid lic ...

  7. oracle dul 扫描磁盘,案例:Oracle dul数据挖掘 磁盘损坏dul提取数据文件中表的数据及l...

    天萃荷净 通过使用Oracle DUL工具提取损坏磁盘里的数据库文件中的表及lob字段中内容 在有次8i的库恢复中,因为硬盘损坏导致几个表出现很多诡异性坏块,尝试使用dul对其进行挖掘数据,当时使用d ...

  8. Graccvs文件正文提取开发组件--文件内容搜索的利器

    Graccvs组件为Lucene/CLucene, Elasticsearch, Sphinx等全文检索工具,OA, ERP, CRM,网盘,文件管理等其他系统提供文件摘要及搜索前置服务.可以为安全网 ...

  9. Delphi文件正文提取开发组件--文件内容搜索的高效工具

    Graccvs文件正文提取开发组件支持各种文件提取正文,为Lucene/CLucene, Elasticsearch, Sphinx等全文检索工具,为OA,ERP,CRM系统使用文件提供文件正文使用和 ...

  10. html提取正文,网页正文提取工具Readability

    什么是Readability? 如果你在网上看到一篇不错的文章想收藏起来稍后再读,却又不想同时保存那一大堆花花绿绿的广告或无关紧要的一些网页元素,那么你可以试试 Readability 了! Read ...

最新文章

  1. 自学python可以找到好的工作吗-通过自学python能找到工作吗
  2. Ubuntu apt 卸载详解
  3. Java设计模式--策略模式
  4. C#常见委托のdelegate定义,Func,Action,Predicate总结
  5. html中offsetTop、clientTop、scrollTop、offsetTop
  6. Android定位地图导航——基于百度地图,实现自定义图标绘制并点击时弹出泡泡...
  7. 记录|深度学习100例-卷积神经网络(CNN)minist数字分类 | 第1天
  8. dot全称_求魔兽世界中的缩写全称
  9. 最优秀的六种造字方法
  10. 「硬见小百科」100个示波器基础知识问答
  11. 大象进冰箱和软件设计的关联性
  12. 视频抽帧为图片和一系列图片转换为视频
  13. Testin云测试在智能测试领域的探索实践
  14. 这3个今日头条常见的赚钱方法,掌握后,月入过万都不难
  15. php如何动态为input赋值,input动态赋值后怎么触发change事件
  16. Java虚拟机:Java虚拟机编译器
  17. MW150UH驱动程序Linux,水星MW150UH无线网卡驱动程序
  18. 注册域名需要提供什么证件?
  19. java.lang.ClassCastException: xxx.User cannot be cast to
  20. klouderr什么意思_tackle是什么意思_tackle的翻译_音标_读音_用法_例句_爱词霸在线词典...

热门文章

  1. 图解密码技术(一)密码
  2. 各个省份城市HTML,省份城市的三级联动.html
  3. halcon教程之VisionPro软件和Halcon软件 的详细对比
  4. 印刷质量缺陷的视觉检测原理概述
  5. ureport2项目使用
  6. 使用Postman工具进行简单的Get/Post测试
  7. c语言sinx幂级数展开,求幂级数展开式的方法
  8. TCTrack: Temporal Contexts for Aerial Tracking
  9. Linux大批量文件rm命令无效
  10. php聊天功能界面,php实现聊天室功能完整代码