質問: http://emoson.hateblo.jp/entry/2015/02/21/041904 このサイトを元にtfidfを求めるプログラムを買いてるのですが どうやら日本語には反応していなくて どれも[0,0,0]となってしまいます どなたか原因を教えてください...
回答: 2.7環境では提示された結果になりますね。 ~~ unicode型(**u**"リンゴ"など)で渡すと正しい結果が得られました。 ~~ 失礼しました。こちらの環境での再現ミスでした。上記でもだめ(0になる)でした。 **float**(値)で実数に変換するように修正することで、2.7環境でも3.xと同じ値が出力されるようになりました。 整数同士の演算結果の違いが原因だと思われます(2.7→int, 3.0→float) ``` : return list(map(lambda x:float(x)/sum(tf_values), tf_values)) : return [math.log10(float(len(documents))/sum([bool(term in document) for document in documents])) for term in terms] ```