从性能上考虑词嵌入算法


11

我试图将大约6000万个短语嵌入向量空间,然后计算它们之间的余弦相似度。我一直在使用sklearn's CountVectorizer和一个自定义的生成标记器的函数,该函数会产生字母和二字组。事实证明,要获得有意义的表示,我必须允许大量列,行数成线性。这会导致矩阵稀疏,从而导致性能下降。如果只有大约10,000列,那还不错,我认为这对于单词嵌入来说是相当合理的。

我正在考虑尝试使用Google,word2vec因为我敢肯定它会产生低得多的尺寸和更密集的嵌入。但是在此之前,还有其他嵌入值得一看吗?关键要求是能够扩展大约6000万个短语(行)。

我对词嵌入领域还很陌生,因此任何建议都将对您有所帮助。

我还应该补充一点,我已经在使用奇异值分解来提高性能。


您正在使用Spark吗?
eliasah

1
这就是我最初建议Spark的原因之一。抱歉,我在打电话。我没有任何关于预嵌入PCA技术的参考。
eliasah 2015年

1
我不确定使用如此大量的数据是否过分。
eliasah 2015年

1
由于您正在处理文本,因此删除多余的标记不会使尺寸减小太多。考虑一个150000个单词的词典,每个示例删除停用词将使您受益匪浅。那无济于事。
eliasah 2015年

1
否则,您可能需要考虑使用潜在Dirichlet分配进行主题建模以减少每个短语的文本向量大小。
eliasah 2015年

Answers:


3

最近有一些使用Boltzmann机器动态分配word2vec(跳过克)维度的工作。查看本文:

“无限维词嵌入”-拉维·纳尔斯尼克

基本思想是让您的训练集决定word2vec模型的维度,该维度会受到与维度大小相关的正则化术语的惩罚。

上面的论文是针对单词的,我很想知道它在短语中的表现如何。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.