0

多くの投稿を読んだ後でも、nltk でカスタム コーパスを作成することにまだ問題があります。タグ付きの文のテキスト ファイルがあり、各項目は ... word/tag の形式の文字列です。これを使ってタガーを訓練したい。さまざまなタイプのタガーをトレーニングする train-tagger という nltk パッケージを使用しようとしています。2つの質問。1) train-tagger はテキスト ファイルを入力として使用できますか、それとも nltk コーパス オブジェクトのみを使用できますか? 2) コーパスのみを使用する場合、テキスト ファイルからコーパスを作成するにはどうすればよいですか? コーパスを作成するために次のコードを試しました...

import nltk
from nltk.corpus import PlaintextCorpusReader
corpus_root = './'
newcorpus = PlaintextCorpusReader(corpus_root, '.*')
print newcorpus.raw('IOBHarrisonsTraining.txt')  .... this is my tagged text file

動作しているようですが、出力が見つかりません。このコードが実行されるフォルダー、または nltk_data/corpora のいずれかにコーパスが作成されるはずですが、何も見つかりません。私が作成した「newcorpus」を保存するはずのコーパスモジュールにメソッドはありますか? 次に、train-tagger への入力として使用できますか? また、タグ付きの文ファイルを PlaintextCorpusReader への入力として使用する必要がありますか?

4

1 に答える 1

3

NLTK コーパスは、テキスト ファイルのコレクションとして保存されます。NLTK コーパス機能は、さまざまなファイル形式の多数のリーダー クラスとして編成されています。それらは nltk.corpus.reader にあります。nltk.corpus モジュールは、nltk_data 内のコーパスへのショートカットも提供します。コーパス ファイルへのパスを使用して、適切なリーダー クラスを起動するだけです。しかし、新しいコーパスは魔法のように nltk.corpus のオブジェクトとして表示されません。独自のものを読み取るには、適切なリーダー クラスをインスタンス化します。たとえば、nltk/corpus/init.py に次の内容が含まれています。

gutenberg = LazyCorpusLoader(
    'gutenberg', PlaintextCorpusReader, r'(?!\.).*\.txt')

PlaintextCorpusReader は、他のすべてのリーダー クラスがある nltk.corpus.reader からインポートされます。LazyCorpusReader に依存せずに直接使用できます。ドキュメントを確認してください。

しかし、実際には、サポートされているさまざまな形式でコーパスを書くことはサポートされていません。そのためには、自分のコーパスに似たコーパスを見つけて、その形式をエミュレートします。その後、同じリーダーを使用してコーパスを読み取ることができます。(たとえば、ブラウンコーパスは、単語/タグの形式のスペースで区切られたトークンで構成されていることを明らかにしています)

于 2012-12-12T09:04:42.350 に答える