NLP的应用:信息抽取

这一summary的主要内容来源于Stuart&Norvig的chap22.

信息抽取:一个通过浏览文本获取特定对象,以及对象与对象之间相互关系的过程。

信息抽取的典型案例:

1. 淘宝/亚马逊从数据库中提取数据并发布到网页。

2. 从网页中提取消费者信息

3. 从大量的财务报表中提取相关的金融资讯

4. 从浩如烟海的有机化学合成论文里提取我们想要的制备某种药用化合物的路径

……

要完成这个目标,存在几种算法。

一。基于有限状态机的信息提取

更多的应用于结构化数据。最常用的方法就是正则表达式(Regular expression)或者SQL语言。

这种东西的典型案例就是工业和商业的数据库。结构化数据往往比非结构化数据要容易处理的多。如果是商业公司,对于不会写代码的雇员,不妨订立自己的“数据书写标准。”比如:橙子+销售+91个+1926¥。写成一个又一个的“格式。”结构化数据永远比非结构化数据更容易处理!

请注意,re本身,就可以被认为是一种编程语言。re自己有一套自己的系统,写出来就是好几本书;当然无论是Linux/UNIX还是Python,Perl,Java里面re都占有一席之地。当然了,加上一些数据挖掘的思想,我们也可以用这种方法从数据库里提取我们想要的数据。

比基于属性的抽取系统,更进一步的是关系抽取系统(relational extraction)。关系抽取系统可以由一组有限状态自动机组成。每一个自动机接受一个输入,并把它做一转化;再传入下一个自动机上。这种思路和面向过程编程非常接近。

比如:可以由以下五个部分组成:

  1. 符号分析
  2. 复合词处理
  3. 基本词组处理
  4. 复合短语处理
  5. 结构合并

当然,这种系统最大的问题是,面对有大量噪音的文本系统,performance会非常差。解决存在大量噪音的文本系统,我们更需要的是下面这种方法。

二。信息抽取的概率模型

但是很多时候我们要处理的是非结构化的数据。这个时候再用传统的有限自动机毫无疑问就是不可行的。解决方案是:我们采用,前面反复讨论的HMM模型来解决这一问题。

对于文本内的每一个属性,我们可以分别去构造一个HMM模型。比如,识别文本内的人物,时间,地点等等。分别都可以构造成一个又一个的HMM。不熟悉这一块的可以参考我前面的笔记和回答。或者维基百科或者任何一本AIML的书。

下图便是一个报告通知文本中,报告者的HMM模型:

《NLP的应用:信息抽取》
《NLP的应用:信息抽取》

那么作为一个HMM,必然有隐藏值和观察值。观察值的话很容易想。那便是文本内的单词序列。而隐藏值就是模板的目标,前缀和后缀。使用这种模型我们可以方便的避开使用有限自动机模型的时候会出现的两个问题。

  1. 对抗噪声(非结构化数据必然有噪声)
  2. 可以通过概率去训练,而不用构造繁琐复杂的模板。
    原文作者:退乎
    原文地址: https://zhuanlan.zhihu.com/p/32481829
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞