?

Log in

No account? Create an account

Компьютерная лингвистика

Новостная лента www.solarix.ru

Entries by tag: word2vec

Визуализация влияния batch_size на качество модели wordchar2vector - ч.3
kelijah
Продолжение поста https://kelijah.livejournal.com/237155.html.

То, что казалось достаточно очевидным и логичным, стало интересным при увеличении количества исходных данных. Я погонял обучение модели на новых batch_size и даже по 2 раза для некоторых batch_size, и получается вот такое облако для максимальной достигаемой точности при разных batch_size:
Read more...Collapse )
Спад для batch_size>=1000 достаточно четкий, но вот все что слева уже не такое простое. Можно видеть даже, как batch_size=180 и 500 дают очень близкие результаты, это больше похоже на плато или макушку параболы.

Визуализация влияния batch_size на качество модели wordchar2vector
kelijah
Сама модель описана тут, это просто seq2seq автоэнкодер для цепочек символов. Реализующий ее на Python+Keras код лежит тут.
Тетрадка для визуализации доступна по этой ссылке.
В ходе обучения в файле сохраняем instance accuracy - долю слов, которые точно восстановлены декодером. Эта метрика показана на графиках.
На графиках видно, что есть некий оптимум в размере батча, и вообще batch_size для данной модели влияет очень сильно:Read more...Collapse )

небольшое ручное сравнение vanilla w2v и fasttext на русском 10Гб корпусе
kelijah

Обучил word2vector и fasttext модели на одном и том же текстовом корпусе:10 Гб всяких текстов, включая социальные медиа, изобилующие опечатками и словообразовательным творчеством масс.
Параметры для w2v: CBOW=0 WIN=5 DIM=32 MIN_COUNT=1
Параметры для fasttext: SIZE=64 WINDOW=5 CBOW=0 MIN_COUNT=1
Далее сравниваю выдаваемую похожесть для нескольких пар слов с помощью 1 и 2.
Результаты под катом. Можно заметить, что в некоторых случаях fasttext дает намного лучшие результаты (борщ и борщец), корректнее учитывая русские продуктивные суффиксы. Но исправление опечаток fasttext не тянет (трактор и тракктор).

результаты для vanilla w2v...Collapse )

Результаты для fasttext...Collapse )


Enriching Word Vectors with Subword Information (aka fasttext)
kelijah
Приятно, что идея строить векторные представления для частей слов, воплощенная в этой программке https://github.com/Koziev/Word2Vec/blob/master/PyUtils/wordparts.py, была шагом в верном направлении, если внимательно посмотреть на статью "Enriching Word Vectors with Subword Information" от группы разрабов из FB.

Autoencoders for word representations и ахитектура для встраивания доп. информации
kelijah
Для эксперимента WordRepresentations делаю последний вариант получения векторного представления слов с помощью автоэнкодеров.

Read more...Collapse )

Текущие результаты для keras/theano MLP модели в эксперименте с word representations
kelijah
Репозиторий эксперимента: https://github.com/Koziev/WordRepresentations

Сделал условный grid search для основных гиперпараметров. Для 2-грамм и 3-грамм эксперимент закончен, для 4-грамм продолжается:
Read more...Collapse )

Нейросетевые модели для определения перефразировок вопросов (5)
kelijah
[начало тут http://kelijah.livejournal.com/212124.html]
Использование word2vec встраиваний и обучаемость слоя Embedding
Для word-level моделей слова переводятся в понятную сетке числовую векторную форму с помощью слоя Embedding (https://keras.io/layers/embeddings/). Матрицу весов можно инициализировать случайными числами, а можно загрузить векторы из word2vec модели и инициализировать матрицу ими. Большинство сеточных решений в данном соревновании брали готовые модели GoogleNews-vectors-negative300.bin или glove.840B.300d.txt, которые можно свободно скачать (https://github.com/mmihaltz/word2vec-GoogleNews-vectors/blob/master/GoogleNews-vectors-negative300.bin.gz и https://nlp.stanford.edu/projects/glove/). Размерность векторов в этих моделях весьма значительна, поэтому сетки обучаются долго и требуют много памяти.
Read more...Collapse )

Неудачный эксперимент: генерация морфологических признаков слов через w2v и кластеризацию
kelijah
Сама идея простая. Делал её экспериментальную реализацию для для Парсера. Потом вторая попытка - для morphorueval2017. Особого эффекта добиться не удалось, но возможно в каком-то другом сценарии анализа текста она будет полезной.

Далее описываю реализацию для morphorueval.
Есть набор корпусов, предоставленных организаторами конкурса.
Мы берем из них только слова, генерируем текстовый файл в формате: одна строка - одно предложение. Слова разделены пробелами. Занимается этим простой скриптик generate_w2v_corpus.py.
Далее выполняется встраивание слов корпуса в векторное пространство через gensim - второй скриптик train_w2v.py.
Далее выполняется кластеризация слов с помощью K-Means - см. скрипт word_clusters.sklearn.py
Наконец, номера кластеров слов используем как отдельный категориальный признак в любом алгоритме.

Если посмотреть на содержимое кластеров, то обычно можно понять, какие морфологические признаки использованы для объединения:

Read more...Collapse )

Главная проблема - небольшой объем текстового корпуса, на котором обучается word2vec. Из-за этого некоторые кластеры получаются неконсистентными.

Похоже, что это типовые синтаксические конструкции
kelijah
Немного изменил параметры кластеризации встраиваний предложений.
Read more...Collapse )

Рекуррентная и сверточная сетка для парсинга цепочки слов
kelijah
(Продолжение - см. часть 1 syntax_chars)

На уровне цепочки слов есть множество вариантов построения сеточной модели, которая будет выдавать матрицу связности слов. Кратко опишу результаты для двух экспериментальных моделей - syntax_w2v_rnn и syntax_ff.
Read more...Collapse )