2017-11-19 3 views
0

クラスでは、コードを完成させる必要があります。それはトークンのコーパスを取っていて、キーの辞書(nltk.bigrams()で使用されるコーパスからのバイグラム)と値として、そのバイグラムが出現する確率(私の中のbigramの頻度に基づいてコーパス)。私の解決策を行うことだった。FreqDistを辞書に変換するには?

a = nltk.FreqDist(nltk.bigrams("aaaaaaacbegdeg")) 

は私がdictionnaryを持っているが、それは次のようにトラップです:

FreqDist({('a', 'a'): 6, 
      ('a', 'c'): 1, 
      ('b', 'e'): 1, 
      ('c', 'b'): 1, 
      ('d', 'e'): 1, 
      ('e', 'g'): 2, 
      ('g', 'd'): 1}) 

私はFreqDistを取るにはどうすればよいですか? ベストに関しては、 ビアンカ

答えて

0

nltk.FreqDistオブジェクトがネイティブdictサブクラスであるネイティブcollections.Counterのサブタイプである、あなたは、単に戻って、このようなネイティブdictオブジェクトにキャスト入力できDifference between Python's collections.Counter and nltk.probability.FreqDist

を参照してください。

>>> from nltk import FreqDist, bigrams 
>>> a = FreqDist(bigrams("aaaaaaacbegdeg")) 
>>> a 
FreqDist({('a', 'a'): 6, ('e', 'g'): 2, ('d', 'e'): 1, ('c', 'b'): 1, ('b', 'e'): 1, ('a', 'c'): 1, ('g', 'd'): 1}) 
>>> dict(a) 
{('d', 'e'): 1, ('a', 'a'): 6, ('c', 'b'): 1, ('e', 'g'): 2, ('b', 'e'): 1, ('a', 'c'): 1, ('g', 'd'): 1} 
>>> b = dict(a) 
>>> b 
{('d', 'e'): 1, ('a', 'a'): 6, ('c', 'b'): 1, ('e', 'g'): 2, ('b', 'e'): 1, ('a', 'c'): 1, ('g', 'd'): 1} 

私はオブジェクトのように振る舞いますので、それはdictオブジェクトに変換する必要はありません。get()関数:

>>> a[('a', 'a')] 
6 
>>> b[('a', 'a')] 
6 

>>> a.get(('a', 'a')) 
6 
>>> b.get(('a', 'a')) 
6 
関連する問題