【发布时间】:2019-05-16 11:12:27
【问题描述】:
我真的接受关于以下问题的每一个提示,因为我想要的只是从该数据集中获得嵌入,我将编写我的所有解决方案,因为(希望)问题只是在我没有考虑的某些部分.
我正在使用带注释的语料库,这样我就可以在给定的句子中消除歧义,这要归功于 WordNet synsets 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 格式的单词,因为有下划线,我不知道如何解决这个问题。任何提示表示赞赏,在此先感谢您!
【问题讨论】:
标签: python gensim word2vec word-embedding