Doc2Vec - Як позначити абзаци (gensim)


17

Мені цікаво, як позначити (тег) речення / абзаци / документи з doc2vec в gensim - з практичної точки зору.

Чи потрібно мати кожне речення / абзац / документ із власною унікальною міткою (наприклад, "Sent_123")? Це здається корисним, якщо ви хочете сказати, "які слова чи речення найбільш схожі на одне конкретне речення з позначкою" Sent_123 ".

Чи можете ви мітки повторюватись на основі вмісту? Наприклад, якщо кожне речення / абзац / документ стосується певного продукту (а для даного продукту є кілька пропозицій / абзаців / документів), ви можете позначити речення на основі цього продукту, а потім обчислити схожість між словом чи речення та ця мітка (що, напевно, було б середнім серед усіх тих речень, які мали відношення до продукту)?

Відповіді:


10

І те й інше можливо. Ви можете надати кожному документу унікальний ідентифікатор (наприклад, послідовний серійний номер) як доктаг або спільний рядковий доктаг, що представляє щось інше про нього, або обидва одночасно.

Конструктор TaggedDocument приймає список тегів. (Якщо ви випадково обмежитеся простою вставкою, що зростає з 0, модель Doc2Vec використовуватиме їх як прямі індекси у своєму резервному масиві, і ви збережете багато пам'яті, яка в іншому випадку буде присвячена пошуку рядка , що може бути важливим для великих наборів даних. Але ви можете використовувати рядкові doctags або навіть суміш int та string doctags.)

Вам доведеться експериментувати з тим, що найкраще підходить для ваших потреб.

Для деяких завдань класифікації, підхід, який іноді спрацьовує краще, ніж я міг би очікувати, - це повністю пропуск текстових ідентифікаторів і просто навчання моделі Doc2Vec на відомих прикладах класу з бажаними класами як доктагами. Потім ви отримуєте "doc vectors" лише для доктагів класу - не кожен документ - потенційно значно меншу модель. Пізніше виводяться вектори для нових текстів призводять до того, що вектори значущо наближені до відповідних векторів класу.


Це велике спасибі! Як осторонь, коли я починаю грати з генімом - мені цікаво, чи можна обчислити схожість між документом (незалежно від того, використовуються унікальні або спільні теги) та словом - чи можна це зробити за вашим досвідом?
B_Miner

1
Деякі режими навчання створюють вектори слів і документів всередині «одного простору», тому подібність може бути значущою. Дивіться, наприклад, цей документ - arxiv.org/abs/1507.07998 - який навіть робить своєрідну «арифметику аналогії» за участю doc-векторів (статті у Вікіпедії) та word-векторів. Навчання в цій роботі, як режим DBOW gensim з одночасним пропуском грам словесного навчання: dm=0, dbow_words=1.
gojomo

Дякую @gojomo! Я додав запит про те, як це зробити у списку gensim: groups.google.com/forum/#!topic/gensim/RLRfY6k3ulw
B_Miner

Будь ласка, виправте мене, якщо я помиляюся. В останньому абзаці ви пропонуєте, щоб кожен документ був позначений тегами, як ми тегуємо питання на цьому веб-сайті. А після тренінгу ми отримаємо векторне представлення кожного тегу. Коли новий документ надійде, ми можемо просто використовувати показник подібності для пропонування тегів для нового документа.
користувач

@user - так, це можливо, а іноді і вигідно, хоча це не обов'язково.
gojomo

9

doc2vecмодель отримує свій алгоритм word2vec.

У word2vecцьому немає необхідності маркувати слова, тому що кожне слово має своє семантичне значення у лексиці. Але у випадку doc2vec, потрібно вказати, скільки саме слів або речень мають смислове значення, щоб алгоритм міг ідентифікувати його як єдину цілість. З цієї причини ми вказуємо labelsабо tagsречення або абзац залежно від рівня переданого смислового значення.

Якщо ми вказуємо одну мітку для кількох речень в абзаці, це означає, що всі пропозиції в абзаці необхідні для передачі значення. З іншого боку, якщо ми вказуємо мітки змінних для всіх речень в абзаці, це означає, що кожне передає смислове значення, і вони можуть або не можуть мати схожість між ними.

Простіше кажучи, labelозначає смислове значення чогось.


If we specify a single label to multiple sentences in a paragraph, it means that all the sentences in the paragraph are required to convey the meaning.Я не впевнений, що я правильно це розумію. Чи алгоритми POV, чи всі речення з однаковим тегом потрібні для семантичного визначення чи всі речення з одним і тим же тегом описують те саме? У першому випадку жодне речення не є самодостатнім, у другому випадку одне речення є самодостатнім.
користувач

@user: Це другий випадок, з алгоритму POV, тег визначається як сутність, яка, використовуючись в одному реченні, фіксує значення всіх слів. Таким же чином, коли використовується у кількох реченнях, він також фіксує слова у всіх інших реченнях.
яжи
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.