回答編集履歴

3

内容追記

2017/02/02 05:24

投稿

can110
can110

スコア38266

test CHANGED
@@ -10,6 +10,8 @@
10
10
 
11
11
  **float**(値)で実数に変換するように修正することで、2.7環境でも3.xと同じ値が出力されるようになりました。
12
12
 
13
+ 整数同士の演算結果の違いが原因だと思われます(2.7→int, 3.0→float)
14
+
13
15
  ```Python
14
16
 
15
17
  :

2

内容追記

2017/02/02 05:24

投稿

can110
can110

スコア38266

test CHANGED
@@ -5,3 +5,19 @@
5
5
  ~~ unicode型(**u**"リンゴ"など)で渡すと正しい結果が得られました。 ~~
6
6
 
7
7
  失礼しました。こちらの環境での再現ミスでした。上記でもだめ(0になる)でした。
8
+
9
+
10
+
11
+ **float**(値)で実数に変換するように修正することで、2.7環境でも3.xと同じ値が出力されるようになりました。
12
+
13
+ ```Python
14
+
15
+ :
16
+
17
+ return list(map(lambda x:float(x)/sum(tf_values), tf_values))
18
+
19
+ :
20
+
21
+ return [math.log10(float(len(documents))/sum([bool(term in document) for document in documents])) for term in terms]
22
+
23
+ ```

1

内容修正

2017/02/02 05:20

投稿

can110
can110

スコア38266

test CHANGED
@@ -1,13 +1,7 @@
1
1
  2.7環境では提示された結果になりますね。
2
2
 
3
- unicode型(**u**"リンゴ"など)で渡すと正しい結果が得られました。
4
3
 
5
- ```Python
6
4
 
7
- terms = [u"リンゴ", u"ゴリラ", u"ラッパ"]
5
+ ~~ unicode型(**u**"リンゴ"など)で渡すと正しい結果が得られました。 ~~
8
6
 
9
- documents = [u"リンゴ、リンゴ", u"リンゴとゴリラ", u"ゴリラとラッパ"]
10
-
11
- print(tf_idf(terms, documents))
7
+ 失礼しました。こちらの環境での再現ミスでした。上記でもだめ(0になる)でした。
12
-
13
- ```