私はNLTKとPythonにかなり新しいです。私は例で与えられたおもちゃの文法を使って文の構文解析を作成してきましたが、私は自分自身を書くことやおもちゃを使うのとは対照的に、Penn Treebankの一部から学んだ文法を使うことができるかどうかを知りたいと思います文法? (私はMacでPython 2.7を使用しています) 多くのありがとうPenn TreebankからPythonとNLTKを使って一連の文法ルールを取得するにはどうすればよいですか?
14
A
答えて
3
treebank_chunkまたはconl2000 corporaでChunkerを訓練することは可能です。あなたはそれから文法を取得しませんが、フレーズチャンクを解析できるpickle可能オブジェクトを取得します。 How to Train a NLTK Chunker,Chunk Extraction with NLTKおよびNLTK Classified Based Chunker Accuracyを参照のこと。
14
あなたは正確にNLTKに付属しているペンツリーバンクのサンプルをキャプチャ文法をしたい場合は、あなたがこれを行うことができ、あなたがNLTKのためにツリーバンクのデータをダウンロードしたと仮定すると(下記のコメントを参照):
import nltk
from nltk.corpus import treebank
from nltk.grammar import ContextFreeGrammar, Nonterminal
tbank_productions = set(production for sent in treebank.parsed_sents()
for production in sent.productions())
tbank_grammar = ContextFreeGrammar(Nonterminal('S'), list(tbank_productions))
このしかし、おそらくあなたに何か有用なものを与えません。 NLTKはすべてのターミナルを指定した文法での解析のみをサポートしているため、Treebankサンプルの単語を含む文を解析することはできません。
また、ツリーバンクの多くのフレーズのフラットな構造のため、この文法は、トレーニングに含まれていなかった文に非常にあまり一般的ではありません。このため、ツリーバンクを解析しようとしたNLPアプリケーションは、TreebankからCFGルールを学習する手法を使用していませんでした。これに最も近い技術は、Ren Bodsのデータ指向の解析アプローチですが、はるかに洗練されています。
最後に、これは信じられないほど遅く、役に立たないでしょう。だから、あなたはちょうどそれが動作することを証明するために、単一の文から文法上のアクションで、このアプローチを見たい場合は、(上記の輸入後の)次のコードを試してみてください。
mini_grammar = ContextFreeGrammar(Nonterminal('S'),
treebank.parsed_sents()[0].productions())
parser = nltk.parse.EarleyChartParser(mini_grammar)
print parser.parse(treebank.sents()[0])
関連する問題
- 1. 私はpython/nltkの中で完全なpenn treebankデータセットを使うことができます
- 2. NLTK Pythonを使用して文章のCFGを生成するにはどうすればよいですか?
- 3. antlr4ルールと一致する元のテキストを取得するにはどうすればよいですか?
- 4. Penn Treebank Tokenizerの実装はPerlにありますか?
- 5. selenium-pythonを使用してダイアログからテキストを取得するにはどうすればよいですか?
- 6. 最新のアイテムを一意に連続して取得するにはどうすればよいですか?
- 7. python nltkを使って解析木を取得するには?
- 8. NLTKでは、テキストの一致をどのように取得できますか?
- 9. Pythonのlogging.formatterオブジェクトからフォーマッタ文字列を取得するにはどうすればよいですか?
- 10. ActiveRecordクエリとの関連付けからオブジェクトを取得するにはどうすればよいですか?
- 11. C++からcmd.exeに一連の文字を送信するにはどうすればよいですか?
- 12. 列ベースのCoNLL形式をPenn Treebank注釈スタイルに変換するにはどうすればよいですか?
- 13. XElementからXMLフラグメントを文字列として取得するにはどうすればよいですか?
- 14. 関連する2つのテーブルからデータを取得するにはどうすればよいですか?
- 15. 一連の画像の累積高さを取得するにはどうすればよいですか?
- 16. 一連のパスワードとして機能するように、一連の文字列をプログラミングするにはどうすればよいですか?
- 17. atlassian-python-apiを使ってコンテキストを取得するにはどうすればいいですか?
- 18. ノードと互換性のあるCSSルールを取得するにはどうすればよいですか?
- 19. Laravel 5.2のコレクションから関連モデルを取得するにはどうすればよいですか?
- 20. 健康関連データのみをGoogle APIから取得するにはどうすればよいですか?
- 21. RxJavaを使用して連絡先を取得するにはどうすればよいですか?
- 22. リストから値を取得するにはどうすればよいですか? PythonとSelenium
- 23. Cの文字配列から文字列を取得するにはどうすればよいですか?
- 24. 検索の一部と一致するレコードを取得するにはどうすればよいですか?
- 25. Windowsガジェット:jsonをWebページから取得し、JavaScriptを使用して一連の配列に変換するにはどうすればよいですか?
- 26. Javaを使用して一般ルールを解釈するにはどうすればよいですか?
- 27. 携帯から連絡先リストを取得するにはどうすればよいですか?
- 28. モデルから関連データを取得するにはどうすればよいですか?
- 29. Android - 通話履歴から連絡先を取得するにはどうすればよいですか?
- 30. Knex.jsで列から一意の値を取得するにはどうすればよいですか?
私は2番目のコードを実行することができませんよスニペット。それは私に次のエラーを与えます:リソース 'corpora/treebank/combined'が見つかりません。 –
NLTKをインストールしたときにTreebankデータをインストールしなかった可能性が最も高い原因です。 [NLTK Data instructions](http://www.nltk.org/data)を参照してください。基本的に、Pythonインタプリタでは、 'nltk'をインポートし、' nltk.download() 'を呼び出すウィンドウに" Corpora "タブをクリックし、" treebank "を選択し、最後に" Download "をクリックします。完了したら閉じてください。 – Constantine