Atitit 知识图谱 知识抽取 信息抽取的总结艾提拉总结
目录
1. 知识抽取 1
2. 数据源主要来自两种渠道( 2
2.1. 内部结构化数据vs 外部网页数据 2
3. 2. 知识图谱的数据来源 1 3
3.1. a) 百科类数据 2 3
3.2. b) 结构化数据 3 3
3.3. c) 半结构化数据挖掘AVP (垂直站点爬虫) 3 3
3.4. d) 通过搜索日志(query record log)进行实体和实体属性等挖掘 4 3
4. 信息抽取的难点在于处理非结构化数据。 4
4.1. a. NER实体命名识别(Name Entity Recognition) 4
4.2. b. 关系抽取(Relation Extraction) 5
4.3. c. 实体统一(Entity Resolution) 5
4.4. d. 指代消解(Coreference Resolution)代词指向哪些实体 5
4.5. 实体统一和指代消解问题相对于前两个问题更具有挑战性。 8
5. NER关联技术 8
5.1. 分词 8
5.2. 词典匹配 8
5.3. 数字和特殊字符,一般用正则的方法匹配出来 8
5.4. 先边界识别 然后进行类别判定 8
5.5. 相关知识梳理(HMM, MEMM, CRF) 9
5.6. Bootstrapping算法 利用有限的样本资料 建立目标 9
6. NER公开数据集 9
6.1. CoNLL CoNLL 2003 9
6.2. CoNLL2003中, 实体被标注为四种类型:LOC (location, 地名)ORG (organisation, 组织机构名)PER (person, 人名)MISC (miscellaneous, 其他) 10
6.3. OntoNotes 5.0 / CoNNLL 2012 18个类别 10
6.4. 其他公开数据集,包括NLPBA2014, Enron Emails 等等 10
7. NER 标注方法有很多种, 这里主要介绍3种最常见。 11
7.1. IOB 标注法 11
7.2. BIOES BIOES 是目前最通用的命名实体标注方法。 11
7.3. Makeup 是 OntoNotes 使用的标注方法, 思路比较简单, XML, 比如: 11
8. 问题 12
9. Ref 12
需要把数据从不同的数据源中抽取出来
知识抽取
知识图谱的构建是后续应用的基础,而且构建的前提是需要把数据从不同的数据源中抽取出来。对于垂直领域的知识图谱来说,它们的数据源主要来自两种渠道:一种是业务本身的数据,这部分数据通常包含在公司内的数据库表并以结构化的方式存储;另一种是网络上公开、抓取的数据,这些数据通常是以网页的形式存在所以是非结构化的数据。
前者一般只需要简单预处理即可以作为后续AI系统的输入,但后者一般需要借助于自然语言处理等技术来提取出结构化信息。比如在上面的搜索例子里,Bill Gates和Malinda Gate的关系就可以从非结构化数据中提炼出来,比如维基百科等数据源。
在下面的图中,我们给出了一个实例。左边是一段非结构化的英文文本,右边是从这些文本中抽取出来的实体和关系。在构建类似的图谱过程当中,主要涉及以下几个方面的自然语言处理技术:
又称作“专名识别”,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。
般来说,命名实体识别的任务就是识别出待处理文本中三大类(实体类、时间类和数字类)、七小类(人名、机构名、地名、时间、日期、货币和百分比)命名实体。
命名实体识别(Named Entity Recognition, NER)是NLP领域一个非常非常重要的方向,比如人名、地名通用性的实体识别,还有像车型名、车款名这些垂直领域的实体,在这借着实体识别的案例整理下相关的模型以及如何结合这些模型与深度神经网络实现效果更好的NER
狭义上,是识别出人名、地名和组织机构名这三类命名实体(时间、货币名称等构成规律明显的实体类型可以用正则等方式识别
实体命名识别,这是一项相对比较成熟的技术,有一些现成的工具可以用来做这件事情
括实体抽取里面有NER的方法,NER有传统的CRF的方法,有基于循环神经网络+CRF的方法,也有端到端的联合标注的抽取方法,这种方法同时输出实体和实体之间关系的三元组
过程组成
编辑
通常包括两部分:(1)实体边界识别;(2) 确定实体类别(人名、地名、机构名或其他)。英语中的命名实体具有比较明显的形式标志(即实体中的每个词的第一个字母要大写),所以实体边界识别相对容易,任务的重点是确定实体的类别。和英语相比,汉语命名实体识别任务更加复杂,而且相对于实体类别标注子任务,实体边界的识别更加困难。
难点
编辑
(1)汉语文本没有类似英文文本中空格之类的显式标示词的边界标示符,命名实体识别的第一步就是确定词的边界,即分词;(2)汉语分词和命名实体识别互相影响;(3)除了英语中定义的实体,外国人名译名和地名译名是存在于汉语中的两类特殊实体类型;(4)现代汉语文本,尤其是网络汉语文本,常出现中英文交替使用,这时汉语命名实体识别的任务还包括识别其中的英文命名实体;(5)不同的命名实体具有不同的内部特征,不可能用一个统一的模型来刻画所有的实体内部特征
下面针对每一项技术解决的问题做简单的描述,以至于这些是具体怎么实现的,不在这里一一展开,感兴趣的读者可以查阅相关资
首先是实体命名识别,就是从文本里提取出实体并对每个实体做分类/打标签:比如从上述文本里,我们可以提取出实体-“NYC”,并标记实体类型为 “Location”;我们也可以从中提取出“Virgil's BBQ”,并标记实体类型为“Restarant”。这种过程称之为实体命名识别,这是一项相对比较成熟的技术,有一些现成的工具可以用来做这件事情。其次,我们可以通过关系抽取技术,把实体间的关系从文本中提取出来,比如实体“hotel”和“Hilton property”之间的关系为“in”;“hotel”和“Time Square”的关系为“near”等等。
另外,在实体命名识别和关系抽取过程中,有两个比较棘手的问题:一个是实体统一,也就是说有些实体写法上不一样,但其实是指向同一个实体。比如“NYC”和“New York”表面上是不同的字符串,但其实指的都是纽约这个城市,需要合并。实体统一不仅可以减少实体的种类,也可以降低图谱的稀疏性(Sparsity);另一个问题是指代消解,也是文本中出现的“it”, “he”, “she”这些词到底指向哪个实体,比如在本文里两个被标记出来的“it”都指向“hotel”这个实体。
NER、分词都可以看作是序列的标注问题,而这一类问题比较传统的方法是以以马尔科夫模型(HMM)、条件随机场(CRF)为代表的概率图模型,还有最大熵隐马尔可夫模型(MEMM),这三者在之前都取得了非常不错的结果,近几年随着深度学习的兴起,深度神经网络也加入到NLP的任务中
,指的就是利用有限的样本资料经由多次重复抽样,重新建立起足以代表母体样本分布的新样本。bootstrapping的运用基于很多统计学假设,因此采样的准确性会影响假设的成立与否。
Bootstrapping从字面意思翻译是拔靴法,从其内容翻译又叫自助法,是一种再抽样的统计方法。自助法的名称来源于英文短语“to pull
oneself up by one’s bootstrap”,表示完成一件不能自然完成的事情。1977年美国Standford大学统计学教授Efron提出了一种新的增广样本的统计方法,就是Bootstrap方法,为解决小子样试验评估问题提供了很好的思路。
1、自助法的基本思路:
首先让我们来看看常见公开数据集
这个数据集包括1393篇英语新闻文章和909篇德语新闻文章。英语语料库是免费的,德国语料库需要收钱(75美元)。英语语料实际上是RCV1(Reuters Corpus, Volume 1, https://trec.nist.gov/data/reuters/reuters.html), 路透社早些年公开的一些数据集。你需要填个使用申请表(包含组织和个人两种类型), 然后就可以使用了。
OntoNotes 5.0由 1745k 英语、900k 中文和300k 阿拉伯语文本数据组成,OntoNotes 5.0的数据来源也多种多样, 有电话对话、新闻通讯社、广播新闻、广播对话和博客。
实体被标注为【PERSON】、【ORGANIZATION】和【LOCATION】等18个类别
IOB 标注法, 是 CoNLL 2003 采用的标注法, I 表示 inside, O 表示 Outside, B 表示 Begin。而标注的 label是 I-XXX 的, 表示这个字符, 在 XXX类命名实体的内部(inside)。B用于标记一个命名实体的开始。
这是在 IOB方法上,扩展出的一个更复杂,但更完备的标注方法。其中 B表示这个词处于一个实体的开始(Begin), I 表示内部(inside), O 表示外部(outside), E 表示这个词处于一个实体的结束为止, S 表示,这个词是自己就可以组成一个实体(Single)
Markup
它用标签把 命名实体框出来, 然后,在 TYPE 上, 设置相应的类型。
当然, 还有很多其他的标注方法, 比如 IO, BMEWO 等等,感兴趣的读者可以 google一下
Q:纯文本怎么进行抽取?
A:关于抽取,我在前面讲到了有很多的方法,包括实体抽取里面有NER的方法,NER有传统的CRF的方法,有基于循环神经网络+CRF的方法,也有端到端的联合标注的抽取方法,这种方法同时输出实体和实体之间关系的三元组
Atitit 知识图谱的数据来源
命名实体识别_百度百科.html
NLP(6)——命名实体识别 - 简书.html
命名实体识别从数据集到算法实现-云栖社区-阿里云.html
命名实体识别【NeuroNER】 - 简书.html
Bootstrapping - 有梦想的咸鱼 - CSDN博客.html