Кто-нибудь может поделиться примером кода, чтобы сделать предложение2vector (sen2vec) из модели Fast.ai ULMFIT.? - PullRequest
0 голосов
/ 06 ноября 2019

Я хочу найти предложения, которые семантически и контекстно похожи. Ранее я использовал Fasttext, который является word2vec и не дает контекстных векторов. Поэтому я хочу изменить модель на современную модель, такую ​​как ULMFIT или GPT2. Я предпочитаю реализацию через библиотеку fast.ai, потому что они предоставляют хорошие методы переподготовки для пользовательских данных. Так кто-нибудь может поделиться каким-нибудь примером кода для достижения этой цели?

Я использовал fasttext word2vec и переобучил его на пользовательском наборе данных и сделал косинус сходства, чтобы получить похожие предложения.

from fastai.text import *

path = "train_data"
if __name__ == '__main__':
    data_lm = TextLMDataBunch.from_csv(path, 'texts.csv')
    data_clas = TextClasDataBunch.from_csv(path, 'texts.csv', vocab=data_lm.train_ds.vocab, bs=32)
    data_lm.save('data_lm_export.pkl')
    data_clas.save('data_clas_export.pkl')
    bs = 192
    data_lm = load_data(path, 'data_lm_export.pkl', bs=bs)
    data_clas = load_data(path, 'data_clas_export.pkl', bs=bs)
    learn = language_model_learner(data_lm, AWD_LSTM, drop_mult=0.5)
    learn.fit_one_cycle(1, 1e-2)
    learn.unfreeze()
    learn.fit_one_cycle(3, slice(1e-4, 1e-2))
    learn.predict("cloud", n_words=5)

Здесь вместо следующего слова я хочу вектор входного текста.

...