2016-09-22 46 views
2

是否有任何包可以用来从Python中删除句子中的专有名词?有没有办法使用python从句子中删除专有名词?

我知道NLTK,Stanford和Text Blob这几个软件包可以完成这项工作(删除姓名),但他们也删除了大量以大写字母开头但不是专有名词的单词。

此外,我不能有一个名称字典,因为它将是巨大的,并将继续扩展,因为数据不断填充在数据库中。

+0

这可能会有所帮助:http://stackoverflow.com/questions/17669952/finding-proper-nouns-using-nltk-wordnet –

+0

标记为重复(昨天你问同样的问题):http://stackoverflow.com/q/39610137/6313992 –

+0

嗨Neeraj,这就是我所解释的。它甚至认为,以大写字母开头的词作为专有名词,甚至不是专有名词 – Pri

回答

2

如果您只想删除单个专有名词,您可以使用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,因为它们本质上是多字。

+0

这在某种程度上有所帮助,但并不完全。而且,如果文本中有任何内容,是否有删除电子邮件内容的方法? – Pri

+0

你的电子邮件内容是什么意思?也许你可以更新你的问题?另外,它没有删除什么? –

+0

它删除了名称,但也删除了以大写字母开头的单词。可能也认为它们是专有名词。 – Pri

相关问题