Прийшов час осідлати справжнього Буцефала🏇🏻Приборкай норовливого коня разом з Newxel🏇🏻Умови на сайті
×Закрыть

Як реально працює Word2Vec (Doc2Vec)?

Друзі, хто має досвід та розуміння в сфері обробки природної мови — поясніть, будь ласка, на пальцях як працює модель для векторного представлення слів word2vec.

Один із знайомих NLP Engineerів пояснив так: нібито модель приймає як input великий текстовий корпус і співставляє кожному слову вектор, видаваючи як output координати слів. Тобто якщо слідувати цій логіці, то спочатку модель формує з цього корпусу словник, а потім запам’ятовуєте порядок розташування слова в різних документах і формує з цього вектор і якось там щось порівнює. Чи правильне це розуміння? Чи ні?

Розкажіть, будь ласка, як це працює детально.

Я прекрасно розумію, що пояснення вимагатиме значної інтектуальної праці, тому готовий вислати пляшку гарного вина автору/авторці найбільш детальної відповіді :)

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

це перше відео з уроку www.youtube.com/watch?v=yXV_Torwzyc
в наступному є описано метод, який називається negative sampling.
думаю, це те, що треба

Кажись тут есть описание nlp.stanford.edu/IR-book

Я розумію, що таке Word Count Vector, TfIDF, розумію як влаштовані нейронні мережі (input layer, hidden layer, output), більше того я можу навіть користуватися word2vec в Gensim )) Але дуже хочеться розуміти як воно працює всередині.

Дякую за посилання. Не повірите — я їх пару днів назад дивився. Але все одно трохи не зрозумів. Спробую пояснити, що саме я не розумію.

Наприклад, в мене є корпус, який складається з 100 000 твітів англійською мовою. Як буде формуватися векторне представлення слова «Trump» в цьому корпусі? Яка механіка процесу? Що означатимуть цифри у векторі?

Не можна до кінця сказати, як буде формуватись вектор для якогось певного слова. Всі вектори вчаться таким чином, щоб слова, що зустрічаються у схожих контекстах, мали близькі представлення. Відповідно, яким саме буде вектор для слова Trump залежить від того, якими будуть вектори для всіх інших слів, ну і навпаки.

Цифри в векторі нічого конкретного не означають — сенс слова кодується близкістю його вектора до векторів всіх інших слів.

Я це все розумію )) Єдине з чим проблема, так це як саме вчаться вектора, точніше на чому. Що вони беруть за інпут? розташування слова, кількість букв в ньому, тощо

На вхід беруть слова. Кожному слову відповідає вектор. Є два класичні способи вчити — передбачати слово по оточуючим словам, чи оточуючі слова по слову.

Кількість букв не має значення. Є дві підмоделі:
1) continuous bag-of-words (CBOW) передбачає поточне слово на основі оточуючих слів навколо, ліворуч і праворуч, порядок слів значення не має, лише розмір вікна. Input — оточуючі слова
2) skip-gram модель навпаки по центральному слові вчиться передбачити оточення. Чим ближче слово до центрального тим більшу вагу надає їй ця модель. Input — центральне слово.

Що означатимуть цифри у векторі?

Векторне представлення не є строгим. Має значення лише відносна косинусна відстань між векторами. Семантичний простір можна обертати відносно будь-якї осі. Цією властивістю і користуються для семантичного перекладу, коли суміщають простори натреновані на різхних мов. Бо відстань між France i Paris (для корпусу англійської) має бути бути мала і приблизно така ж як і між Франція і Париж (в корпусі української).

Ось тут можете погратися і подивитися на відстані від будь-якого слова/фрази до країн світу. Зроблено на основі doc2vec
www.connexun.com/...​ysis-short-text-geoparser

Подписаться на комментарии