Ключ Python Gensim word2vec

Я хочу сделать Word2VEC с Gensim. Я слышал, что словарный состав должен быть в кодировке 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'너'))

Выше мой исходный код. Кажется, работает хорошо. Однако есть проблема со словарным ключом. Я хочу сделать корейский word2vec, который использует Unicode. Например слово 사과 что означает извинение на английском языке, и это Unicode \xC0AC\xACFC Если я попытаюсь найти 사과 в word2vec произошла ошибка ключа...
Вместо \xc0ac\xacfc\xc0ac а также \xacfc магазины отдельно. В чем причина и как ее решить?

1 ответ

Решение

Word2Vec требует текстовых примеров, которые разбиты на слово-токены. Похоже, вы просто предоставляете строки для Word2Vec, поэтому, когда он перебирает их, он будет видеть только односимвольные слова.

Использует ли кореец пробелы для разграничения слов? Если это так, разбейте ваши тексты пробелами, прежде чем передать список слов в качестве примера текста в Word2Vec.

Если нет, вам нужно будет использовать внешний токенайзер (не являющийся частью gensim) перед передачей предложений в Word2Vec.

Другие вопросы по тегам