2016-11-04 20 views
-1

私は、ペルシア語の文章、タブ、ペルシア語、タブ、そしてその各行の英単語を含むファイルを持っています。私はまた、キーと浮動小数点値を持つ辞書を持っています。私は辞書にある各行のファイルの言葉も見つけなければなりません。そしてそれらの値を返します。次に、各単語の対数を計算し、最終的に各行の合計を個別に計算する必要があります。問題は、合計を計算するときに、このエラーが発生することです。TypeError: 'float'オブジェクトは反復可能ではありません。どうすれば修正できますか?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() 

私はそれを実行すると、このエラーが表示されます:

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 

私は別に、各ラインの合計を計算する必要があるとしてい最後に各行に1つの数字だけが表示されます。

+0

あなたの質問を「編集」できますので、確率は標準の文字で動作しますか?どこでも邪悪な引用符=>構文エラー。そして残りのコードは間違って間違っています(実際にはすべての行が間違っています、ごめん!) –

+0

これはより大きなコードの一部です。私はここでそれを要約した。それは間違っているとは言えません。私は浮動小数点を合計したいだけで、その部分ではうまくいきません。 – Vahideh

+0

@ Jean-FrançoisFabre実際にはコードは動作しますが、左から右へ言語の問題があるため、少なくとも私のブラウザでは間違って表示されます。私はコードをカットアンドペーストし、それが実行され、記載されたエラーを与える。 –

答えて

1

あなたのコードは確かに非常に間違っている(あなたが指すようにスキップして#4):

  1. あなたの辞書には、あなたがファイルがないライン
  2. を扱う分割している
  3. 引用符で構文エラーがあり
  4. あなたはすでにトイレの外に0に
  5. は、あなただけのresult += float(math.log(value))が必要辞書、(INIT resultを持っている場合、キーを検索するための二重ループを作成しますp)sumはiterablesです。
+0

見て、これはnaive bayes algorithimの一部です。私は辞書にある文章でその言葉を見つけなければなりません。それぞれの文章は別々に当然のことながら、いくつかの文章には複数の単語があります。私はこれらの単語を取得し、それらの "合計"を計算する必要があります。 – Vahideh

+0

質問を編集しました。あなたはそれに応じて新しい答えを書くことができますか?ありがとうございました – Vahideh

関連する問題