根据 NLP 来说真的是老文档,但对我来说,这个文档看起来像是 NLP 新时代的开始,它使用黑盒技术来学习语言模型,并且似乎它的进一步发展变成了 WORD EMBEDDING - 据我记得这个想法由谷歌的 Mikolov 于 2008 年提出(谷歌将其技术称为 word2vec)。这是使用递归神经网络来学习模型,将单词呈现为 n 维向量(在 google 的 word2vec 中它是 n=128)。这种表示结果非常好,因为相似的词在空间上比其他词更接近。算术也在那里工作,例如:德国首都+巴黎=法国。在这里,您有很好的文章、解释以及根据词嵌入在 tensorflow 中的实现:
https://www.tensorflow.org/versions/r0.10/tutorials/word2vec/index.html
所以已经有一些实现——以及用于学习自己模型的现成语料库数据。
已编辑
我更正了链接 - 是错误的。在 C++ 中的谷歌代码上也有 word2vec 实现,但在谷歌代码项目中非常有用的是很多额外的数据。这是链接:
https ://code.google.com/archive/p/word2vec/
在那里你可以找到预训练模型(1.5gb),还可以链接到训练数据:在哪里获得训练数据
词向量的质量随着训练数据量的增加而显着提高。出于研究目的,您可以考虑使用在线可用的数据集:
- 来自维基百科的第一个十亿字符(使用马特马奥尼页面底部的预处理 perl 脚本)
- 最新的 Wikipedia 转储 使用与上述相同的脚本来获取干净的文本。应该超过30亿字。
- WMT11 站点:多种语言的文本数据(在训练模型之前应删除重复的句子)
- 来自“十亿字语言建模基准”的数据集几乎 1B 字,已经预处理的文本。
- UMBC 网络数据库语料库 大约 30 亿字,更多信息请点击此处。需要进一步处理(主要是标记化)。- 更多语言的文本数据可以在 statmt.org 和 Polyglot 项目中获得。