是否有任何包可以用來從Python中刪除句子中的專有名詞?有沒有辦法使用python從句子中刪除專有名詞?
我知道NLTK,Stanford和Text Blob這幾個軟件包可以完成這項工作(刪除姓名),但他們也刪除了大量以大寫字母開頭但不是專有名詞的單詞。
此外,我不能有一個名稱字典,因爲它將是巨大的,並將繼續擴展,因爲數據不斷填充在數據庫中。
是否有任何包可以用來從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