2016-06-28 8 views
3

私はNLTKの学習を始めました。hereから、このようなバイグラムを使って条件付き確率を見つけるチュートリアルに従っています。python nltkでトリグラムの条件付き確率を見つける

import nltk 
from nltk.corpus import brown 
cfreq_brown_2gram = nltk.ConditionalFreqDist(nltk.bigrams(brown.words())) 

しかし、私はトリグラムを使って条件付き確率を見つけたいと思っています。 nltk.bigramsnltk.trigramsに変更しようとすると、次のエラーが発生します。

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "home/env/local/lib/python2.7/site-packages/nltk/probability.py", line 1705, in __init__ 
    for (cond, sample) in cond_samples: 
ValueError: too many values to unpack (expected 2) 

トリグラムを使用して条件付き確率を計算するにはどうすればよいですか?

+0

ご質問でコードを投稿できますか?私は何が起こっているのか勘違いしていますが、あなたのスクリプトで何をしているのか正確に確認すれば確認できます。 –

+0

私はちょうど私の質問で更新されたコードの3行を実行しました。しかし、バイグラムの代わりに、私は条件付き確率のためにトリグラムを使用したい。 –

答えて

4

nltk.ConditionalFreqDistは、データを(condition, item)タプルのシーケンスとして想定しています。 nltk.trigramsは、投稿した正確なエラーを引き起こす長さ3のタプルを返します。

あなたの投稿から、あなたが条件として使用したいものは明確ではありませんが、言語モデリングを行う際の規約は、その前任者の最後の単語を条件付けすることです。 次のコードは、その実装方法を示しています。

brown_trigrams = nltk.trigrams(brown.words()) 
condition_pairs = (((w0, w1), w2) for w0, w1, w2 in brown_trigrams) 
cfd_brown = nltk.ConditionalFreqDist(condition_pairs) 
0

hereと記載されているnグラムモデルを使用できます。

使用のための例:

from nltk.util import ngrams 

input= '...' 
N = 3 
trigrams = ngrams(input.split(), N) 
for grams in trigrams: 
    print grams 

私は強く上のドキュメントを読むことをお勧めします、と私はそれが役立つだろう願っています。

+0

私はトリグラムを得ることに問題はありません。これは 'nltk.trigrams'を使って簡単に行うことができます。私が望むのは、トリグラムを使って条件付き確率を見つけることです。 –

+0

私はここであなたを誤解しているかもしれませんが、トリグラムを抽出した後に容易に計算することはできません。辞書に? – patrick

関連する問題