2017-10-04 5 views
1

Ich versuche, eine Funktion zu schreiben, die die Bigramm-Wahrscheinlichkeit berechnet.Erhalten der Bigramm-Wahrscheinlichkeit (Python)

Also muss ich im Grunde das Auftreten von zwei aufeinander folgenden Wörtern (zB ich bin) in einem Korpus berechnen und das durch das erste Wort dieser zwei Wörter teilen.

In der Formel ist:

P (W_n-1, W_n)/P (W_n-1)

Also in meinem Code Ich versuche, wie etwas zu tun:

def prob(self, prevWord, word): 
    word = word.strip() 
    prevWord = prevWord.strip() 
    for sen in corpus: 
     for word in sen: 
      if(word occurs after prevWord): #Pseudocode here 
        counter++ 
    numerator = counter/self.total 
    prevWordProb = self.counts[prevWord]/self.total 
    return numerator/prevWordProb 

Erstens, ist mein Ansatz gültig? Wenn ja, bin ich mir nicht sicher, wie ich den Teil des Codes codieren soll. Wie wird es aussehen?

+0

Was sind die erwarteten Argumente? In Ihrem Code ist 'corpus' nicht definiert. –

Antwort

1

Es gibt ein paar andere Probleme mit dem Code, aber wenn aufgelöst, sollte die Schleife und bedingte etwa so aussehen:

for sen in corpus: 
    for i, w in enumerate(sen): 
     if w == prevWord and sen[i+1] == word: 
      counter++