繁体   English   中英

Word2Vec 中文

[英]Word2Vec with chinese

我一直在学习 Word2Vec(Deeplearning4j) 但我找不到任何关于它支持中文的内容。 从各种来源我了解到它也可以通过使用一些插件来为中文工作。

所以请告诉我任何中文插件,以及它应该如何用word2vec实现。

如果 Deeplearning4j Word2Vec 是否适合英语和中文(两者)支持。 如果没有,请通过它的链接建议一些更好的选择。

语言:Java

我不懂 java,但我可以告诉你如何使用 python 来做到这一点:

import jieba
import gensim
q = [u'我到河北省来', u'好棒好棒哒']
z = [list(jieba.cut(i)) for i in q]
model = gensim.models.Word2Vec(z, min_count=1)
model.similar_by_word(u'我')

结果不好,因为训练数据很少。 如果添加更多数据,结果会更好。 而对于你的情况,你可以使用Java编写的Tokenizer,和jieba库做同样的工作,然后将正确格式的数据放入模型并训练它。

word2vec 只是一个词向量的数据集,在大多数情况下,它是一个文本文件,每行包含一个“词”,它的词向量用空格(或制表符)分隔。

你可以用任何编程语言训练这个 word2vec。 加载文本文件对您来说应该不是问题。

就中文而言,我建议使用 3 个工具:

1) Character-enhanced Word Embedding (c++)

陈新雄、徐磊、刘志远、孙茂松、栾焕波。 字符和词嵌入的联合学习。 第 25 届国际人工智能联合会议 (IJCAI 2015)。

请注意,CWE 的输出以制表符 (\\t) 分隔

2) Facebook的快速文本(c ++)

Fasttext 可以训练中文,它是建立在字符 n-gram 上的。 在我的论文中:

Aicyber 的 IALP 2016 共享任务系统:字符增强词向量和增强神经网络

我将中文的最小字符 n-gram 设置为 1。

3)Gensim(蟒蛇)

@Howardyan 向您展示了使用 gensim 的代码,包括标记器。 请注意,gensim 的默认训练方法是 CBOW。 Skip-gram 可能会给你更好的结果,这取决于你的数据。 这是对gensim 和 Fasttext的比较

PS:两者1)2)都支持训练原始word2vec。

正如其他评论中提到的,word2vec 是一组带有预训练英文词向量的词。 同样,您可以找到其他包含中文词向量的数据集。 我正在使用 python,但我认为编程语言并不重要,因为您要查找的是数据集而不是模型或程序。

以下是腾讯人工智能实验室训练的中文词嵌入数据集,包含超过 800 万个中文词组: https : //ai.tencent.com/ailab/nlp/en/embedding.html

Deeplearning4j 可以支持任何语言。 您只需要实现一个自定义标记器。 请参阅: https : //github.com/deeplearning4j/deeplearning4j-nlp-addons以获取日语示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM