#python-3.x #machine-learning #nlp #fasttext
#python-3.x #машинное обучение #nlp #fasttext
Вопрос:
Вот мое обучение:
import fasttext
model = fasttext.train_unsupervised('data.txt', model='skipgram')
Теперь давайте рассмотрим первый вектор (полный вывод опущен для удобства чтения)
model.get_input_vector(0)
# array([-0.1988439 , 0.40966552, 0.47418243, 0.148709 , 0.5891477
С другой стороны, давайте введем первую строку в нашу модель:
model[data.iloc[0]]
# array([ 0.10782535, 0.3055557 , 0.19097836, -0.15849613, 0.14204402
Мы получаем другой вектор.
Почему?
Ответ №1:
Вы должны были объяснить больше о data
структуре. Кстати, когда вы используете model[data.iloc[0]]
, это эквивалентно model.get_word_vector(data.iloc[0])
. Итак, вы должны передать слово модели.
С другой стороны, model.get_input_vector(0)
может вводить предложение в модель. Поэтому вы можете сравнить результат model.get_input_vector(0)
с model.get_sentence_vector(data.iloc[0])
, если data.iloc[0]
это предложение. В противном случае вы должны получить первое слово в данных для ввода model
, а затем сравнить их векторы.
Комментарии:
1. Да,
data.iloc[0]
это действительно предложение. Я провел сравнение, как объяснено в вашем ответе, но, как ни странно, все еще получаю разные векторы2. @Elimination Вы имеете в виду передачу первого слова
data.iloc[0]
в themodel
? Имейте в виду, что вы можете перейтиdata.iloc[0]
кmodel.get_sentence_vector
, а затем сравнить результаты.3. Нет, я хочу передать все предложение целиком. Вот мое сравнение. (1)
model.get_sentence_vector(data.iloc[0])
(2)model.get_input_vector(0)
. Почему они разные?4. Чтобы лучше понять проблему, вы должны опубликовать образец ваших данных. В любом случае, вы уверены, что первый входной вектор совпадает с вашей первой строкой данных?
5. @Устранение Пожалуйста, сообщите нам вектор первого слова
data.iloc[0]
bymodel.get_word_vector
.