将矢量从fastText导出到spaCy

时间:2018-04-05 02:52:04

标签: spacy

我下载了1.5gb的fasttext.cc向量,我使用了示例代码spaCy examples vectors_fast_text。我在终端中执行了以下命令:

python config/vectors_fast_text.py vectors_loc data/vectors/wiki.pt.vec

处理器处于100%状态几分钟后,我收到了以下文字:

  

class colspan 0.32231358

从这里发生了什么?如何将这些向量导出到其他位置,例如使用我的AWS S3培训模板?

1 个答案:

答案 0 :(得分:0)

我修改了示例脚本,加载我的语言的现有数据,读取文件word2vec,最后写入文件夹中的所有内容(此文件夹需要存在)。

按照vectors_fast_text.py:

  

[LANGUAGE] = example:“pt”

     

[FILE_WORD2VEC] =“./ data / word2vec.txt”

from __future__ import unicode_literals
import plac
import numpy

import spacy
from spacy.language import Language


@plac.annotations()
def main():
    nlp = spacy.load('[LANGUAGE]')
    with open("[FILE_WORD2VEC]", 'rb') as file_:
        header = file_.readline()
        nr_row, nr_dim = header.split()
        nlp.vocab.reset_vectors(width=int(nr_dim))
        count = 0
        for line in file_:
            count += 1
            line = line.rstrip().decode('utf8')
            pieces = line.rsplit(' ', int(nr_dim))
            word = pieces[0]
            print("{} - {}".format(count, word))
            vector = numpy.asarray([float(v) for v in pieces[1:]], dtype='f')
            nlp.vocab.set_vector(word, vector)  # add the vectors to the vocab
    nlp.to_disk("./models/new_nlp/")


if __name__ == '__main__':
    plac.call(main)

输入终端:

python vectors_fast_text.py

完成后大约需要10分钟,具体取决于word2vec文件的大小。在脚本中我打印了这个单词,以便你可以关注。

之后,您必须输入终端:

python -m spacy package ./models/new_nlp/ ./my_models/
python setup.py sdist

然后你会有一个“zip”文件。

pip install /path/to/pt_example_model-1.0.0.tar.gz

可以在spaCy网站上找到详细的教程: https://spacy.io/usage/training