我真的接受有关以下问题的所有提示,因为我想要的只是从该数据集中获取该嵌入,所以我将写出所有解决方案,因为(希望如此)该问题只是我没有考虑的某些部分
我正在使用带注释的语料库,因此由于WordNet同义词集ID,我将给定句子中的单词消除歧义,因此我将其称为标签。例如:
<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
格式的单词,而且我也不知道如何解决此问题。任何提示,不胜感激,谢谢您!
答案 0 :(得分:0)
Google的原始word2vec.c
和gensim的Word2Vec
都可以处理带有下划线的单词。
如果两者都在查看您的输入文件,并且都报告了80个唯一的单词,而您期望它们超过100,000个,则输入文件可能存在问题。
wc data/test.txt
报告什么?