2016-11-06 7 views
2

Ich möchte die punktweise gegenseitige Informationen Scores der Elemente von zwei Listen berechnen. Lasst uns sagen, dass wirPMI der Elemente von zwei Listen

ListA = "Hi there, This is only a test message. Please enjoy the weather in the park." 
ListB = "work, bank, tree, weather, sun" 

haben Wie kann ich dann die PMI-Scores aller Paare berechnen (Arbeit, Hallo), (Arbeit gibt), (Arbeit, diese) .... (Sonne, Park).

Er arbeitete für mich die PMIs von Bigrams einer Liste zu berechnen:

def pmi(word1, word2, unigram_freq, bigram_freq, unigram_freq_values, bigram_freq_values, output_name): 
    prob_word1 = unigram_freq[word1]/float(sum(unigram_freq_values)) 
    prob_word2 = unigram_freq[word2]/float(sum(unigram_freq_values)) 
    prob_word1_word2 = bigram_freq/float(sum(bigram_freq_values)) 
    pmi = math.log(prob_word1_word2/float(prob_word1*prob_word2),2) 

unigrams = nltk.FreqDist(ListA) 
bigrams = ngrams(ListA,2) 

n1_freq = nltk.FreqDist(unigrams) 
n2_freq = nltk.FreqDist(bigrams) 

output_pmi = "test.txt" 
for bigram, freq in n2_freq.most_common(1000): 
    w1 = bigram[0] 
    w2 = bigram[1] 
    unigram_freq_val = n1_freq.values() 
    bigram_freq_val = n2_freq.values() 
    pmi(w1, w2, unigrams, freq, unigram_freq_val, bigram_freq_val, output_pmi) 

ich auf das Problem stecken blieb die PMI von Bigramme aus ListA und ListB berechnen. Ich würde es wirklich schätzen, wenn mir jemand helfen könnte. Danke vielmals!

(Die beiden Listen sind natürlich, minimal Beispiele dafür, wie meine Aufgabe aussehen.)

Antwort

1

Wenn Sie versuchen, alle Kombinationen der beiden Listen zu finden:

import itertools 

ListA = "Hi there, This is only a test message. Please enjoy the weather in the park." 
ListB = "work, bank, tree, weather, sun" 
WordsA = ListA.split() 
WordsB = ListB.split() 
#print(WordsA, "\n\n", WordsB)    #This is to show what the new lists are 
c = list(itertools.product(WordsA, WordsB)) 
print(c) 
+0

Aber wie kann Ich berechne danach den PMI dieser Kombination? Es ist dieser Teil, der mir immer noch unklar ist. – JohnD

+0

Ja, ich hatte auch Probleme, darüber nachzudenken. Können Sie mir eine Beschreibung von PMI geben, da ich (irgendwie) vergessen habe, was das ist. Ich habe getan, was ich für jetzt tun kann, aber ich kann vielleicht eine vollständige Lösung für Ihr Problem finden, wenn Sie es erklären können. Wenn Sie denken, dass ich geholfen habe (oder versuche zu helfen), dann bitte +1 meinen Code, da es wirklich hilft. Vielen Dank! –

Verwandte Themen