gpt4 book ai didi

python - 将 spaCy 模型与 AllenNLP Interpret 或 Textattack 结合使用

转载 作者:行者123 更新时间:2023-12-05 07:08:21 26 4
gpt4 key购买 nike

AllenNLP Interpret 和 Textattack 应该“攻击”模型以找出它们生成输出的原因。我主要使用 spaCy 来训练我的模型,并且想尝试其中任何一个框架,看看它们是否能让我更好地理解我的模型。但似乎它们与 spaCy 模型不兼容(或者我做错了什么)。对于 Textattack,我尝试按照以下示例进行操作: https://textattack.readthedocs.io/en/latest/quickstart/overview.html但将模型与 spaCy 模型交换。效果不佳,因为在 TokenizedText 类中有

ids = tokenizer.encode(text)

这会引发错误,因为 spaCy 的 Tokenizer 对象没有名为 encode() 的方法。我注意到其中有 Textattack 的 Tokenizer 和 SpacyTokenizer 的多个子类。如果那是 Tokenizer 的兼容版本,为什么不自动检测并调用它呢?我试着交换它们,但我对 SpacyTokenizer 需要的一些参数感到困惑:

def __init__(self, word2id, oov_id, pad_id, max_seq_length=128)

word2id 是词-id 对,但什么样的 id?它是针对词汇中的所有单词还是仅针对这个特定句子的标记?oov_id 更令人困惑,因为“oov”代表“o​​ut-of-variable”,而不是 spaCy 中的“out-of-vocabulary”。此外,在 spaCy 中,它是一个 bool 值,而不是一个 id。pad_id 根本没有解释,我也不知道它是什么。

所以看起来 Textattack 和 spaCy 之间有某种联系,但我不知道如何将它们组合成一个工作示例。

当谈到 AllenNLP 解释时,我尝试使用 hotflip 攻击,但首先发生的是这个错误消息:

for i in self.vocab._index_to_token[self.namespace]:
AttributeError: 'spacy.vocab.Vocab' object has no attribute '_index_to_token'

所以这个框架似乎也不适合 spaCy,因为它需要 _index_to_token,但 spaCy 的 Vocab 没有。

有人可以帮帮我吗?

最佳答案

我是 TextAttack 的创建者之一。我们内置的 SpaCyTokenizer 使用 SpaCy 将单词转换为标记,但需要一个字典来将标记转换为其相应的 ID。这样您就可以传递嵌入的词到 ID 映射并将这些 ID 与 SpaCy token 一起使用。这就是我们的模型在幕后的工作方式。

我需要更多信息来提供帮助。训练模型时,如何将文本转换为 ID?您能否提供一段代码,使用您的分词器将字符串转换为 token ID 列表?然后我可以向您展示如何包装您的分词器以使用 TextAttack。

希望这是有道理的。我们绝对可以更聪明地使用分词器并默认支持分词器,我们将在未来的更新中努力做到这一点。

关于python - 将 spaCy 模型与 AllenNLP Interpret 或 Textattack 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61889477/

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