По умолчанию ElmoEmbedder
использует исходные веса и параметры из предварительно обученных моделей в тесте 1 Bil Word.Около 800 миллионов токенов.Чтобы убедиться, что вы используете самую большую модель, посмотрите на аргументы класса ElmoEmbedder
.Отсюда вы, вероятно, сможете выяснить, что вы можете установить параметры и вес модели:
elmo = ElmoEmbedder(
options_file='https://s3-us-west-2.amazonaws.com/allennlp/models/elmo/2x4096_512_2048cnn_2xhighway_5.5B/elmo_2x4096_512_2048cnn_2xhighway_5.5B_options.json',
weight_file='https://s3-us-west-2.amazonaws.com/allennlp/models/elmo/2x4096_512_2048cnn_2xhighway_5.5B/elmo_2x4096_512_2048cnn_2xhighway_5.5B_weights.hdf5'
)
Я получил эти ссылки из таблицы предварительно обученных моделей, предоставленной AllenNLP.
assert
- это удобный способ проверки и обеспечения конкретных значений переменных.Это похоже на хороший ресурс , чтобы узнать больше.Например, первый оператор assert
гарантирует, что вложение имеет три выходные матрицы.
Исходя из этого, мы индексируем с [i][j]
, потому что модель выводит 3-слойные матрицы (где мы выбираем i-th) и каждая матрица имеет n
токенов (где мы выбираем j-ую) каждый длиной 1024. Обратите внимание, как код сравнивает сходство «яблока» и «моркови», оба из которых являются 4-м токеном по индексуJ = 3.Из примера документации i представляет один из следующих элементов:
Первый уровень соответствует нечувствительному к контексту представлению токена, за которым следуют два уровня LSTM.См. Документ ELMo или последующую работу в EMNLP 2018 для описания того, какие типы информации собираются в каждом слое.
В документе приводятся подробности об этих двух слоях LSTM.
Наконец, если у вас есть набор предложений, с ELMO вам не нужно усреднять векторы токенов.Модель представляет собой символьную LSTM, которая отлично работает на целых предложениях с токенами.Используйте один из методов, предназначенных для работы с наборами предложений: embed_sentences()
, embed_batch()
и т. Д. Подробнее в коде !