回答編集履歴

3 内容追記

can110

can110 score 17795

2017/02/02 14:24  投稿

2.7環境では提示された結果になりますね。
~~ unicode型(**u**"リンゴ"など)で渡すと正しい結果が得られました。 ~~
失礼しました。こちらの環境での再現ミスでした。上記でもだめ(0になる)でした。
**float**(値)で実数に変換するように修正することで、2.7環境でも3.xと同じ値が出力されるようになりました。
整数同士の演算結果の違いが原因だと思われます(2.7→int, 3.0→float)  
```Python
:
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]
```
2 内容追記

can110

can110 score 17795

2017/02/02 14:20  投稿

2.7環境では提示された結果になりますね。
~~ unicode型(**u**"リンゴ"など)で渡すと正しい結果が得られました。 ~~
失礼しました。こちらの環境での再現ミスでした。上記でもだめ(0になる)でした。
失礼しました。こちらの環境での再現ミスでした。上記でもだめ(0になる)でした。
**float**(値)で実数に変換するように修正することで、2.7環境でも3.xと同じ値が出力されるようになりました。
```Python
:
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]
```
1 内容修正

can110

can110 score 17795

2017/02/02 14:02  投稿

2.7環境では提示された結果になりますね。
unicode型(**u**"リンゴ"など)で渡すと正しい結果が得られました。
```Python
terms = [u"リンゴ", u"ゴリラ", u"ラッパ"]
documents = [u"リンゴ、リンゴ", u"リンゴとゴリラ", u"ゴリラとラッパ"]
print(tf_idf(terms, documents))
```
~~ unicode型(**u**"リンゴ"など)で渡すと正しい結果が得られました。 ~~
失礼しました。こちらの環境での再現ミスでした。上記でもだめ(0になる)でした。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る