2

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

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

如果 Deeplearning4j Word2Vec 对英语和中文(两者)的支持好不好。如果没有,请通过它的链接提出一些更好的选择。

语言:Java

4

4 回答 4

1

I don't know java, but I can show you how to use python to do this:

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'我')

the result is not good since the training data is very-very few. If add more data, the result will be better. And for your condition, you can use a Tokenizer written by Java, and do the same work as jieba library, then just put the right format data to model and train it.

于 2016-10-08T08:58:33.060 回答
1

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

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

于 2020-11-02T08:48:31.520 回答
1

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。

于 2016-10-21T07:15:41.527 回答
0

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

于 2016-07-25T12:09:21.990 回答