用NLTK进行词性标注,我们得到一个元组列表,其中包含句子中的单个单词及其相关的词性。使用函数nltk.ne_chunk(),我们可以使用分类器识别命名实体,分类器添加类别标签(如PERSON,ORGANIZATION和GPE)。
NLTK命名实体识别效果如下图:Digital Farm(ORGANIZATION)识别成功
词标识符与块级别分割
然而,NER任务在中文语料上表现不佳,所以开源工具NLTK也一样。
为了能够满足我们的命名实体识别需求,我们可以引入正则表达式。
正则表达式限定分块
识别歌曲名(DT+NNP)
识别歌曲名(DT+NNP+RP)
识别歌曲All Falls Down需要用到正则表达式(NP: {<DT>*<NNP>*<RP>} # NP),识别歌曲That Girl需要用到正则表达式(NP: {<DT>*<NNP>} # NP)
匹配长度长的在前