FastTextのベクトルが作成された方法を理解したいと思いました。これによると, 問題309 、文のベクトルは単語のベクトルを平均することによって得られます。
これを確認するために、次のスクリプトを書きました。
import numpy as np
import fastText as ft
# Loading model for Finnish.
model = ft.load_model('cc.fi.300.bin')
# Getting Word vectors for 'one' and 'two'.
one = model.get_Word_vector('yksi')
two = model.get_Word_vector('kaksi')
# Getting the sentence vector for the sentence "one two" in Finnish.
one_two = model.get_sentence_vector('yksi kaksi')
one_two_avg = (one + two) / 2
# Checking if the two approaches yield the same result.
is_equal = np.array_equal(one_two, one_two_avg)
# Printing the result.
print(is_equal)
# Result: FALSE
_
しかし、得られたベクトルは類似していないようです。
どちらも同じ値が同じではないのですか?それは私がベクトルを平均する方法に関連しますか?または、私が行方不明の何かがあるかもしれませんか?
あなたは浮動小数点数学の問題を打つかもしれません。 1つの追加がCPU上で行われ、GPU上に1つが異なる可能性があります。
それがあなたが望むものをやっているかどうかをチェックするための最良の方法は、ベクトルがほぼ全く同じであることを確認することです。
2つのベクトルを印刷し、手動でそれらを調べるか、ONE_TWOマイナスONE_TWO_AVGのDOTPRODUCT(すなわち、2つの差の長さ)を実行したいと思うかもしれません。