fasttext создает другой вектор после обучения

#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] в the model ? Имейте в виду, что вы можете перейти 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] by model.get_word_vector .