Von file_test.txt Ich muss zählen, wie oft jedes Wort in der Datei mit Hilfe der Funktion nltk.FreqDist() erschien. Wenn ich die Worthäufigkeit zähle, muss ich sehen, ob dieses Wort in pos_dict.txt ist, und wenn dies der Fall ist, dann multipliziere die Anzahl der Wortfreq mit der Zahl, die mit demselben Wort in pos_dict.txt steht.Zählung der Worthäufigkeit und Schreiben in eine Ausgabedatei
file_test.txt
sieht wie folgt aus:
abandon, abandon, calm, clear
pos_dict.txt
wie dies für diese Worte aus:
"abandon":2,"calm":2,"clear":1,...
Mein Code ist:
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
import nltk
f_input_pos=open('file_test.txt','r').read()
def features_pos(dat):
tokens = nltk.word_tokenize(dat)
fdist=nltk.FreqDist(tokens)
f_pos_dict=open('pos_dict.txt','r').read()
f=f_pos_dict.split(',')
for part in f:
b=part.split(':')
c=b[-1] #to catch the number
T2 = eval(str(c).replace("'","")) # convert number from string to int
for word in fdist:
if word in f_pos_dict:
d=fdist[word]
print(word,'->',d*T2)
features_pos(f_input_pos)
So wie dieser sein, meine Ausgabe benötigt :
abandon->4
calm->2
clear->1
Aber meine Ausgabe dupliziert alle Ausgänge und obliussyy Multiplikation falsch. Ich bin ein bisschen festgefahren und ich weiß nicht wo der Fehler ist, wahrscheinlich benutze ich for loops falsch. Wenn jemand helfen kann, würde ich es zu schätzen wissen :)
Wie sieht Ihre Eingabedatei aus? Kannst du einen Link oder ein Sample von 'file_test.txt' und' pos_dict.txt' posten? – alvas
Meine Eingabedatei 'file_test.txt' sieht genauso aus wie ich in meiner Frage geschrieben habe, in' pos_dict.txt' sind andere Wörter enthalten, aber nicht wichtig für das Verständnis. –