Изменения
→Обучение модели word2vec и fastText на текстовом корпусе
'''Статья находится в разработкеВекторное представление слов''' (англ. ''word embedding'') {{---}} общее название для различных подходов к моделированию языка и обучению представлений в обработке естественного языка, направленных на сопоставление словам из некоторого словаря векторов небольшой размерности.
{|align="center" |-valign= Методы построения пространства слов "top" |[[Файл:skip-gram.png|270px|thumb|[http://www.claudiobellei.com/2018/01/06/backprop-word2vec/ Схема сети для модели Skip-gram]]] |[[Файл:cbow.png|260px|thumb|[http://www.claudiobellei.com/2018/01/06/backprop-word2vec/ Схема сети для модели CBOW]]] |[[Файл:Words-space.png|thumb|right|500px|Полученные векторы-слова отражают различные грамматические и семантические [https://towardsdatascience.com/word-embedding-with-word2vec-and-fasttext-a209c1d3e12c концепции].<br><math>W_{king} + (W_{woman} - W_{man}) =W_{queen}</math><br><math>W_{walked} - W_{walking} =W_{swam} - W_{swimming}</math>]] |}
== Примеры кода с использованием библиотеки Gensim ===== Загрузка предобученной модели русского корпуса === '''import''' gensim '''import''' gensim.downloader '''as''' download_api russian_model = download_api.load(<font color="green">'word2vec-ruscorpora-300'</font>)<br> <font color="grey"># ''Выведем первые 10 слов корпуса.<br># ''В модели "word2vec -ruscorpora-300" после слова указывается часть речи: NOUN (Googleсуществительное), 2013ADJ (прилагательное) использует нейронные сетии так далее.''<br># ''Но существуют также предоубученные модели без разделения слов по частям речи, смотри [https://github. com/RaRe-Technologies/gensim-data репозиторий]''</font>GloVe list(Standfordrussian_model.vocab.keys())[:<font color="blue">10</font>] ''<font color="grey"># ['весь_DET', 'человек_NOUN', 'мочь_VERB', 'год_NOUN', 'сказать_VERB', 'время_NOUN', 'говорить_VERB', 'становиться_VERB', 'знать_VERB', обучается на матрице совместной встречаемости'самый_DET']</font>''<br> <font color="grey"># ''Поиск наиболее близких по смыслу слов.''</font> russian_model.most_similar(<font color="green">'кошка_NOUN'</font>)fastText <reffont color="grey">''# [https('кот_NOUN', 0.7570087909698486), ('котенок_NOUN', 0.7261239290237427), ('собака_NOUN', 0.6963180303573608),'' # ''('мяукать_VERB', 0.6411399841308594), ('крыса_NOUN', 0.6355636119842529), ('собачка_NOUN', 0.6092042922973633),'' # ''('щенок_NOUN', 0.6028496026992798), ('мышь_NOUN', 0.5975362062454224), ('пес_NOUN', 0.5956044793128967),'' # ''('кошечка_NOUN', 0.5920293927192688)]''</font><br> <font color="grey"># ''Вычисление сходства слов''</font> russian_model.similarity(<font color="green">'мужчина_NOUN'</font>, <font color="green">'женщина_NOUN'</font>) <font color="grey">''# 0.85228276''</font><br> <font color="grey"># ''Поиск лишнего слова''</font> russian_model.doesnt_match(<font color="green">'завтрак_NOUN хлопья_NOUN обед_NOUN ужин_NOUN'</font>.split()) <font color="grey"># ''хлопья_NOUN''</font><br> <font color="grey"># ''Аналогия:Женщина + (Король - Мужчина) = Королева''</font> russian_model.most_similar(positive=[<font color="green">'король_NOUN'</font>,<font color="green">'женщина_NOUN'</font>], negative=[<font color="green">'мужчина_NOUN'</fasttextfont>], topn=1) <font color="grey"># ''[('королева_NOUN', 0.cc7313904762268066)]''</ fastTextfont><br> <font color="grey"># ''Аналогия: Франция = Париж + (Германия - Берлин)''</font> russian_model.most_similar(positive=[<font color="green">'париж_NOUN'</font>,<font color="green">'германия_NOUN'</font>], negative=[<font color="green">'берлин_NOUN'</reffont>], topn=1) <font color="grey"># ''[(Facebook'франция_NOUN', 20150.8673800230026245) усовершенствование word2vec]''</font>
=== Обучение модели word2vec и fastText на текстовом корпусе ===
'''from''' gensim.models.word2vec '''import''' Word2Vec
'''from''' gensim.models.fasttext '''import''' FastText
'''import''' gensim.downloader '''as''' download_api<br>
<font color="grey"># ''Скачаем небольшой текстовый корпус (32 Мб) и откроем его как итерируемый набор предложений: iterable(list(string))''</font>
<font color="grey"># ''В этом текстовом корпусе часть речи для слов не указывается''</font>
corpus = download_api.load(<font color="green">'text8'</font>)<br>
<font color="grey"># ''Обучим модели word2vec и fastText''</font>
word2vec_model = Word2Vec(corpus, size=<font color="blue">100</font>, workers=<font color="blue">4</font>)
fastText_model = FastText(corpus, size=<font color="blue">100</font>, workers=<font color="blue">4</font>)<br>
word2vec_model.most_similar(<font color="green">'car'</font>)[:<font color="blue">3</font>]
''<font color="grey"># [('driver', 0.8033335208892822), ('motorcycle', 0.7368553876876831), ('cars', 0.7001584768295288)]</font>''<br>
fastText_model.most_similar('car')[:3]
''<font color="grey"># [('lcar', 0.8733218908309937), ('boxcar', 0.8559106588363647), ('ccar', 0.8268736004829407)]</font>
== См. также ==
* [[Обработка естественного языка]]
== Примечания Источники информации ==<references* [https:/>/en.wikipedia.org/wiki/Word_embedding Word embedding] {{---}} статья о векторных представлениях в английской Википедии* [https://youtu.be/Wq414SDmOCM (YouTube) Обработка естественного языка] {{---}} лекция на русском Даниила Полыковского в курсе Техносферы* [https://youtu.be/ERibwqs9p38 (YouTube) Word Vector Representations: word2vec] {{---}} лекция на английском в Стэнфордском Университете* [https://arxiv.org/abs/1301.3781 word2vec article] {{---}} оригинальная статья по word2vec от Томаса Миколова* [https://code.google.com/archive/p/word2vec/ word2vec code] {{---}} исходный код word2vec на Google Code* [https://rare-technologies.com/word2vec-tutorial Gensim tutorial on word2vec] {{---}} небольшое руководство по работе с word2vec в библиотеке Gensim* [https://radimrehurek.com/gensim/models/fasttext.html Gensim documentation on fastText] {{---}} документация по fastText в библиотеке Gensim* [https://github.com/RaRe-Technologies/gensim-data Gensim Datasets] {{---}} репозиторий предобученных моделей для библиотеки Gensim* [https://fasttext.cc/ fastText] {{---}} NLP библиотека от Facebook * [https://arxiv.org/pdf/1607.04606.pdf fastText article] {{---}} оригинальная статья по fastText от Piotr Bojanowski* [https://rusvectores.org/ru/ RusVectōrēs] {{---}} онлайн сервис для работы с семантическими отношениями русского языка