解释给定单词的BERT输出标记化

2024-10-02 02:29:05 发布

您现在位置:Python中文网/ 问答频道 /正文

from bert_embedding import BertEmbedding
bert_embedding = BertEmbedding(model='bert_12_768_12', dataset_name='wiki_multilingual_cased')
output = bert_embedding("any")

我需要澄清mBERT嵌入的输出。我知道WordPiect标记化用于分解输入文本。我还注意到,在提供单个单词(比如“any”)作为输入时,输出的长度等于输入中的字符数(在本例中为3)output[i]是列表的元组,其中第一个列表包含位于ith位置的字符,其前后的“未知”标记作为数组中的不同元素。接下来是三个(=输入字的长度)数组(嵌入),每个数组的大小为768。为什么输出看起来是按字符标记的(而不是按单词标记的)

还发现在列表中输入为:bert_embedding(["any"])时,输出形式会发生变化。现在的输出是一个元组,第一个元素是['[UNK]'、'state'、'[UNK]'],后面是三个不同的嵌入,可能对应于上面列出的三个标记

如果我需要为给定的输入字嵌入最后一个子字(不仅仅是最后一个字符或整个字),我如何访问它


Tags: from标记import元素列表outputanyembedding
2条回答

检查了他们的github page。关于输入格式:是,它应该是一个列表(字符串)。该特定实现还提供令牌(=字)级嵌入;因此,子词级嵌入不能直接检索,尽管它提供了一个选项,可以选择如何从子词组件派生出词嵌入(通过使用默认的avg或使用sum或仅使用最后一个子词嵌入)。请参阅BERT的HuggingFace接口,了解如何更好地控制嵌入,例如从不同的层以及使用哪些操作

the code看来,输入应该是一个句子列表,因此['any']

对于文字,我从未使用过这个库,但可能尝试更长的单词。我的假设是“any”是一个词

相关问题 更多 >

    热门问题