我一直在学习Word2Vec(Deeplearning4j),但我找不到任何支持中文的东西。从各种来源我知道它也适用于中文也可以使用一些插件。
所以请告诉我任何中文插件,以及如何用word2vec实现它。
如果Deeplearning4j Word2Vec对英语和中文(两者)的支持是好还是不好。如果没有,请用它的链接建议一些更好的选择。
语言:Java
答案 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)
分隔Fasttext可以训练中文,它建立在字符n-gram上。在我的论文中:
我为中文设置了最小字符n-gram为1。
3)Gensim(python)
PS:两者1)2)支持训练原始的word2vec。