【问题标题】:In spacy, how to use your own word2vec model created in gensim?在 spacy 中,如何使用自己在 gensim 中创建的 word2vec 模型?
【发布时间】:2018-11-01 03:51:27
【问题描述】:

我已经在 gensim 中训练了我自己的 word2vec 模型,我正在尝试在 spacy 中加载该模型。首先,我需要将它保存在我的磁盘中,然后尝试在 spacy 中加载一个 init-model,但无法确定具体如何。

gensimmodel
Out[252]:
<gensim.models.word2vec.Word2Vec at 0x110b24b70>

import spacy
spacy.load(gensimmodel)

OSError: [E050] Can't find model 'Word2Vec(vocab=250, size=1000, alpha=0.025)'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory.

【问题讨论】:

标签: model word2vec gensim spacy


【解决方案1】:

正如here 解释的那样,您可以导入使用 Gensim、Fast Text 或 Tomas Mikolov 的原始 word2vec 实现训练的自定义词向量,方法是使用以下方法创建模型:

wget https://s3-us-west-1.amazonaws.com/fasttext-vectors/word-vectors-v2/cc.la.300.vec.gz
python -m spacy init-model en your_model --vectors-loc cc.la.300.vec.gz

然后你可以加载你的模型,nlp = spacy.load('your_model') 并使用它!

另见回答here的类似问题。

【讨论】:

  • 问题是:如何保存 gensim 模型以便 spaCy 可以读取
【解决方案2】:

以纯文本格式训练和保存模型:

from gensim.test.utils import common_texts, get_tmpfile
from gensim.models import Word2Vec

path = get_tmpfile("./data/word2vec.model")

model = Word2Vec(common_texts, size=100, window=5, min_count=1, workers=4)
model.wv.save_word2vec_format("./data/word2vec.txt")

压缩文本文件:

gzip word2vec.txt

这会产生一个word2vec.txt.gz 文件。

运行以下命令:

python -m spacy init-model en ./data/spacy.word2vec.model --vectors-loc word2vec.txt.gz

使用以下方法加载向量:

nlp = spacy.load('./data/spacy.word2vec.model/')

【讨论】:

  • 最后一个命令对我不起作用,因为 spacy 将 'en' 参数解释为文件路径。有效的只是按照spacy docs中的建议运行nlp = spacy.load('./data/spacy.word2vec.model/')
  • 解决我问题的桥是model.wv.save_word2vec_format("./data/word2vec.txt")
  • 对我不起作用!我按照您的步骤操作,但在运行 python -m spacy ... 命令时出现以下错误:FileNotFoundError: [Errno 2] No such file or directory: 'data/spacy.word2vec.model'
  • 通过更改此处的路径来修复它:w2v_model.wv.save_word2vec_format("word2vec.txt", binary=False) 并通过调整 spacy 命令以反映路径的更改:python3 -m spacy init-model en spacy.word2vec.model --vectors-loc word2vec.txt.gz。然后我读入标准模型和我的新向量:nlp = spacy.load('en_core_web_sm', vectors='spacy.word2vec.model')
  • 'init-model' 标志已更改为 init,请参阅 doc spacy.io/api/cli#init-model
【解决方案3】:

所有这些答案都是针对旧版本的 spacy。在最新版本中,命令更改为:

python -m spacy init vectors [OPTIONS] LANG VECTORS_LOC OUTPUT_DIR

您可以通过在命令提示符中输入 python -m spacy init --help 来了解有关选项的更多信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    相关资源
    最近更新 更多