有没有办法使用python从句子中删除专有名词?

时间:2016-09-22 08:42:58

标签: python python-2.7

是否有任何软件包可用于从句子中删除专有名词?

我知道像NLTK,Stanford和Text Blob这样的一些软件包可以完成这项工作(删除名称),但它们也会删除很多以大写字母开头但不是专有名词的单词。

此外,我不能拥有名称字典,因为它会很大并且随着数据在数据库中不断填充而不断扩展。

1 个答案:

答案 0 :(得分:4)

如果你想删除专有名词的单个单词,可以使用nltk并标记你的句子,然后删除所有带有专有名词标签的单词。

>>> import nltk
>>> nltk.tag.pos_tag("I am named John Doe".split())
[('I', 'PRP'), ('am', 'VBP'), ('named', 'VBN'), ('John', 'NNP'), ('Doe', 'NNP')]

默认标记使用只有两个专有名词标记的Penn Treebank POS tagsetNNPNNPS

所以你可以做以下事情:

>>> sentence = "I am named John Doe"
>>> tagged_sentence = nltk.tag.pos_tag(sentence.split())
>>> edited_sentence = [word for word,tag in tagged_sentence if tag != 'NNP' and tag != 'NNPS']
>>> print(' '.join(edited_sentence))
I am named

现在,正如警告一样,POS tagging并非100%准确,可能会误解一些含糊不清的字眼。此外,您不会以这种方式捕获Named Entities,因为它们本质上是多字的。