謎
類似記事を取得する関数を作っていたときに、なぜか結果が2回出力される。
実行プログラム
for index, row in df3.iterrows():
result = model.docvecs.most_similar([model.infer_vector([texts[490]])], topn=5)
print(result)
結果
[(61986, 0.4148428440093994), (93717, 0.40714001655578613), (67228, 0.39675790071487427), (18714, 0.39518919587135315), (71296, 0.39392682909965515)]
[(61986, 0.4148428440093994), (93717, 0.40714001655578613), (67228, 0.39675790071487427), (18714, 0.39518919587135315), (71296, 0.39392682909965515)]
most_similar関数の使い方が間違っているのかなと思い、公式サイトを読む。
特に関数の使い方で間違ってはなさそうだった。
不思議なので、ちょっと変更したプログラムで再度実行してみる。
実行プログラム
i = 0
for index, row in df3.iterrows():
if index == 490:
result = model.docvecs.most_similar([model.infer_vector([texts[490]])], topn=5)
print(i, result)
i += 1
結果
0 [(61986, 0.4148428440093994), (93717, 0.40714001655578613), (67228, 0.39675790071487427), (18714, 0.39518919587135315), (71296, 0.39392682909965515)]
1 [(61986, 0.4148428440093994), (93717, 0.40714001655578613), (67228, 0.39675790071487427), (18714, 0.39518919587135315), (71296, 0.39392682909965515)]
.........んんー?!if文が2回反応してるだとっ?! ゴシ(っд⊂)ゴシ
ハマりポイント
df3は、下記のようにpandasライブラリのdataframeで作りました。
実行プログラム
df = pd.read_json('/hoge_01.json')
df2 = pd.read_json('/hoge_02.json')
df3 = pd.concat([df,df2])
はい、これが原因でした。
pandasでは、dataframe同士をどう結合させるか決めることができ、上記のようにconcatする際に何も指定していないとindexは 振り直されません 。
つまり、
実行例
tdf = pd.DataFrame({'a':[1,2,3],'b':[4,5,6]})
tdf1 = pd.DataFrame({'a':[4,5,6],'b':[7,8,9]})
pd.concat([tdf, tdf1])
実行結果
a b
0 1 4
1 2 5
2 3 6
0 4 7
1 5 8
2 6 9
↑
index
ということですね。
結合の仕方は色々とあるようで用途にあったやり方で結合させましょう。
dataframe同士の結合についての参考サイト
参考サイト:http://sinhrks.hatenablog.com/entry/2015/01/28/073327
終わり