如何在word2vec中改变单词

时间:2016-05-08 15:42:48

标签: python gensim word2vec

我有这段代码:

kurtosis

如果我打印一个句子,那么它的输出是这样的:

import gensim
import random


file = open('../../../dataset/output/interaction_jobroles_titles_tags.txt')

read_data = file.read()

data = read_data.split('\n')

sentences = [line.split() for line in data]
print(len(sentences))
print(sentences[1])

model = gensim.models.Word2Vec(min_count=1, window=10, size=300, negative=5)
model.build_vocab(sentences)

for epoch in range(5):
    shuffled_sentences = random.shuffle(sentences)
    model.train(shuffled_sentences)
    print(epoch)
    print(model)

model.save("../../../dataset/output/wordvectors_jobroles_titles_300d_10w_wordshuffling" + '.model')

我需要的是在训练之前将单词洗牌然后保存模型。

我不确定我是否以正确的方式编码。我最终有例外:

['JO_3787672', 'JO_272304', 'JO_2027410', 'TI_2969041', 'TI_2509936', 'TA_954638', 'TA_4321623', 'TA_339347', 'TA_272304', 'TA_3017535', 'TA_494116', 'TA_798840']

我想问你怎么能改变话语。

2 个答案:

答案 0 :(得分:0)

Random.shuffle将列表移动到位并返回none。因此,在此次通话后,您的混洗句子为None

答案 1 :(得分:0)

model.build_vocab(sentences)
sentences_list = sentences
Idx = range(len(sentences_list))
print(Idx)
for epoch in range(5):
    random.shuffle(sentences)
    perm_sentences = [sentences_list[i] for i in Idx]
    model.train(perm_sentences)
    print(epoch)
    print(model)
   model.save("somefile'.model')

这解决了我的问题。

但是如何在一个句子中改变个别单词呢?

句: ['JO_3787672','JO_272304','JO_2027410','TI_2969041','TI_2509936','TA_954638','TA_4321623','TA_339347','TA_272304','TA_3017535','TA_494116','TA_798840'] < / p>

我的目标是: 如果我检查最相似的单词,让我们说['JO_3787672'],那么每次它都会预测从'JO_'开始的单词。从“TA_”和“TI_”开始的单词的相似度得分非常低。 我怀疑,这是因为数据中的单词位置(我不确定)。这就是为什么我试着在单词之间进行改组(我真的不确定它是否有帮助)。