【发布时间】:2022-01-04 05:18:42
【问题描述】:
我想调整已经存在的词向量(例如来自 Spacy)并在一组相当有限的特定领域数据上重新训练它们。问题是我无法找到一种方法来获取已经训练好的向量并使它们适应我的新数据。 到目前为止,我一直在使用 gensim,但它似乎并没有像我预期的那样工作。
以下是我与 gensim 一起使用的代码,但我也将感谢任何使用 gensim 以外的东西的提示。
# illustrative example, I am using data from a textbook for the real application
training_data = [['This', 'is', 'an', 'example'],['for', 'new', 'training', 'data']]
# build a word2vec model on your dataset
base_model = Word2Vec(size=300, min_count=1)
base_model.build_vocab(training_data)
total_examples = base_model.corpus_count
# add GloVe's vocabulary & weights
base_model.build_vocab([list(glove_vectors.vocab.keys())], update=True)
#base_model.build_vocab([list(glove_vectors.index_to_key)], update=True)
# already trained spacy vectors of dim=300
base_model.intersect_word2vec_format('spacy_vecs.txt', binary=False, lockf=1.0)
# train on your data
print("Running ", base_model.epochs, "iterations")
base_model.train(training_data, total_examples=total_examples, epochs=100, compute_loss=True, callbacks=[callback()])
base_model_wv = base_model.wv
base_model.wv.save_word2vec_format('retrained_vectors.txt', binary=False)
事后检查词向量不会产生有意义的结果,所以这里一定有问题。
这是在 Python 2.7 中完成的,因为较新的 gensim 版本似乎不再支持此功能。
【问题讨论】:
-
哪种特定的 SpaCy 型号?请给它命名并链接到它的主页。另外,如果这真的是关于 SpaCy,为什么要标记为斯坦福 NLP?你能修复标签吗?
-
我不明白 “这是在 Python 2.7 中完成的,因为较新的 gensim 版本 [which?] 似乎不再支持此功能 [which?]” Python 2.x 已死并被埋葬。哪个gensim版本?你真的应该弄清楚是什么阻止你在 3.x 上运行。
-
具体的Model不是那么重要,因为我只取词向量(我也想试试其他词向量)。
标签: python python-2.7 nlp gensim word2vec