2017-11-19 8 views
0

In einer Klasse muss ich einen Code vervollständigen. Es nimmt Korpora von Token und soll ein Schlüsselwörterbuch (bigrams aus der corpus used form mit nltk.bigrams()) und als Werte die Wahrscheinlichkeit liefern, dass das Bigramm erscheint (basierend auf der Häufigkeit des Bigramms in meinem Korpora). Meine Lösung war zu tun:Wie konvertiert man die FreqDist in ein Wörterbuch?

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

Ich habe einen Dictionnary aber es ist Falle in dem folgenden:

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

Wie nehme ich den FreqDist aus? Beste Hinsicht Bianca

Antwort

0

Das nltk.FreqDist Objekt ist ein Subtyp des nativen collections.Counter das ist eine native dict Unterklasse findet Difference between Python's collections.Counter and nltk.probability.FreqDist

Sie einfach eingeben kann, wie diese auf das native dict Objekt zurückgeworfen:

>>> 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} 

BTW, gibt es auch keine Notwendigkeit, es zu einem dict Objekt zu konvertieren, da es wie ein dict Objekt für die primäre get() Funktion verhält:

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

>>> a.get(('a', 'a')) 
6 
>>> b.get(('a', 'a')) 
6 
Verwandte Themen