首页 文章

Word2Vec与中文

提问于
浏览
1

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

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

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

语言:Java

3 回答

  • 0

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

  • 0

    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 .

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

    结果不好,因为训练数据非常少 . 如果添加更多数据,结果会更好 . 根据您的情况,您可以使用Java编写的Tokenizer,并执行与jieba库相同的工作,然后将正确的格式数据放入模型并进行训练 .

相关问题