2016-11-04 14 views
-1

Ich habe eine Datei mit einem persischen Satz, dann eine Registerkarte, ein persisches Wort, eine Registerkarte und dann ein englisches Wort in jeder Zeile davon. Ich habe auch ein Wörterbuch mit Schlüssel und Float-Werten. Ich muss die Wörter der Datei in jeder Zeile finden, die auch im Wörterbuch sind. Und dann geben Sie ihre Werte zurück. Dann muss ich den Logarithmus jedes Wortes berechnen und schließlich die Summe für jede Zeile separat berechnen. Das Problem ist, wenn ich die Summe berechnen möchte, tritt dieser Fehler auf: TypeError: 'float' -Objekt ist nicht iterierbar. Wie kann ich es reparieren?Wie bekommt man die Summe von Floats in Python?

import math 

probabilities = {"شور": 0.02, "نمک": 0.05,"زندگی": 0.07, "غذاهای": 0.01, "غذای": 0.05} 

filename = "F.txt" 

for line in open(filename, encoding="utf-8"): 
    list_line = line.split("\t") 
    words = list_line[0].split() 
    for key, value in probabilities.items(): 
     for word in words: 
      if word == key: 
       result = sum(float(math.log(value))) 
       print(word, result, end=" ") 
    print() 

Wenn ich es laufen, dieser Fehler wird angezeigt:

Traceback (most recent call last): 
    File "C:\example.py", line 14, in <module> 
    result = sum(float(math.log(value))) 
TypeError: 'float' object is not iterable 

F.txt ([https://www.dropbox.com/s/ag5at9iuuln2x02/F.txt?dl=0):

شور ورود دانشگاه جالب توجه شور passion 
۱۳ راهکار شور اشتیاق واقعی زندگی شور passion 
نمک موجود ذائقه غذاهای شور عادت شور salty 
از مضرات نمک غذای شور بدانید شور salty 

Ich habe die Summe jeder Zeile separat zu berechnen und haben nur eine Nummer für jede Zeile zuletzt.

+0

Können Sie Ihre Frage so bearbeiten, dass 'Wahrscheinlichkeiten' Standardzeichen hat und funktioniert? Supsicious Zitate überall => Syntaxfehler. Und der Rest Ihres Codes ist falsch falsch falsch (eigentlich ist jede Zeile falsch, sorry!) –

+0

das ist Teil eines größeren Codes. Ich habe es hier zusammengefasst. also kannst du nicht sagen, dass es falsch ist. Ich möchte nur Floats summieren und es funktioniert nicht nur in diesem Teil. – Vahideh

+0

@ Jean-FrançoisFabre eigentlich funktioniert der Code, wird aber (zumindest in meinem Browser) aufgrund von Sprachproblemen von links nach rechts falsch angezeigt. Ich cut-n-pasted den Code und es läuft und gibt den angegebenen Fehler. –

Antwort

1

Ihr Code ist in der Tat sehr falsch (Sie darauf hinweisen können überspringen # 4):

  1. Ihr Wörterbuch hat Syntaxfehler mit den Anführungszeichen
  2. Sie spalten eine Datei nicht Zeilen behandeln
  3. Sie eine doppelte Schleife erstellen für Schlüssel zu suchen, wenn Sie bereits ein Wörterbuch haben
  4. Sie nur result += float(math.log(value)) benötigen, (init result-0 außerhalb der Toilette p) sum ist für iterables.
+0

schau, das ist ein Teil der naiven Bayes algorithm. Ich muss die Wörter in Sätzen finden, die auch im Wörterbuch sind. jeder Satz getrennt. Natürlich gibt es in einigen Sätzen mehr als ein Wort. Ich muss diese Wörter bekommen und "Summe" von ihnen berechnen. – Vahideh

+0

Ich habe die Frage bearbeitet. Kannst du eine neue Antwort darauf schreiben? Danke – Vahideh

Verwandte Themen