-1

入力(文字列、辞書)を受け取り、浮動小数点数を返す関数を作成しています。この関数は、評価するファイルからのテキストと個々の単語の辞書を入力として受け入れます。この関数は、テキスト全体のスコアを返す必要があります。つまり、スコアは、出現する単語のスコアの平均です。

それぞれにスコアと標準偏差が与えられた単語のリストを含む .csv ファイルがあります。ファイルでは、各行は次の形式を取ります

word{TAB}score{TAB}standard_deviation

文字をすべて小文字にして、すべてのスコアの平均をとろうとしています。

私はこれまでのところこれを持っていますが、平均を取得するための正しい方法で把握できません:

def happiness_score(string , dict):
   sum = 0
   for word in string:
      dict = dict()
      if word in dict:
         sum += word
         word = string.lower()
         word,score,std = line.split()
         d[word]=float(score),float(std)
   return sum/len(dict)
4

2 に答える 2

0

あなたの説明を読んで理解したところ、これはあなたが必要としているものかもしれません。

def happiness_score(string, score_dict):
    total = 0
    count = 0
    for word in string.lower().split():
        if word in score_dict:
            total += score_dict[word]
            count += 1
    return total/count

def compile_score_dict(filename):
    score_dict = {}
    with open(filename) as csvfile:
        reader = csv.reader(csvfile, delimiter='\t')
        for row in reader:
            score_dict[row[0].lower()] = int(row[1])
    return score_dict

score_dict = compile_score_dict('filename.csv')
happiness_score('String to find score', score_dict)
于 2012-10-18T17:12:45.727 に答える
0

実行したい正確な数学的操作がわかりません。ファイルを読み取れるかどうかはわかりません。

しかし、うまくいけば、これはいくつかのガイダンスを提供します.

# to hold your variables
holder_dict = {}

# read the file:
with open("/path/to/file.csv", 'r') as csv_read:
    for line in csv_read.readlines():
        word, score, std = line.split('\t')
        if word in holder_dict.keys():
            holder_dict[word][0] += [float(score)]
            holder_dict[word][1] += [std]
        else:
            holder_dict[word] = [[float(score)],[std]]

# get average score
for word in holder_dict.keys():
    average_score = sum(holder_dict[word][0])/len(holder_dict[word][0])
    print "average score for word: %s is %.3f" % (word, average_score)
于 2012-10-18T17:06:33.463 に答える