知识抽取
知识抽取中关键技术主要是NLP处理技术,主要以命名实体识别与实体链接、实体关系抽取、事件抽取为主。
简介
实体抽取,又称命名实体识别(Named Entities Recognition,NER),主要任务是识别命名实体的文本范围,并将其分类为预定义的类别,学术上所涉及一般包含三大类,实体类、时间类、数字类和7个小类,比如人、地名、时间、组织、日期、货币、百分比,是问答系统、翻译系统、知识图谱的基础,早期的NER的方法主要由语言学家手工构造规则模板,选用特定特征,包括统计信息、标点符号、指示词、方向词、中心词等,以模式与字符串相匹配为主要手段,但是此方法需要大量人力构建语言模型、系统周期较长、知识更新较慢、移植性较差。随着机器学习应用,提出了基于统计学的方法,主要包括隐马尔科夫模型(HMM)、最大熵马尔科夫模型(MEMM)、支持向量机(SVM)、条件随机场(CRF),基于统计方法的对特征选择要求较高,对语料库的依赖较大。深度学习的表征学习相比于机器学习特征工程,在特征学习方面具有较大优势,采用句子嵌入到CNN-CRF中,自动学习特征,对实体进行分类,提取的LSTM-CRF ,BiLSTM-CRF模型,对实体识别提高了一个新的高度。
CRF
前言
假设你有许多小明同学一天内不同时段的照片,对这些照片进行分类。比如有的照片是吃饭,那就给它打上吃饭的标签;有的照片是跑步时拍的,那就打上跑步的标签;有的照片是开会时拍的,那就打上开会的标签。
一个简单直观的办法就是,不管这些照片之间的时间顺序,想办法训练出一个多元分类器。就是用一些打好标签的照片作为训练数据,训练出一个模型,直接根据照片的特征来分类。例如,如果照片是早上6:00拍的,且画面是黑暗的,那就给它打上睡觉的标签;如果照片上有车,那就给它打上开车的标签。
但实际上,由于我们忽略了这些照片之间的时间顺序这一重要信息,我们的分类器会有缺陷的。举个例子,假如有一张小明闭着嘴的照片,怎么分类?显然难以直接判断,需要参考闭嘴之前的照片,如果之前的照片显示小明在吃饭,那这个闭嘴的照片很可能是小明在咀嚼食物准备下咽,可以给它打上吃饭的标签;如果之前的照片显示小明在唱歌,那这个闭嘴的照片很可能是小明唱歌瞬间的抓拍,可以给它打上唱歌的标签。
所以,为了让我们的分类器能够有更好的表现,在为一张照片分类时,我们必须将与它相邻的照片的标签信息考虑进来。这——就是条件随机场(CRF)大显身手的地方.
词性标注
给一个句子中的每个单词注明词性。比如这句话:“Bob drank coffee at Starbucks”,注明每个单词的词性后是这样的:“Bob (名词) drank(动词) coffee(名词) at(介词) Starbucks(名词)”。
用条件随机场来解决这个问题
以上面的话为例,有5个单词,我们将:(名词,动词,名词,介词,名词)作为一个标注序列,称为l,可选的标注序列有很多种,比如l还可以是这样:(名词,动词,动词,介词,名词),我们要在这么多的可选标注序列中,挑选出一个最靠谱的作为我们对这句话的标注。
如和判断一个标注序列靠谱不靠谱呢?
就我们上面展示的两个标注序列来说,第二个显然不如第一个靠谱,因为它把第二、第三个单词都标注成了动词,动词后面接动词,这在一个句子中通常是说不通的。
假如我们给每一个标注序列打分,打分越高代表这个标注序列越靠谱,凡是标注中出现了动词后面还是动词的标注序列,要给它负分
上面所说的动词后面还是动词就是一个特征函数,我们可以定义一个特征函数集合,用这个特征函数集合来为一个标注序列打分,并据此选出最靠谱的标注序列。也就是说,每一个特征函数都可以用来为一个标注序列评分,把集合中所有特征函数对同一个标注序列的评分综合起来,就是这个标注序列最终的评分值。
CRF中的特征函数
- 句子s(就是我们要标注词性的句子)
- i,用来表示句子s中第i个单词
- l_i,表示要评分的标注序列给第i个单词标注的词性
- l_i-1,表示要评分的标注序列给第i-1个单词标注的词性