2016-10-27 11 views
0

私は問題を抱えています。私が達成しようとしていることをまとめておきます。nltk pythonを使用してmovie_reviewと似たコーパスを作成する方法3.4

私はコーパスにmovie_reviewはわずか2つのカテゴリに持っていたが、どこ私の場合のように、私は複数のカテゴリとサブカテゴリを持つことになりますをmovie_reviewsに似何かを作成したいです。例えば

は私が は、 'A'、 'B'、 'C​​'、 'D' と 'E' のようなカテゴリを作成したかったmy_corpusとしてコーパスを有していると言います。この カテゴリには、 'A'のようなサブカテゴリが含まれています サブタイトルは 'a1'、 'a2'、 'a3'などです(B、C、DおよびE)。このサブカテゴリはそれぞれ に 'a1'のような独自のサブカテゴリが 'a1.1'、 'a1.2' などあり、最後に最下位(葉)はすべてテキスト ファイルが該当するカテゴリまたはサブカテゴリに関連しています。

私の質問>どのように私は、このようなコーパスを

1作成することができますされ、それを行うためにとにかくがある、あなたの応答は大きな助けになります、あなたはまた、どのリンクに私をマッピングすることができます私を導いてください私はこの

2を行うのを助けることができる>私は私がここにも私の場合は、naivebayesがALGO実行またはmovie_reviewsにNEGおよびPOSを見つけるために、1のように、この場合にはスイート他のアルゴことができます新しく尋ねられる質問がどのカテゴリとそのサブカテゴリに関連するのかを探る必要がありますか?

親切に私を助けてください。

+0

同じように整理すると、コードを変更する可能性があります。あなたのデータはどのように見えますか? –

+0

私のデータはテキストファイルです...カテゴリとサブカテゴリが必要な理由は、ノードのように使用したいので、仕事のためにリーフなどの構造を使用したいからです。 –

+0

あなたのしかし、私はそれがコーパスリーダーを定義するという作業とは無関係であると確信しています。言い換えれば、別の質問です。 – alexis

答えて

2

CategorizedCorpusReaderのドキュメント(および/またはソース)をご覧ください。このように:

>>> help(nltk.corpus.reader.CategorizedCorpusReader.__init__) 

これは、基本クラスです。あなたは実際にあなたのデータフォーマットに合った分類されたリーダーを使用します。ファイルがプレーンテキストの場合は、CategorizedPlaintextCorpusReaderになります。あなたがリーダーを作成するときは、カテゴリを与えるファイルを経由して、ファイル名からカテゴリを抽出する正規表現を経由してカテゴリを定義するか、コンストラクタに直接渡さ辞書を経由することができます

- cat_pattern: A regular expression pattern used to find the 
    category for each file identifier. The pattern will be 
    applied to each file identifier, and the first matching 
    group will be used as the category label for that file. 

- cat_map: A dictionary, mapping from file identifiers to 
    category labels. 

- cat_file: The name of a file that contains the mapping 
    from file identifiers to categories. The argument 
    ``cat_delimiter`` can be used to specify a delimiter. 

なしあり階層的なカテゴリを直接サポートすることはできますが、ファイルは複数のカテゴリに属する​​ことができるので、自分でアレンジできます。たとえば、ファイルdonkey.txtanimalmammalの両方に割り当てます。 nltkのbrownコーパスには複数のカテゴリに属する​​ファイルがありますので、具体的に調べることができます(cat_fileアプローチを使用しています)。

nltkのシステムは、カテゴリを低レベルのカテゴリではなくfileidにマッピングします。私が示唆するように物事を設定した場合は、mycorpus.words(categories=["A", "B"])と書いて、Aa1Aa2などのすべてのファイルから単語を得ることができます。カテゴリ階層を公開したい場合は、それを自分でコーディングする必要があります。たとえば、カテゴリツリーを返すメソッドhierarchyでリーダークラスを拡張することができます。

+0

多くのありがとうalexis、私はあなたが言うようにこれを試して、おそらくこのアプローチは私を助ける必要があります。さらに、私が言ったように、corpus.readerに関するいくつかの調査も行います。 –

関連する問題