我正在检查NLTK的命名实体识别功能。是否有可能找出哪个提取的关键字与原始文本最相关?此外,是否有可能知道提取的关键字的类型(人/组织)?
如果你有一个训练好的标记器,你可以先标记你的文本,然后使用NLTK自带的网元分类器。
标记的文本应该以列表的形式呈现
sentence = 'The U.N.'
tagged_sentence = [('The','DT'), ('U.N.', 'NNP')]
然后,将像这样调用新分类器
nltk.ne_chunk(tagged_sentence)
返回一个Tree。分类后的单词将以Tree节点的形式出现在主结构中。如果是个人、组织或GPE,结果将包括。
要找出最相关的术语,你必须定义一个"相关性"的度量。通常使用tf/idf,但如果只考虑一个文档,那么频率就足够了。
使用NLTK计算文档中每个单词的频率很容易。首先,你需要加载语料库,一旦你加载了语料库并有了Text对象,只需调用:
relevant_terms_sorted_by_freq = nltk.probability.FreqDist(corpus).keys()
最后,你可以过滤掉relant_terms_sorted_by_freq中不属于网元单词列表的所有单词。
NLTK提供了一本完整的书的在线版本,我觉得很有趣,从