有没有办法使用python从句子中删除专有名词?
问题描述:
是否有任何包可以用来从Python中删除句子中的专有名词?有没有办法使用python从句子中删除专有名词?
我知道NLTK,Stanford和Text Blob这几个软件包可以完成这项工作(删除姓名),但他们也删除了大量以大写字母开头但不是专有名词的单词。
此外,我不能有一个名称字典,因为它将是巨大的,并将继续扩展,因为数据不断填充在数据库中。
答
如果您只想删除单个专有名词,您可以使用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 tagset:NNP
和NNPS
所以,你可以做到以下几点:
>>> 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,因为它们本质上是多字。
这可能会有所帮助:http://stackoverflow.com/questions/17669952/finding-proper-nouns-using-nltk-wordnet –
标记为重复(昨天你问同样的问题):http://stackoverflow.com/q/39610137/6313992 –
嗨Neeraj,这就是我所解释的。它甚至认为,以大写字母开头的词作为专有名词,甚至不是专有名词 – Pri