存储和加载包含词向量的 spaCy 文档
Posted
技术标签:
【中文标题】存储和加载包含词向量的 spaCy 文档【英文标题】:Storing and Loading spaCy Documents Containing Word Vectors 【发布时间】:2020-10-30 09:05:49 【问题描述】:我有一堆想要用 spaCy 处理的文档。当我在 lg 模型中加载时,将为每个处理的文档生成词向量。我想将所有这些信息存储到磁盘上,以便以后检索。原因是我正在执行成对相似性。
这就是我正在做的事情来拯救他们
import spacy
nlp = spacy.load('en_core_web_lg')
doc = nlp(my_text)
doc.to_disk(my_file)
这就是我正在做的恢复
import spacy
nlp = spacy.load('en_core_web_lg')
idoc = Doc(Vocab()).from_disk(os.path.join(saved_docs, all_docs[i]))
jdoc = Doc(Vocab()).from_disk(os.path.join(saved_docs, all_docs[j]))
print(idoc.similarity(jdoc))
这会产生:
ModelsWarning:[W007] 您使用的模型没有词向量 加载,因此 Doc.similarity 方法的结果将基于 标注器、解析器和 NER,它们可能不会提供有用的相似性 判断。如果您使用其中一种小型模型,则可能会发生这种情况, 例如
en_core_web_sm
,不附带词向量,仅使用 上下文敏感的张量。您可以随时添加自己的词向量, 或使用其中一种较大的型号(如果有)。
好像词向量没有在 to_disk/from_disk 过程中存活。
保存这些信息的正确方法是什么?
【问题讨论】:
【参考方案1】:我找到了一个方法,不知道是不是最有效。但显然to_disk()
函数并没有按照我想要的方式工作。
import spacy
nlp = spacy.load('en_core_web_lg')
doc = nlp(my_text)
doc.to_disk(my_doc_file)
doc.vocab.to_disk(my_doc_dir)
和
import spacy
nlp = spacy.load('en_core_web_lg')
idoc = Doc(Vocab()).from_disk(my_doc_i_file)
idoc.vocab.from_disk(my_doc_i_dir)
jdoc = Doc(Vocab()).from_disk(my_doc_j_file)
jdoc.vocab.from_disk(my_doc_j_dir)
print(idoc.similarity(jdoc))
词向量(如果存在)存储在单个标记对象中,例如 doc[0].vector 将给出第一个标记的词向量。仅在 Doc 对象上调用 to_disk 不会填充这些词向量。
【讨论】:
以上是关于存储和加载包含词向量的 spaCy 文档的主要内容,如果未能解决你的问题,请参考以下文章