Я действительно принимаю каждый намек на следующую проблему, потому что все, что я хочу, это получить это вложение из этого набора данных, я напишу все свое решение, потому что (надеюсь) проблема только в некоторых частях, которые я не рассматривал .
Я работаю с аннотированным корпусом, так что у меня есть однозначные слова в данном предложении, благодаря идентификатору синтаксиса WordNet, который я буду называть тегами. Например:
Dataset
<sentence>
<text>word1 word2 word3</text>
<annotations>
<annotation anchor=word1 lemma=lemma1>tag1</annotation>
<annotation anchor=word2 lemma=lemma2>tag2</annotation>
<annotation anchor=word3 lemma=lemma3>tag3</annotation>
<annotations>
</sentence>
Исходя из этого, учитывая размерность вложения, которую я назову n, я бы хотел построить вложение следующим образом:
Погружение
lemma1_tag1 dim 1 dim 2 dim 3 ... dim n
lemma2_tag2 dim 1 dim 2 dim 3 ... dim n
lemma3_tag3 dim 1 dim 2 dim 3 ... dim n
Я думал создать корпус для Word2Vec, начиная с каждого текста каждого предложения, и заменить каждый anchor
на соответствующий lemma1_tag1
(некоторые слова могут содержать больше подчеркивания, потому что я заменил пробел в леммах подчеркиванием). Поскольку не каждое отдельное слово аннотировано, после простой предварительной обработки, выполненной для удаления стоп-слов и других знаков препинания, в конце у меня есть что-то вроде следующего примера:
Корпус Пример
let just list most_recent_01730444a headline_06344461n
Поскольку я просто заинтересован в аннотированных словах, я также создал предопределенный словарь, чтобы использовать его в качестве словаря Word2Vec. Этот файл содержит в каждой строке записи, такие как:
Пример словаря
lemma1_tag1
lemma2_tag2
Итак, определив корпус и словарь, я использовал их в наборе инструментов Word2Vec:
Эмуляция терминала
./word2vec -train data/test.txt -output data/embeddings.vec -size 300 -window 7 -sample 1e-3 -hs 1 -negative 0 -iter 10 -min-count 1 -read-vocab data/dictionary.txt -cbow 1
выход
Starting training using file data/test.txt
Vocab size: 80
Words in train file: 20811
Проблема в том, что количество слов в корпусе равно 32000000+, а количество слов в предопределенном словарном файле - около 80000. Я даже пробовал на Python с Gensim, но (конечно) у меня был тот же вывод , Я думаю, что проблема в том, что Word2Vec не рассматривает слова в формате lemma1_tag1
из-за подчеркивания, и я не знаю, как решить эту проблему. Любая подсказка приветствуется, заранее спасибо!