我想用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
分开存储。
是什么原因以及如何解决?
答案 0 :(得分:3)
Word2Vec需要将文本示例分解为word-tokens。看起来你只是在为Word2Vec提供字符串,所以当它迭代它们时,它只会看到单个字符作为单词。
韩国人是否使用空格来划分单词?如果是这样,请在将单词列表作为文本示例传递给Word2Vec之前,按空格分隔文本。
如果没有,在将你的句子传递给Word2Vec之前,你需要使用一些外部的word-tokenizer(不是gensim的一部分)。