Information Extraction简介
抽取实体(entities):
·通用性:人(person), 地名(location),时间(time)
·专业性:医疗领域(蛋白质,疾病,药物)
抽取关系(relations)
·位于(located in), 工作在(work at), 部分(is part of)
基于规则的方法,基于监督学习的方法,boostrap方法,distant-supervision方法,
无监督学习
·实现消歧 ·实现统一 ·指代消解 ·句法分析 ·CKY算法
applications:
·知识库的搭建 ·Google Scholar,CiteSeerX
·用户库:Repleaf,Spoke ·购物引擎,产品搜索
·专利分析·证券分析·问答系统
NER(Named Entity Recongntion)
命名实体识别,也称为"专名识别",是指识别文本中具有特定意义的实体,主要包括人名,地名,机构名,专有名词
applications:
Chat bot中的"domain-intent-slots"在意图识别中要抽取实体。
English Toolkits:
·NLTK NE ·Spacy·Stanford Parser
Chinese Toolkits:
·Han NLP ·HIT NLP ·Fudan NLP ·or yours(自己搭建特定领域使用)
Creat NER Recognizer
·定义实体种类 ·准备训练数据 ·训练NER
Evaluate NER Recognizer: Precision/Recall/F_1score
Methods for NER:
·利用规则(比如正则)
·投票模型(Majority Voting)
·利用分类模型
\quad
·非时序模型:逻辑回归,SVM…
\quad
·时序模型:HMM,CRF,LSTM-CRF
Rule-based Approach
import pandas as pd
import numpy as np
data = pd.read_csv("ner_dataset.csv", encoding="latin1")
data = data.fillna(method="ffill")
data.tail(10)
words = list(set(data["Word"].values))
n_words = len(words)
35178
from sklearn.base import BaseEstimator, TransformerMixin
class MajorityVotingTagger(BaseEstimator, TransformerMixin):
def fit(self, X, y):
"""
X: list of words
y: list of tags
"""
word2cnt = {}
self.tags = []
for x, t in zip(X, y):
if t not in self.tags:
self.tags.append(t)
if x in word2cnt:
if t in word2cnt[x]:
word2cnt[x][t] += 1
else:
word2cnt[x][t] = 1
else:
word2cnt[x] = {t: 1}
self.mjvote = {}
for k, d in word2cnt.items():
self.mjvote[k] = max(d, key=d.get)
def predict(self, X, y=None):
'''
Predict the the tag from memory. If word is unknown, predict 'O'.
'''
return [self.mjvote.get(x, 'O') for x in X]
words = data["Word"].values.tolist()
tags = data["Tag"].values.tolist()
from sklearn.model_selection import cross_val_predict
from sklearn.metrics import classification_report
pred = cross_val_predict(estimator=MajorityVotingTagger(), X=words, y=tags, cv=5)
report = classification_report(y_pred=pred, y_true=tags)
print(report)
特征工程与特征表示
提取每个单词的最简单的特征,比如单词长度等等
The professor Colin proposed a model for NER in 1999
- bag-of-word features:当前词,前后词,前前后后词,Bi-gram,Tri-gram
- pos-tagging词性
- 前缀&后缀
- 当前词的特性:词长,含有大写字母,含有“-”
- stemming + “重复”
常见的特征种类:
- 分类型 (category)
- 连续型(continuous):直接用/转换成分布式
- ordinal feature:直接用/当做类别特征使用
Ontological Relaton(实体关系)
·IS-A(Hypernym Relation)
·Instance-of
关系抽取方法介绍:关系抽取常用算法
实现消歧(Entity Disambiguiation)
实体消歧的本质在于一个词很有可能有多个意思,也就是在不同的上下文中所表达的含义不太一样 |
---|
实现统一(Entity Resolution)
①sim(str1,str2) —计算编辑距离
②基于规则,利用stemming,提取关键信息
③基于图的实体统一,进行特征工程编辑,计算相似度
指代消解(co-reference Resolution)
① supervised learning: 准备训练数据,进行算法的二分类
句法分析(Parsing)
要理解一个句子,有两种方法:
①句法分析(主谓宾)
②通过语言模型—>结合上下文填空