我正在使用 C 版本的 word2vec(在 https://code.google.com/archive/p/word2vec/ 中找到)并在德语版维基百科的过滤转储(约 17 GB 原始文本,约 1.4 B 词)上对其进行训练。我正在使用以下设置:
-cbow 1 -size 300 -window 5 -negative 25 -hs 0 -sample 1e-4 -threads 20 -binary 1 -iter 15 -min-count 1000
生成的输出文件包含约 50k 个单词,但它们都不包含字母 ä、ö、ü 或 ß。我验证了 word2vec 可以通过制作一个包含带有这些字母的单词的小语料库来处理它们,并且它们出现在输出中。
是什么导致包含这些字符的单词没有出现在输出文件中?它是否与大型语料库或我正在使用的任何设置有某种关系?
最佳答案
应该和语料库的大小没有关系。我在维基百科转储和德语新闻文章(词汇表中有 60 万个单词)上训练了一个具有类似设置的德语模型(参见下面的链接),并为带有德语变音符号的单词生成了单词 vector 。
你可以做的事情:
- 检查你的语料库文件的字符编码以及你的训练环境是UTF-8
- 通过在预处理中将变音符号转换为其各自的二元标记(ä → ae、ß → ss 等)来避免此问题
- 查看 this project其中 word2vec 应用于德语语料库(但 gensim 使用 C 实现)
关于c - 德语维基百科上的 Word2vec C++ 培训,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42584519/