Как указано в ваших образцах данных, вы должны дать словам часть речевого тега, прежде чем использовать их.Из README (opis.txt
), включенного в ваши векторы:
Tzn że w samym modelu znajdują się słowa zapisane w następujący sposób:
lemmat::pos np. pszczoła::noun
Google переведено:
That is, in the model itself there are words written in the following way:
lemma :: pos eg. bee :: noun
README также предоставляет список допустимых частей речи.
Поскольку векторы слов были обучены таким образом, для слова без части речи нет действительного вектора.
Если по какой-то причине вам нужен вектор без части речи, вы можете перебрать все возможные части речи и взять среднее значение векторов, например:
vectors = pretrained_vectors
word = 'bee'
parts_of_speech = ['noun', 'verb', etc...]
vec = zero_vector
pos_count = 0
for part in parts_of_speech:
key = word + '::' + part
if key in vectors:
vec += vectors[word + '::' + part]
pos_count += 1
vec = vec / pos_count
# if actually using code like this, use numpy and watch for zero division
При этомЯ подозреваю, что получающиеся векторы могли иметь проблемы.Лучшим вариантом является поиск предварительно обученных векторов, которые не используют часть речи, таких как те, которые поставляются с Fasttext .