Word2vec
Ця стаття може бути плутаною чи неясною[en] для читачів. (жовтень 2020) |
Word2vec — це одна з методик обробки природної мови. Алгоритм word2vec використовує нейромережну модель для навчання пов'язаностей слів із великого корпусу тексту. Щойно її натреновано, така модель може виявляти слова-синоніми, або підказувати додаткові слова для часткового речення. Як випливає з її назви, word2vec представляє кожне окреме слово певним переліком чисел, званим вектором. Ці вектори ретельно підбираються таким чином, щоби проста математична функція (косинусна подібність векторів) вказувала на рівень семантичної подібності[en] між словами, представленими цими векторами.
Підхід
ред.Word2vec — це група пов'язаних моделей, які використовують для вкладання слів. Ці моделі є пласкими двошаровими нейронними мережами, тренованими відтворювати лінгвістичний контекст слів. Word2vec бере як вхід великий корпус тексту, й виробляє векторний простір, зазвичай з кількома сотнями вимірів, де кожному унікальному слову з цього корпусу призначено відповідний вектор у цьому просторі. Векторні представлення слів розташовуються в цьому векторному просторі таким чином, що слова, які поділяють спільний контекст у корпусі, розташовуються близько одне до одного в цьому просторі.[1]
Історія
ред.Word2vec було створено та опубліковано 2013 року командою дослідників від проводом Томаша Міколова[en] з Google. Їхні дві праці[2][3] було процитовано в науковій літературі 17231 та 21670 разів відповідно (Google Scholar, 2 серпня 2020 р.). Цей алгоритм запатентовано.[4] Інші дослідники зробили корисний аналіз та пояснення цього алгоритму.[5][6] Вектори вкладень, створені застосуванням алгоритму word2vec, мають деякі переваги в порівнянні з ранішими алгоритмами,[1] такими як латентно-семантичний аналіз.
НТС та пропуск-грами
ред.Щоби виробляти розподілене представлення слів, word2vec може використовувати будь-яку з двох архітектур моделей: неперервну торбу слів (НТС, англ. continuous bag-of-words, CBOW) та неперервний пропуск-грам (англ. continuous skip-gram). В архітектурі неперервної торби слів модель передбачує поточне слово з вікна слів навколишнього контексту. Порядок слів контексту не впливає на передбачування (припущення торби слів). В архітектурі неперервного пропуск-граму модель використовує поточне слово для передбачування навколишнього вікна слів контексту. Архітектура пропуск-граму надає словам найближчого контексту більшої ваги, ніж словам контексту віддаленішого.[1][7] Згідно зауваження авторів,[8] НТС є швидшою, тоді як пропуск-грам є повільнішим, але краще впорується з рідкісними словами.
Параметризація
ред.Результати тренування word2vec можуть бути чутливими до параметризації. Нижче наведено деякі важливі параметри тренування word2vec.
Алгоритм тренування
ред.Модель word2vec може бути треновано ієрархічною softmax та/або негативним вибиранням (англ. negative sampling). Для наближення умовної логарифмічної правдоподібності, яку модель прагне максимізувати, метод ієрархічної softmax використовує для зменшення обчислень дерево Гаффмана. Метод негативного вибирання, з іншого боку, підходить до задачі максимізації мінімізуванням логарифмічної правдоподібності вибраних негативних зразків. Згідно авторів, ієрархічна softmax працює краще для рідкісних слів, тоді як негативне вибирання працює краще для частих слів, і краще з векторами низької розмірності.[8] Зі збільшенням числа тренувальних епох ієрархічна softmax бути корисною перестає.[9]
Недовибирання
ред.Високочастотні слова часто дають мало інформації. Щоби підвищувати швидкість тренування, слова з частотою, вищою певного порогу, можна недовибирати.[10]
Розмірність
ред.Якість вкладання слів зі збільшенням розмірності зростає. Але після досягнення якоїсь точки гранична вигідність згасатиме.[1] Зазвичай розмірність векторів встановлюють у межах між 100 та 1 000.
Вікно контексту
ред.Розмір вікна контексту визначає, скільки слів перед та після заданого слова включатимуться як слова контексту для цього заданого слова. Згідно зауваження авторів, рекомендованим значенням є 10 для пропуск-граму та 5 для НТС.[8]
Розширення
ред.Було запропоновано розширення word2vec для побудови вкладень цілих документів (а не окремих слів).[11] Це розширення зветься paragraph2vec або doc2vec, його було втілено в інструментах C, Python[12][13] та Java/Scala[14] (див. нижче), серед яких версії для Java та Python також підтримують висновування вкладень документів на нових, небачених документах.
Векторні представлення слів для біоінформатики: БіоВектори
ред.Розширення векторного представлення слів для N-грамів у біологічних послідовностях (наприклад, ДНК, РНК та протеїнах) для застосувань у біоінформатиці було запропоновано Асґарі та Мофрадом.[15] Назване біо-векторами (БіоВек, англ. bio-vectors, BioVec) для познач��вання біологічних послідовностей в цілому, й протеїн-векторами (ПротВек, англ. protein-vectors, ProtVec) для протеїнів (послідовностей амінокислот) та ген-векторами (ГенВек, англ. gene-vectors, GeneVec) для послідовностей генів, це представлення можливо широко використовувати в застосуваннях машинного навчання в протеоміці та геноміці. Ці результати дозволяють припустити, що БіоВектори можуть характеризувати біологічні послідовності в термінах біохімічних та біофізичних інтерпретацій закономірностей, що лежать в їх основі.[15] Подібний варіант, dna2vec, показав, що існує кореляція між оцінкою подібності Нідлмана — Вунша та косинусною подібністю векторного представлення слів dna2vec.[16]
Векторні представлення слів для радіології: розумне вкладання слів (РВС)
ред.Розширення векторного представляння слів для створювання щільного векторного представлення неструктурованих радіологічних звітів було запропоновано Банерджі та ін.[17] Одним із найбільших викликів, пов'язаних із word2vec, є те, як оброблювати невідомі або позасловникові слова та морфологічно подібні слова. Особливо це може бути проблемою в таких областях як медицина, де симптоми та пов'язані слова можуть використовувати залежно від стилю, якому віддає перевагу рентгенолог, і слова можуть бути вживаними нечасто у великому корпусі. Якщо модель word2vec не зустрічала певного слова раніше, її буде змушено використовувати випадковий вектор, що є загалом дуже далеким від його ідеального представлення.
Для подолання головних викликів, пов'язаних із витягуванням інформації з клінічних текстів, до яких належать неоднозначність вільного переповідного стилю тексту, лексичні варіації, використання неграматичних та телеграфних фраз, довільне впорядкування слів, та часте трапляння абревіатур та акронімів, РВС (англ. Intelligent Word Embedding, IWE) поєднує word2vec з методикою семантично-словникового відображування (англ. semantic dictionary mapping). Особливо цікаво, що модель РВС (натренована на одному установчому наборі даних) було успішно перенесено на інший установчий набір даних, що показує добру узагальнюваність цього підходу над установами.
Аналіз
ред.Причини успішного навчання вкладень слів у системі word2vec є погано вивченими. Ґолдберґ та Леві вказують, що цільова функція word2vec змушує слова, що трапляються в подібних контекстах, мати подібні вкладення (згідно вимірювань косинусної подібності), й зауважують, що це узгоджується з дистрибутивною гіпотезою Дж. Р. Ферта. Проте вони зауважують, що це пояснення є «дуже на пальцях», і стверджують, що краще було би мати формальніше пояснення.[5]
Леві та ін. (2015)[18] показують, що більша частина чудової продуктивності в подальших задачах word2vec та подібних вкладань є результатом не самих цих моделей, а вибору конкретних гіперпараметрів. Перенесення цих гіперпараметрів на «традиційніші» підходи видає в подальших задачах подібні продуктивності. Арора та ін. (2016)[19] пояснюють word2vec та подібні алгоритми як такі, що виконують висновування для простої породжувальної моделі для тексту, до якого входить породжувальний процес випадкового блукання на основі логлінійної предметної моделі. Вони використовують це, щоби пояснити деякі властивості вкладань слів, включно з їхнім використанням для розв'язування аналогій.
Збереження семантичних та синтаксичних зв'язків
ред.Підхід вкладання слів є здатним вловлювати декілька різних степенів подібності між словами. Міколов та ін. (2013)[20] виявили, що семантичні та синтаксичні закономірності можливо відтворювати застосуванням векторної арифметики. Такі закономірності, як «Man is to Woman as Brother is to Sister» (укр. «Чоловік» для «Жінка» це як «Брат» для «Сестра») можливо породжувати через алгебричні операції на векторних представленнях цих слів, так що векторне представлення «Brother» − «Man» + «Woman» виробляє результат, що в цій моделі є найближчим до векторного представлення «Sister». Такі зв'язки можливо породжувати для ряду як семантичних взаємовідношень (таких як Країна — Столиця), так і для синтаксичних (наприклад, теперішній час — минулий час).
Оцінювання якості моделі
ред.Міколов та ін. (2013)[1] розробляють підхід до оцінювання якості моделей word2vec, який спирається на обговорені вище семантичні та синтаксичні закономірності. Вони розробили набір із 8 869 семантичних та 10 675 синтаксичних відношень, який вони використовують як еталон для перевірки точності моделі. Оцінюючи якість векторної моделі, користувач може спиратися на цю перевірку точності, втілену в word2vec,[21] або розробляти свій власний перевірний набір, що є змістовним для корпусу, який складає цю модель. Цей підхід пропонує привабливішу перевірку, ніж просто стверджування, що слова, найподібніші до заданого перевірного слова, є інтуїтивно вірогідними.[1]
Параметри та якість моделі
ред.Використання різних параметрів моделі та різних розмірів корпусу може сильно впливати на якість моделі word2vec. Точність можливо покращувати рядом шляхів, включно з вибором архітектури моделі (НТС чи пропуск-грам), збільшенням тренувального набору даних, збільшенням числа вимірів вектору, та збільшенням розміру вікна слів, які розглядає цей алгоритм. Кожне з цих вдосконалень пов'язано з витратами на збільшену обчислювальну складність, і відтак із подовженим часом породження моделі.[1]
В моделях, що використовують великий корпус та високе число вимірів, пропуск-грамова модель видає найвищу загальну точність, та стійко виробляє найвищу точність у семантичних зв'язках, у той же час видаючи найкращу синтаксичну точність в більшості випадків. Проте НТС є менш обчислювально витратною, й відає результати подібної точності.[1]
Точність загалом зростає зі зростанням числа використовуваних слів, і зі зростанням числа вимірів. Міколов та ін.[1] повідомляють, що подвоєння обсягу тренувальних даних призводить до зростання обчислювальної складності, еквівалентного подвоєнню числа вимірів вектору.
Альтзайлер зі співавторами (2017) досліджували продуктивність word2vec у двох семантичних перевірках для різних розмірів корпусу.[22] Вони виявили, що word2vec має круту криву спроможності навчатися[en], перевершуючи іншу методику вкладання слів (ЛСА), коли її тренують з розмірами корпусу від середнього до великого (понад 10 мільйонів слів). Проте з малим тренувальним корпусом ЛСА показувала кращу продуктивність. Крім того, вони показують, що найкраще налаштування параметрів залежить від задачі та тренувального корпусу. Менше з тим, для пропуск-грамових моделей, тренованих на корпусі середнього розміру, з 50 вимірами, розмір вікна в 15 та 10 негативних зразків видаються добрим налаштуванням параметрів.
Див. також
ред.Примітки
ред.- ↑ а б в г д е ж и к Mikolov, Tomas та ін. (2013). Efficient Estimation of Word Representations in Vector Space. arXiv:1301.3781 [cs.CL]. (англ.)
- ↑ Mikolov, Tomas та ін. (2013). Efficient Estimation of Word Representations in Vector Space. arXiv:1301.3781 [cs.CL]. (англ.)
- ↑ Mikolov, Tomas (2013). Distributed representations of words and phrases and their compositionality. Advances in Neural Information Processing Systems. arXiv:1310.4546. (англ.)
- ↑ [1], "Computing numeric representations of words in a high-dimensional space" (англ.)
- ↑ а б Goldberg, Yoav; Levy, Omer (2014). word2vec Explained: Deriving Mikolov et al.'s Negative-Sampling Word-Embedding Method. arXiv:1402.3722 [cs.CL]. (англ.)
- ↑ Řehůřek, Radim. Word2vec and friends (Youtube video). Процитовано 14 серпня 2015. Архівована копія. Архів оригіналу за 22 травня 2020. Процитовано 16 травня 2022.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) (англ.) - ↑ Mikolov, Tomas; Sutskever, Ilya; Chen, Kai; Corrado, Greg S.; Dean, Jeff (2013). Distributed representations of words and phrases and their compositionality. Advances in Neural Information Processing Systems[en]. arXiv:1310.4546. Bibcode:2013arXiv1310.4546M. (англ.)
- ↑ а б в Google Code Archive - Long-term storage for Google Code Project Hosting. code.google.com. Архів оригіналу за 3 листопада 2020. Процитовано 13 червня 2016. (англ.)
- ↑ Parameter (hs & negative). Google Groups. Архів оригіналу за 22 січня 2011. Процитовано 13 червня 2016. (англ.)
- ↑ Visualizing Data using t-SNE (PDF). Journal of Machine Learning Research, 2008. Vol. 9, pg. 2595. Архів оригіналу (PDF) за 6 травня 2021. Процитовано 18 березня 2017. (англ.)
- ↑ Le, Quoc та ін. (2014). Distributed Representations of Sentences and Documents. arXiv:1405.4053 [cs.CL]. (англ.)
- ↑ Doc2Vec tutorial using Gensim. Архів оригіналу за 23 січня 2021. Процитовано 2 серпня 2015. (англ.)
- ↑ Doc2vec for IMDB sentiment analysis. Архів оригіналу за 7 січня 2020. Процитовано 18 лютого 2016. (англ.)
- ↑ Doc2Vec and Paragraph Vectors for Classification. Архів оригіналу за 31 грудня 2015. Процитовано 13 січня 2016. (англ.)
- ↑ а б Asgari, Ehsaneddin; Mofrad, Mohammad R.K. (2015). Continuous Distributed Representation of Biological Sequences for Deep Proteomics and Genomics. PLOS ONE. 10 (11): e0141287. arXiv:1503.05140. Bibcode:2015PLoSO..1041287A. doi:10.1371/journal.pone.0141287. PMC 4640716. PMID 26555596.
{{cite journal}}
: Обслуговування CS1: Сторінки із непозначеним DOI з безкоштовним доступом (посилання) (англ.) - ↑ Ng, Patrick (2017). dna2vec: Consistent vector representations of variable-length k-mers. arXiv:1701.06279 [q-bio.QM]. (англ.)
- ↑ Banerjee, Imon; Chen, Matthew C.; Lungren, Matthew P.; Rubin, Daniel L. (2018). Radiology report annotation using intelligent word embeddings: Applied to multi-institutional chest CT cohort. Journal of Biomedical Informatics. 77: 11—20. doi:10.1016/j.jbi.2017.11.012. PMC 5771955. PMID 29175548. (англ.)
- ↑ Levy, Omer; Goldberg, Yoav; Dagan, Ido (2015). Improving Distributional Similarity with Lessons Learned from Word Embeddings. Transactions of the Association for Computational Linguistics. Transactions of the Association for Computational Linguistics. 3: 211—225. doi:10.1162/tacl_a_00134. Архів оригіналу за 12 листопада 2020. Процитовано 24 жовтня 2020. (англ.)
- ↑ Arora, S та ін. (Summer 2016). A Latent Variable Model Approach to PMI-based Word Embeddings. Transactions of Assoc. Of Comp. Linguistics. 4: 385—399. doi:10.1162/tacl_a_00106. Архів оригіналу за 12 листопада 2020. Процитовано 24 жовтня 2020 — через ACLWEB. (англ.)
- ↑ Mikolov, Tomas; Yih, Wen-tau; Zweig, Geoffrey (2013). Linguistic Regularities in Continuous Space Word Representations. HLT-Naacl: 746—751. (англ.)
- ↑ Gensim - Deep learning with word2vec. Архів оригіналу за 17 червня 2016. Процитовано 10 червня 2016. (англ.)
- ↑ Altszyler, E.; Ribeiro, S.; Sigman, M.; Fernández Slezak, D. (2017). The interpretation of dream meaning: Resolving ambiguity using Latent Semantic Analysis in a small corpus of text. Consciousness and Cognition. 56: 178—187. arXiv:1610.01520. doi:10.1016/j.concog.2017.09.004. PMID 28943127. S2CID 195347873. (англ.)
Посилання
ред.- Wikipedia2Vec [Архівовано 19 вересня 2020 у Wayback Machine.][2] [Архівовано 29 жовтня 2020 у Wayback Machine.] (введення [Архівовано 9 листопада 2020 у Wayback Machine.])
Втілення
ред.- C [Архівовано 5 грудня 2020 у Wayback Machine.]
- C# [Архівовано 30 жовтня 2020 у Wayback Machine.]
- Python (TensorFlow) [Архівовано 24 березня 2020 у Wayback Machine.]
- Python (Gensim) [Архівовано 30 жовтня 2020 у Wayback Machine.]
- Java/Scala [Архівовано 8 листопада 2020 у Wayback Machine.]