Methods for NER
- 利用规则(比如正则)
- 投票模型 (Majority Voting) baseline
- 利用分类模型
- 非时序模型 逻辑回归 SVM
- 时序模型 :HMM ,CRF ,LSTM-CRF
1、基于规则的方法
规则其实就是根据一定的正则提取或者利用已经定义好的词典或者词库,比如
- if token.contains(word) and word in xxx(词库)
2、基于投票模型(Majority Voting)
- 统计每个单词的实体类型,记录针对每个单词,概率最大的实体类型。
3、特征工程与特征表示(分类模型主要是针对特征进行分类)
分类模型的最重要的点在于特征,特征就是模型的核心,所以要了解特征有哪些表示形式
关于特征工程的讲解文章,我认为不错的https://blog.csdn.net/m0_38024592/article/details/80836217?utm_source=blogxgwz4
后续希望自己也写一个
那么特征工程在NER表示中,如何选择这个词的特征呢?
1、bag of word 特征
- 当前词
- 前后词
- 前前后后词
- bi-gram
2、词性
- 当前词 名词
- 前后词 名,动
- 前前后后词 冠,名等
- bi-gram
3、前缀和后缀等
4、当前词的特性
- 词长,含有多少个大写字母、是否大写字母开头、是否包含“-”、后面词是否包含大写、是否包含数字、等
特征编码(特征表示也可以叫做特征提取)
常见的特征种类:分类型特征、连续型特征、Ordinal 特征(排序特征)
1、 分类型特征
- 男女(0,1)
- 姓名(0,1,0)ont - hot encoding
2、连续型特征(continous)
- 身高 167,187 每个区间用一个特征表示,比如1,2,3,。。。
- 温度 35.2,35.8
连续型的要变成离散型才可以用one-hot表示
3、Ordinal 型特征
这个真的就是表示A,B,C,D,E,可以直接到one-hot型 A=(1,0,0,0,0)
信息抽取介绍
信息抽取是实现文本的关系图谱展现出来
信息抽取
信息抽取可以展示以下几种形式
1、tuple关系图
把重要的信息形成一个tuple的形式,比如上图信息抽取只要是三元组,(人物,组织,地点)
2、ACE(Automatic Content Extraction)关系图
根据ACE中的定义,事件由事件触发词(Trigger)和描述事件结构的元素(Argument)构成,元素和事件之间的关系定义为角色(Argument role)。
所以根据图可知根节点root是触发词也就是类别label,子节点是该类别下的元素,也可以理解为信息抽取后的关系图谱。
主要用途:
- 可以为文本分类做训练集 ,可参考这个https://blog.csdn.net/weixin_40231212/article/details/89743015
-
文章里面展现主要信息结构,如下图所示
3、地缘关系知识图谱
在我们原始的大部分关系里,也就是本体论关系
- IS-A 草莓是水果,属于关系
- Instance of 我在广州等
这些都是存在关系的关系图谱
那么接下来就看看关系抽取 ,我的理解,信息抽取也主要是关系的抽取
关系抽取
关系抽取的方法介绍
- 基于规则
- 监督学习
- 半监督&无监督学习
- Boostrap
- Distant Supervision
- 无监督学习
-
基于规则的方法
现在大部分的关系抽取还是基于规则的方法去实现的,人工预先定义好的规则,根据规则判断,然后归并数据
例如IS-A关系的规则:
根据规则集,判断文章是否有相关规则匹配的关系,有,则把关系数据存入数据库。
但是直接单纯的这样子的关系,不能区分类别的关系,不一样的类别也会分到一起,会存在很大的误差值。
那么则需要对实体加限制,比如水果类的实体,汽车类的实体分开判断
加实体限制的规则集的优点:
- 提升挖掘出的结果的准确性
- 只返回想要的结果
基于规则的方法的优点和缺点
优点:
- 比较准确
- 不需要训练数据
缺点:
- low recall rate (覆盖率较低,也就是召回率低,因为人工只能定义一些类别的,但是大量的数据里面,有存在各种各样的数据类别,所以回报率比较低)
- 成本人力
- 规则本身难估计
那么如何解决这个问题呢?那就是要用监督学习方法
2.基于监督学习的方法
1、运用监督学习实现关系抽取首先要做好以下几个准备条件。
- 定义关系类型(IS-A还是Instance of)
- 定义实体类型(要抽取什么类型的实体)
- 训练数据准备
实体标记好(类型,就是类别,label)
实体之间的关系 (类别和实体对应关系)
2、特征工程
有了数据,就要进行特征工程操作,选取特征,作为分类算法的输入参数
特征工程选择特征主要有以下几点操作 - bag of feature (把所有单词列出来)
- pos feature (单词对应的词性列出来)
- 实体类别 (每个单词的实体类别分别是什么)
- stemming (把单词进行词干还原,英文才需要,中文不需要)
- 位置相关信息 (两个实体之间包含了多少个单词?这句话在本文的位置)
- 句法分析相关特征(两个节点之间的最短路径)
- 依存文法相关 也是最短路径方法
3、根据特征工程提前的特征,输入分类算法,得出分类结果
主要表现形式为:分类算法(SVM,GBDT) f(特征)->分类1,分类2,分类3,无分类
对于二分类问题,一般的操作如下:
实体消岐
在关系抽取中,设计到实体之间的关系,但是一个实体可能会有多层的表示形式,不一样的意思。
实体消岐的本质在于一个词很有可可能多个意思,也就是在不同的上下文所表达的含义不一样。
比如我们生活中常见的实体:小米和苹果就是存在多个意思。
问题:给出一段话,如何判断该实体是属于哪个含义?
在实体库中:含有该实体对应的文章,如何通过实体库的数据判断问题中的实体是哪个类型的呢
比如例子:问题定义:今天苹果发布了新手机
实体库中有两个不同类型的数据
- 苹果:水果中的一种,一般产自于。。。。。。。
- 苹果:美国一家高科技公司,经典的产品有iphone手机
那么实体消岐要如何实现呢?运用什么算法呢?
实体消岐算法
1、TF-IDF
抽取实体前后的20个或者40个等n个词,进行分词,词库的句子进行分词,得到V,进行TF-IDF计算
计算cosine(q,实体1),cosine(q,实体2),以此类推,选择值最大的就行分类
2、词向量
通过词向量的形式计算每个词的词向量,然后通过词向量计算两个句子的相似度,取值最高的相似度
具体做法可以参考问答系统的具体解决办法。
因为使用词向量,维度是一样的,问答系统用的就是100维的,所以直接矩阵相乘就是计算两个句子之间的相似度。
实体统一
问题定义:给定两个实体,判断是否指向同一个实体?
第一种方法:通过计算两个实体设计的字符串的编辑距离判断是否是指向同一个实体
第二种方法:基于规则,把字符串还原到原型,判断是否是一个实体,也类型英文的stemming操作,进行还原。
第三种方法:指代消解
第四种方法:基于图的实体统一
指代消解
指代作为一种常见的语言现象,广泛存在于自然语言的各种表达中(下面的他指的是张三还是李四呢?)
张三没有去上班,因为生病了,昨天,李四陪他去了医院,好消息是他已经好了
那么如何去解决,判断这个他是指的是谁呢?
1、最简单的方法,就是收集数据样本,通过规则的形式去判断
2、监督学习的方法 通过计算文本的编辑距离去得出结果
指代消解后也可判断两个实体是否是一个?归根结底指代消解也是解决实体统一的一个方法。
基于图的实体统一,下图所示,如何判断图的实体统一。
图谱如何判断两个实体是否为一个实体,下图所示计算两个实体的关系特征和个体特征的编辑距离判断是否是一个实体
要想理解一个句子,需要主谓宾(句法分析),第二就是凭感觉,语言模型,但是机器是不能靠感觉,需要知道主谓宾去实现的。
所以下面看看句法分析是如何实现的呢?
给定一个句子和语法,如何生成一个最好的语法树呢?
input 中文句子 -》句法分析 -》语法树
中文跟英文的实现,不用分开了,只需要有对应的中文和英文句子就可以实现端到端的句法分析
CFG content free grammars
PCFG probalities content free grammars 加入了概率的元素
FROM CFG TO PCFG 语法树选择是哪种情况,加入概率的元素 概率是从训练集里面计算的
评估语法树
所以要给定PCFG ,给一个句子,构建多棵树,就根据每一个分支的概率乘起来,得到结果就是分数
如何转换成最合适的语法树?哪个树是最优的
那就需要有一个评判标准,那就是每棵树给一个分数,设计分数
PCFG如何获得?
我在训练集里面统计每个规则的概率多少
寻找最好的语法树
上面所讲的是用枚举法,但是时间复杂度太高,时间复杂度是指数级的增长,所以不是最合理的。
那么引用另外一个算法,CKY算法,这个算法用的是动态规划的算法。
那么接下来如何用CKY算法寻找语法树?
CKY的核心思想?
主要是运用了DP算法的核心,把大问题拆分成若干个子问题,再把子问题的答案变成大问题的答案。
Binrazation 是把规则的右边只出现两个不同的语法符号
Transforming to CNF (Chomsky Normal Form)
CNF是啥规则呢,比B更严格
1、不允许出现出现e空的
2、不允许出现一个符号
3、不允许出现超过2个
如果去除一个规则后,就要重新计算规则集,所谓的去除就是把该规则进行全部的替换掉,重新计算替换
CKY算法必须满足Binrazation 其他的不是一定要满足,就是右边一定不能超过两个规则
总结:所以句法分析只要的流程是CKY算法结合PCFG去获取最优的语法树
时序模型 HMM CRF等
深度学习里面的时序模型有RNN LSTM
非时序数据:图片,一个人的特征,这些维度是固定的
时序数据:股票价格(不断的变动)语音的波形 也是变化的 ,文本(所以文本挖掘大部分都是用时序模型),天气的变化或者温度的变化等