大纲
- 介绍
- 基于规则的方法
- 基于监督学习的方法
- 半监督 (Bootstrap)
介绍
文本:张三毕业于北京大学,目前在北京工作。
通过命名识别我们获取了实体张三,北京,北京大学
接下来我们要识别的是两两之间的关系
一般在工业界项目里面,我们提前定义好关系 A,B,C,NA
然后用分类算法获得关系
Relation Extraction
1.基于规则
2.监督学习
3.半监督 & 无监督学习
- Bootstrap
- Distant Supervision
- 无监督学习
基于规则的方法
首先我们要建立Templetes
X is a Y
Y such as X
Y including X
Y especially X
我们可以在X和Y上面做一些条件,比如限制它们为Entity
首先我们找到实体
然后可以按照一定的规则或相似度匹配获得它们的关系
① (字符串刚好匹配) Exact Matching
② if |fruit - apple| < 10(relative distance) and contains("is a")
③ 计算(is a) 和 (is a .....)的相似度
基于规则的方法优点:
① 准确率高
②不需要样本
基于规则的方法缺点:
① low recall rate
由于规则的严格性和局限性我们会漏掉一些符合条件的关系,导致recall值太低,但是我们又不能把规则设计的太松,这样会导致准确率大大降低。
②成本(不是特别严重)
③规则库中会出现规则重叠
④规则冲突
规则之间有可以有一些设计
① 权重 & Priority
② 规则之间的层次关系
基于监督学习的方法
① 定义实体类型
② 训练数据
---实体标注好
---实体之间的关系标注好
NLP存在数据量少的情况,这种情况可以使用 Low-resource learning。
监督学习分成两部分,首先标记实体
American Airline, (a unit of AMR,immedicately match the movie,spokesman) Time Wanger said
American Airline
Time Wanger
位置(两个实体间包含了多少个单词)
Classification Model
左边表示将没有关系表示成NA,进行一层建模分类
右边先用一个二分类将有关系和没关系的区分开来,在将有关系的进行分类, 这种叫做层次结构建模
具有层次结构的算法准确率比较高
半监督 (Bootstrap)
生成规则的前先把所有的实体标记出来,然后进行扫描,提取出规则。
Bootstrap 过程
这种方法有个问题是错误会叠加,最后导致准确率很低
Solutions:
① 人工参与
② 自动方式评估生成的规则和记录
上图右边是用②方法的Bootstrap
在什么样的情况下才能评估规则?
Q: 规则,记录
(规则,记录)
(规则,规则)
规则的表示(Patten Represtation)
① 生成规则
1.Computers (servers at) microsoft ('s headquater in) Redmond ()
2.(In mid-afternoon), Redmond-based Microsoft (feel )
3.(The) Armonk-based IBM (Introduces)
4.()Boeing's headquaters in seattle ()
3.
4.
抓换成unit-feature(长度归一化)
3.
4.
在上述1,2,3,4规则中,我们发现1和4,2和3比较相似
我们可以使用聚类的算法进行归类,将1和4merge成一条规则,2和3merge成一条规则:
--Kmeans
--Spetial Clusters
imcremential clustering
1.
2.
3.
4.
5.
...
10.
规则的聚类还能帮助我们减少噪声数据的影响
② 记录的生成
扫描预料库,标记出实体,把实体周围用五元组表示和规则库进行相似度的计算,把相似度最高的规则记录下来,如果相似度大于某个阈值将实体放入seed-record库并标记来自哪一条规则。
③ 评估规则 & 过滤规则
评估规则
过滤规则
④ 评估记录 & 过滤记录
评估记录
我们不看Paper的情况下,如何给下面的paper的可信度进行排序
首先2是由Hinton和Benjia一起发的,它的可信度最高,小华的知名度在ML界没有Hinton高,所以4<1,因此它们可信度的排名为 2 > 1 > 4
我们把这种方法应用到记录评估里面
A.方案
相乘会使值变小,这与我们的初衷不相符,这种方案不考虑
B.方案
这样做Confi的值会超过1,还存在
C.方案
过滤记录
得分小于阈值的过滤掉