Python NLTK学习11(命名实体识别和关系抽取)
发表于: 2017年7月27日 阅读: 18262
除特别注明外,本站所有文章均为小杰Code原创
本系列博客为学习《用Python进行自然语言处理》一书的学习笔记。
命名实体识别
命名实体识别(NER)系统的目标是识别所有文字提及的命名实体。可以分解成两个子任务:确定NE的边界和确定其类型。
命名实体识别非常适用于基于分类器类型的方法来处理的任务。
NLTK有一个已经训练好的可以识别命名实体的分类器,可以使用函数nltk.ne_chunk()进行访问。如果我们设置参数binary=True,那么命名实体只被标注为NE。否则分类器会添加类型标签,如PERSON,ORGANIZATION以及GPE。如下:
# 取出语料库中的一个句子
sent = nltk.corpus.treebank.tagged_sents()[22]
# 使用NE分块器进行命名实体识别,返回Tree对象,
# Tree对象的label()方法可以查看命名实体的标签
for tree in nltk.ne_chunk(sent, binary=True).subtrees():
# 过滤根树
if tree.label() == "S":
continue
print(tree)
以上代码我们设置参数binary=True得到如下结果:
(NE U.S./NNP)
(NE Brooke/NNP)
(NE University/NNP)
(NE Vermont/NNP College/NNP)
(NE Medicine/NNP)
如果设置参数binary=False则可以得到如下结果:<