更新:其实这篇博客我本意是不想再写了,因为这篇的思路真的太偏研究了,不能直接上手应用。按说我这个博客浏览量很低,不过还是有那么一些人在看,当时我在做这一部分的时候相关资料也真的很少,所以我还是准备把这个再完善下,添加了一种可以快速上手的方法,这种方法我自己做了测试,效果还不错,但是后来这个项目缺少投资不再开发了,所以我也没有再继续完善它了。
最近在做的项目提出了个需求,仅以此文记录。
- 项目背景:对售假人员进行搜索,爬取其所在公司,关联人员(如上级等),并关联相关售假公司,爬取相应信息。
- 举例:给出的售假人员张三,他所在的公司有位合伙人李四,李四同时还经营多家公司,爬取张三的基本信息,再根据所爬取到的张三所在公司,爬取关联人员——李四。由李四出发,爬取李四相关的公司。
- 需求:网页爬取到相关联公司误报率较高,需降低误报率。目前所使用确认关联算法:搜索待确认公司,若其与张三出现在同一页面,认为该公司为关联公司。但有可能存在广告页等,该公司可能仅仅在网页上打广告。
- 目前思路:1、爬取天眼查等公司信息公示网站,从而得到公司信息。优点:准确率高。缺点:天眼查反爬虫做的太好了…… 2、使用文本分析方法,进行关系提取。优点:方便操作。缺点:技术难度较高
如果有别的朋友也做这方面的研究欢迎交流哇!
天眼查信息爬取
由于我的需求不需要大量爬取天眼查的网页,因此爬取起来不是很难。要注意的是爬的时候一定要导入cookies,不然不知道啥时候就跳到登陆界面了。
这种方法确实简单,直接就爬到了keyword的合伙人、公司、手机号、etc。站在巨人的肩膀上啊。
天眼查本身的搜索方法不外乎是爬取各省市的工商网站,把信息保存到数据库中,再进行分析统计,即可给出关系网。如果采用这种方法解决我当前的需求未免杀鸡用牛刀了,直接爬取天眼查的数据又未免太投机取巧,因此我还是继续研究实体关系提取方法。
天眼查网站的反爬虫做的很厉害,要注册要验证码,用这种方法的难点就全在爬虫上了,对我这种不擅长爬虫的小白来说费的功夫绝不比nlp的方法少。。大家按需处理吧
基于特征学习的关系提取方法
目前主流的关系提取方法包括基于神经网络、深度学习的提取方法。贴几个参考链接方便学习。
主流方法介绍
文献综述
现有的关系提取方法包括有监督学习方法、半监督学习方法、无监督学习方法和开放式抽取方法。
有监督的学习方法包括基于规则的、基于特征的与基于核函数的方法。
无监督实体关系抽取方法无需依赖实体关系标注语料,其实现包括关系实例聚类和关系类型词选择两个过程。
半监督实体关系抽取方法从包含关系种子的上下文中总结出实体关系序列模式,然后利用关系序列模式去发现更多的关系种子实例,形成新的关系种子集合。重复上述过程,迭代得到实体关系实例和序列模式。
开放式实体关系抽取能避免针对特定关系类型人工构建语料库,可以自动完成关系类型发现和关系抽取任务。
利用NLTK和Stanford NLP工具进行信息去重
整个过程可以分为内容过滤、分段、分句、实体关系抽取几部分。
- 内容过滤:利用html标签提取内容,匹配keyword所在的父标签的全部文字。这样一来可以过滤掉很多不相干信息。
- 分段:分段主要有两种思路,一是直接按文字内容中的\n\r进行分割,二是匹配公司名称,按公司名称进行分割。因为我的诉求是广告页去重,所以对我来说第二种方法的准确率更高,可以完美的得到我想要的keyword所在公司的内容,剔除其他不相关公司
- 分句:现有的各种nlp工具都提供了分句功能,nltk提供的tokenize方法就很好用,其他的工具我就没有再尝试了
- 实体关系抽取:stanford NLP的教程网上很多,它提供的句法依存分析功能可以很好的对文本进行分析,形成树形结构,从而得到联系人与公司之间的关系,完美解决了我的诉求。我最近在做的知识图谱也需要提取关系,所以我最近尝试了很多工具,pyltp也很好用。
啊上班时间写博客总有种摸鱼的感觉。。。就先简单陈述了流程,如果有这方面需求的朋友可以评论,我再详细描述我的整个测试过程。