Word2Vec与中文

时间:2016-05-23 07:40:14

标签: java word2vec chinese-locale deeplearning4j

我一直在学习Word2Vec(Deeplearning4j),但我找不到任何支持中文的东西。从各种来源我知道它也适用于中文也可以使用一些插件。

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

如果Deeplearning4j Word2Vec对英语和中文(两者)的支持是好还是不好。如果没有,请用它的链接建议一些更好的选择。

语言:Java

4 个答案:

答案 0 :(得分:1)

我不懂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库相同的工作,然后只需将正确的格式数据建模并进行训练即可。

答案 1 :(得分:1)

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

这是由腾讯AI实验室训练的中文单词嵌入数据集,其中包含超过800万个中文单词和短语:https://ai.tencent.com/ailab/nlp/en/embedding.html

答案 2 :(得分:0)

Deeplearning4j可以支持任何语言。您只需实现自定义标记生成器。有关日语中的示例,请参阅:https://github.com/deeplearning4j/deeplearning4j-nlp-addons

答案 3 :(得分:0)

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

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

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

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

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

请注意,CWE的输出由制表符(\ t)

分隔

2)Fast text by Facebook (c++)

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

Aicyber’s System for IALP 2016 Shared Task: Character-enhanced Word Vectors and Boosted Neural Networks

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

3)Gensim(python)

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

的比较

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