@Howardyan向您展示了使用gensim的代码,包括tokenizer . 请注意,默认的训练方法是针对gensim的CBOW . Skip-gram可能会给你更好的结果取决于你的数据 . 这是gensim and Fasttext.的比较
PS:两者都1)2)支持训练原始的word2vec .
0
我不知道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'我')
3 回答
Deeplearning4j可以支持任何语言 . 您只需实现自定义标记生成器 . 请参阅:https://github.com/deeplearning4j/deeplearning4j-nlp-addons以日语为例 .
word2vec只是单词向量的数据集,在大多数情况下,它是一个文本文件,每行包含一个“单词”,其单词向量由空格(或制表符)分隔 .
你可以用任何编程语言训练这个word2vec . 加载文本文件不应该是一个问题 .
就中文而言,我建议使用3种工具:
1)the Character-enhanced Word Embedding (c++)
陈新雄,徐磊,刘志远,孙茂松,栾焕波 . 字符和单词嵌入的联合学习 . 第25届国际人工智能联合 Session (IJCAI 2015) .
请注意CWE的输出由制表符分隔(\ t)
2)Fast text by Facebook (c++)
Fasttext可以训练中文,它 Build 在字符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 .
我不知道java,但我可以告诉你如何使用python来做到这一点:
结果不好,因为训练数据非常少 . 如果添加更多数据,结果会更好 . 根据您的情况,您可以使用Java编写的Tokenizer,并执行与jieba库相同的工作,然后将正确的格式数据放入模型并进行训练 .