NLTK WordNetを使用して固有名詞を見つける方法はありますか?つまり、nltk Wordnetを使用して所有名詞にタグを付けることはできますか?NLTK WordNetを使用して適切な名詞を検索する
19
A
答えて
37
私は適切な名詞を見つけるためにWordNetが必要ないと思いますが、私は品詞タグャーpos_tag
を使用することをお勧めします。
NNP
タグを探し、固有名詞を検索するには:
from nltk.tag import pos_tag
sentence = "Michael Jackson likes to eat at McDonalds"
tagged_sent = pos_tag(sentence.split())
# [('Michael', 'NNP'), ('Jackson', 'NNP'), ('likes', 'VBZ'), ('to', 'TO'), ('eat', 'VB'), ('at', 'IN'), ('McDonalds', 'NNP')]
propernouns = [word for word,pos in tagged_sent if pos == 'NNP']
# ['Michael','Jackson', 'McDonalds']
あなたがMichael
とJackson
ので、非常に満足ではないかもしれないが2つのトークンに分割され、その後、あなたは、このような名前など、より複雑なものが必要になる場合がありますエンティティタガー。
右のように、penntreebank
タグセットに記載されているように、所有名詞については、POS
タグhttp://www.mozart-oz.org/mogul/doc/lager/brill-tagger/penn.htmlを探してください。しかし、しばしば、NNP
の場合、タガーはPOS
というタグを付けません。
、強欲な名詞を見つける( "str.endswith探しの ')またはstr.endswith(「S'")するには:または
from nltk.tag import pos_tag
sentence = "Michael Jackson took Daniel Jackson's hamburger and Agnes' fries"
tagged_sent = pos_tag(sentence.split())
# [('Michael', 'NNP'), ('Jackson', 'NNP'), ('took', 'VBD'), ('Daniel', 'NNP'), ("Jackson's", 'NNP'), ('hamburger', 'NN'), ('and', 'CC'), ("Agnes'", 'NNP'), ('fries', 'NNS')]
possessives = [word for word in sentence if word.endswith("'s") or word.endswith("s'")]
# ["Jackson's", "Agnes'"]
、あなたはNLTK ne_chunk
を使用することができますが、それはdoesnの「Tはあなたが文から取得固有名詞の種類を懸念している場合を除き、他の多くを行うように見える:
>>> from nltk.tree import Tree; from nltk.chunk import ne_chunk
>>> [chunk for chunk in ne_chunk(tagged_sent) if isinstance(chunk, Tree)]
[Tree('PERSON', [('Michael', 'NNP')]), Tree('PERSON', [('Jackson', 'NNP')]), Tree('PERSON', [('Daniel', 'NNP')])]
>>> [i[0] for i in list(chain(*[chunk.leaves() for chunk in ne_chunk(tagged_sent) if isinstance(chunk, Tree)]))]
['Michael', 'Jackson', 'Daniel']
ne_chunk
を使用すると、少し冗長であり、それはあなたに所有格を取得していません。
1
タガー、品詞タグャーです。このツールは、の品詞タグ(たとえば、固有名詞、有名な代名詞など)を文中の各単語に割り当てます。
NLTKは、いくつかのタガーが含まれています http://nltk.org/book/ch05.html
Stanford Part-Of-Speech Tagger(あまりにもオープンソース、より良い性能)もあります。
関連する問題
- 1. NLTK synsetを使用した単語検索でのWordNetエラー
- 2. nltkとpythonを使用してコース名を検索
- 3. 適切な名詞(名前と組織)を取得するためにテキストを解析する - python nltk
- 4. 名詞から動詞を取得するWordnet python
- 5. WordNetによる名詞、動詞、形容詞、副詞の平均多項式を計算する
- 6. POSタグャーと頭字語の適切な名詞の検出
- 7. Pythonを使用してNLTKから名詞句を抽出する
- 8. playframeworkの検索モジュールを使用して、適切な
- 9. Python - WordNet NLTK KeyError
- 10. JavaScriptを使用したネストされた適切な検索
- 11. NLTKとWordnetを使用した同義語のクラスタリング
- 12. NLTKに言語を追加するWordNet
- 13. POSタグ付け - NLTKは名詞が動詞だと思う
- 14. NLTKのWordNet選択制限
- 15. 代名詞とその名詞を検出しますか?
- 16. 検索TinCan動詞
- 17. NLTKで不完全な文章で件名を検索
- 18. 名詞集合を持たない単語を見つけるためにwordnetを使うか、少なくとも1つの名詞のsynsetを
- 19. Python - NLTKでテキストを検索
- 20. Scikit TfidfVectorizerで適切な名詞に重みを与える方法
- 21. 弾性検索:不適切なスコア
- 22. 最適な検索ツリーPythonを使用して - コード分析
- 23. テキストから名詞+名詞または(adj |名詞)+名詞を抽出する
- 24. Quanteda Corpusesを使用して名詞を識別する
- 25. NLTK命令が名詞であると考える
- 26. NLTK、WordNet、および類似性を持つグループ内のすべての名詞ペアの最短パスを計算する方法は?
- 27. nltk:固有名詞のステミングを防ぐ方法
- 28. whileループを使用してユーザーから適切なユーザー名を取得する
- 29. 適切なベンダー名を持つツールチェーンを使用する
- 30. Java App Engine - 適切なライブラリを使用してJSONスキーマを検証する
このソリューションをありがとう、私は昨年11月のコンソールスクリプトとして実装しました - https://github.com/dereckson/extract-proper-nouns - 小説から適切な名前のリストを正常にインポートしました。 – Dereckson
答えがうまくいけばうれしいです。同じタスクを実行しようとしている他の人々のための準備ができているソリューションがあることを知ってうれしいです=) – alvas
_unstructured_テキストから適切な名詞を抽出するのにnltkを使用できます名詞は**大文字と小文字が混在して**、文章は完全に文法的に正しい**ですか?ありがとう – user2436428