gpt4 book ai didi

spacy - 如何合并 spacy Vocab 实例?

转载 作者:行者123 更新时间:2023-12-05 07:18:23 27 4
gpt4 key购买 nike

当处理数百万文档并将它们保存为空间文档以供以后使用(更多处理、可视化、提取特征)时,一种明显的扩展解决方案是并行/分布式处理。这意味着每个并行进程都将拥有自己的 Vocab,这些 Vocab 可能会随着时间的推移而扩展。

保存文档的时候,显然不想把词汇和文档一起保存。所以 to_disk 可能是最好的选择。为了使用 from_disk 加载文档,我们需要一个词汇表,其中包含从处理文档的时间点开始的所有内容,或者之后以及从正确的过程开始的所有内容。

我认为保留多个词汇并在每个文档中存储该词汇的 ID 有点丑陋和笨拙。一个更好的解决方案是在所有流程完成后,从每个流程的最终词汇中创建一个 uber-vocab。然后可以使用该词汇处理任何文件。

所以问题是:是否已经有一种方法可以将一堆词汇合并成一个包含所有词汇的并集的词汇?

最佳答案

这是一个从一组词汇中创建新的“合并”词汇实例的函数:

import spacy

def merge_vocabs(*vocabs):
merged = spacy.vocab.Vocab()
# Inherit some attributes from the first vocab
# This assumes they are the same across vocabs
merged.lex_attr_getters = vocabs[0].lex_attr_getters
merged.morphology = vocabs[0].morphology
merged.lookups = vocabs[0].lookups
merged.lookups_extra = vocabs[0].lookups_extra
# Copy strings and vectors from all vocabs to merged
for vocab in vocabs:
for string in vocab.strings:
string_id = merged.strings.add(string)
try:
# Copy vector if exists
vector = vocab.vectors[string_id]
merged.set_vector(string_id, vector)
except KeyError:
pass
return merged

vocab = merge_vocabs(vocab1, vocab2)

这还没有经过实战测试,但到目前为止它对我有用。

关于spacy - 如何合并 spacy Vocab 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58303670/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com