?

Log in

No account? Create an account

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

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

Entries by tag: vector space model

Удобная сортировка текстовых датасетов с помощью LSA и t-SNE
kelijah
По-моему, самый простой, полностью unsupervised, и удобный для визуального анализа способ сортировки датасетов типа этого получается вот так:

1) у нас есть текстовый файл, в каждой строке которого находится одно предложение.

2) выполняем LSA по символьным шинглам:

vectorizer = TfidfVectorizer(max_features=None, ngram_range=(3, 5), min_df=1, analyzer='char')
svd_model = TruncatedSVD(n_components=LSA_DIMS, algorithm='randomized', n_iter=20, random_state=42)
svd_transformer = Pipeline([('tfidf', vectorizer), ('svd', svd_model)])
svd_transformer.fit(tfidf_corpus)
phrase_ls = svd_transformer.transform(tfidf_corpus)


3) выполняем встраивание получающегося списка векторов phrase_ls в одномерное пространство с помощью t-SNE, так что близкие вектора предложений, полученные в п.2, будут примерно так же близки друг к другу, как в исходном LSA-пространстве (я задавал LSA_DIMS=60, но это влияет больше на общее время выполнения, чем на качество итоговых результатов):

tsne = TSNE(n_components=1)
phrases_1d = tsne.fit_transform(phrase_ls)


4) остается только отсортировать предложения по получившемуся ключу 1d встраивания и сохранить результат в файл.

В результатах такой сортировки можно увидеть разные группы, например:
Read more...Collapse )

Extreme learning machine для рекуррентной сетки и быстрое получение эмбеддингов текстов
kelijah
Случайно наткнулся на следующий необычный эффект при обучении рекуррентной нейросетки.

Read more...Collapse )

Изменения в модели wordchar2vector (посимвольный рекуррентный автоэнкодер)
kelijah
Подробное описание модели: https://github.com/Koziev/chatbot/blob/master/PyModels/trainers/README.wordchar2vector.md
Исходники выложены в репо https://github.com/Koziev/chatbot, в частности код тренера и скрипт запуска обучения.

Read more...Collapse )

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

Кривые обучения для модели wordchar2vector
kelijah
Модель для чатбота была описана в этом посте. С того времени в код были добавлены новые архитектуры нейросети, доработан механизм задания параметров при запуске из командной строки и расширена документация - теперь все детально расписано тут https://github.com/Koziev/chatbot/blob/master/PyModels/trainers/README.wordchar2vector.md.

Далее - сравнение разных архитектур нейросети в ходе обучения.
Read more...Collapse )

Тренировка и использование модели посимвольного встраивания слов для чатбота
kelijah
(Начало тут https://kelijah.livejournal.com/231141.html)

Часть моделей чат-бота при работе используют разные способы векторизации слов. Один из использованных алгоритмов векторизации заключается в упаковке посимвольного представления слова с помощью сжимающего рекуррентного автоэнкодера:
Подробности реализации и скриншоты...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.

Черновики по задаче "Вопросно-ответная система на русском языке"
kelijah
Отстрелялся в задаче "Вопросно-ответная система на русском языке".
Исходники решения выложил в репозиторий https://github.com/Koziev/NLP_Comp/tree/master/SDSJ_A

Самый красивый, хотя и не самый точный, вариант - сеточная модель со сверточной и рекуррентной частями, написанная на питоне и Keras: https://github.com/Koziev/NLP_Comp/blob/master/SDSJ_A/models/nn5.py

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

Read more...Collapse )