【问题标题】:Python Gensim word2vec vocabulary keyPython Gensim word2vec 词汇键
【发布时间】:2023-03-24 23:46:01
【问题描述】:

我想用 gensim 制作 word2vec。听说词汇库应该是unicode,所以我把它转换成unicode。

# -*- encoding:utf-8 -*-
# !/usr/bin/env python
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from gensim.models import Word2Vec
import pprint

with open('parsed_data.txt', 'r') as f:
    corpus = map(unicode, f.read().split('\n'))

model = Word2Vec(size=128, window=5, min_count=5, workers=4)
model.build_vocab(corpus,keep_raw_vocab=False)
model.train(corpus)
model.save('w2v')

pprint.pprint(model.most_similar(u'너'))

以上是我的源代码。似乎工作得很好。但是词汇键有问题。我想制作使用 unicode 的韩语 word2vec。例如单词사과,这意味着英语道歉,它的unicode是\xC0AC\xACFC如果我尝试在word2vec中找到사과,就会发生关键错误...
而不是 \xc0ac\xacfc \xc0ac\xacfc 分别存储。 是什么原因以及如何解决?

【问题讨论】:

    标签: python unicode gensim word2vec


    【解决方案1】:

    Word2Vec 需要分解成单词标记的文本示例。看来您只是向 Word2Vec 提供字符串,因此当它迭代它们时,它只会将单个字符视为单词。

    韩语是否使用空格来分隔单词?如果是这样,请在将单词列表作为文本示例交给 Word2Vec 之前用空格分隔文本。

    如果没有,在将句子传递给 Word2Vec 之前,您需要使用一些外部词标记器(不是 gensim 的一部分)。

    【讨论】:

    • 嗯...我输入为[u'\ud504\ub791\uc2a4', u'\uc758', u'\uc138\uacc4', u'\uc801', u'\uc774', u'\u11ab', u'\uc758\uc0c1', u'\ub514\uc790\uc774\ub108', u'\uc5e0\ub9c8\ub204\uc5d8', u'\uc6c5\uac00\ub85c', u'\uac00', u'\uc2e4\ub0b4', u'\uc7a5\uc2dd', u'\uc6a9', u'\uc9c1\ubb3c', u'\ub514\uc790\uc774\ub108', u'\ub85c', u'\ub098\uc11c', u'\uc5c8', u'\ub2e4'] 。 Unicode 字符串列表。无效吗?
    • 这不是您创建corpus 列表的代码所显示的。 (您的实际代码与问题中的不同吗?)什么是语料库 [0]?如果它是一个字符串,而不是一个令牌列表,那么所有 Word2Vec 看到的都是单个字符。 (而且,如果您的整个词汇表似乎都是单字符标记,最新版本的 gensim 会记录警告。)
    猜你喜欢
    • 1970-01-01
    • 2017-07-19
    • 2016-06-06
    • 2016-09-08
    • 2021-06-26
    • 2019-07-02
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多