2016-09-22 8 views
2

Pythonを使って文から固有名詞を削除するために使用できるパッケージはありますか?Pythonを使って文から固有名詞を削除する方法はありますか?

NLTK、Stanford、Text Blobのようないくつかのパッケージは知っていますが(名前を削除しますが)大文字で始まり、固有名詞ではない多くの単語も削除します。

また、私は名前の辞書を持つことはできません。データが膨大になり、データがDBに取り込まれたままになるので、私は拡張され続けるでしょう。

+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')] 

デフォルトタガーは2つだけ固有名詞タグを持っているPenn Treebank POS tagsetを使用しています:NNPNNPS

だからあなただけの次の操作を実行できます。今すぐ

>>> 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

関連する問題