2016-09-22 68 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

相關問題