解释给定单词的 BERT 输出标记化
Interpreting the output tokenization of BERT for a given word
from bert_embedding import BertEmbedding
bert_embedding = BertEmbedding(model='bert_12_768_12', dataset_name='wiki_multilingual_cased')
output = bert_embedding("any")
我需要澄清 mBERT 嵌入的输出。我知道 WordPiece 标记化用于分解输入文本。我还观察到,在提供单个单词(例如“任何”)作为输入时,输出的长度等于输入中的字符数(在我们的例子中为 3)。 output[i]
是一个列表元组,其中第一个列表包含第 ith 位置的字符,其前后的 'unknown' 标记作为数组中的不同元素。接下来是三个(= 输入字的长度)数组(嵌入),每个大小为 768。为什么输出似乎是按字符标记化的(而不是单词标记化的)?
还发现当输入在列表中给出时,输出形式会发生变化:bert_embedding(["any"])
。现在的输出是一个元组,其中 ['[UNK]', 'state', '[UNK]'] 作为第一个元素,后跟三个不同的嵌入,可以想象与上面列出的三个标记相对应。
如果我需要嵌入给定输入词的最后一个子词(不仅仅是最后一个字符或整个词),我该如何访问它?
从 the code 看来,输入应该是一个句子列表,因此 ['any']
。
对于wordpiece,我从未使用过这个库,但也许可以尝试更长的单词。我在这里的假设是“任何”是一个单词。
检查了他们的github page。关于输入格式:是的,它应该是一个列表(字符串)。此特定实现还提供令牌(= word)级别的嵌入;因此不能直接检索子词级嵌入,尽管它提供了如何从子词组件派生词嵌入的选择(通过采用默认的 avg 或采用 sum 或仅采用最后一个子词嵌入)。请参阅 BERT 的 Hugggingface 接口,以更好地控制嵌入的方式,例如来自不同的层并使用哪些操作。
from bert_embedding import BertEmbedding
bert_embedding = BertEmbedding(model='bert_12_768_12', dataset_name='wiki_multilingual_cased')
output = bert_embedding("any")
我需要澄清 mBERT 嵌入的输出。我知道 WordPiece 标记化用于分解输入文本。我还观察到,在提供单个单词(例如“任何”)作为输入时,输出的长度等于输入中的字符数(在我们的例子中为 3)。 output[i]
是一个列表元组,其中第一个列表包含第 ith 位置的字符,其前后的 'unknown' 标记作为数组中的不同元素。接下来是三个(= 输入字的长度)数组(嵌入),每个大小为 768。为什么输出似乎是按字符标记化的(而不是单词标记化的)?
还发现当输入在列表中给出时,输出形式会发生变化:bert_embedding(["any"])
。现在的输出是一个元组,其中 ['[UNK]', 'state', '[UNK]'] 作为第一个元素,后跟三个不同的嵌入,可以想象与上面列出的三个标记相对应。
如果我需要嵌入给定输入词的最后一个子词(不仅仅是最后一个字符或整个词),我该如何访问它?
从 the code 看来,输入应该是一个句子列表,因此 ['any']
。
对于wordpiece,我从未使用过这个库,但也许可以尝试更长的单词。我在这里的假设是“任何”是一个单词。
检查了他们的github page。关于输入格式:是的,它应该是一个列表(字符串)。此特定实现还提供令牌(= word)级别的嵌入;因此不能直接检索子词级嵌入,尽管它提供了如何从子词组件派生词嵌入的选择(通过采用默认的 avg 或采用 sum 或仅采用最后一个子词嵌入)。请参阅 BERT 的 Hugggingface 接口,以更好地控制嵌入的方式,例如来自不同的层并使用哪些操作。