`offset_mapping` 是什么
这意味着它们在原始文本中没有对应的字符。而其他标记则对应着原始文本中的具体字符范围。,这在很多自然语言处理任务(像问答系统、命名实体识别等)里非常关键。清晰地展示了每个标记在原始文本中的字符位置。下面是一个简单的示例,用来展示如何使用。)在进行分词操作时返回的一个重要信息,offset_mapping是。
·
offset_mapping 是什么
offset_mapping是 transformers 库中分词器(tokenizer)在进行分词操作时返回的一个重要信息,它用于建立原始文本中的字符位置和分词后标记(tokens)之间的映射关系。借助 offset_mapping,你能够知晓每个标记在原始文本中对应的字符起始和结束位置,这在很多自然语言处理任务(像问答系统、命名实体识别等)里非常关键。
具体解释
offset_mapping是一个元组列表:列表里的每个元组都代表一个标记在原始文本中的字符位置范围,元组的第一个元素是起始字符位置,第二个元素是结束字符位置。- 特殊标记的映射:特殊标记(例如
[CLS]、[SEP])的映射通常是(0, 0),这表明它们在原始文本里没有对应的字符。
示例代码
下面是一个简单的示例,用来展示如何使用 offset_mapping:
from transformers import AutoTokenizer
# 加载分词器
tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
# 原始文本
text = "Hello, how are you?"
# 进行分词并获取 offset_mapping
encoding = tokenizer.encode_plus(
text,
add_special_tokens=True,
return_offsets_mapping=True
)
# 打印 input_ids 和 offset_mapping
input_ids = encoding['input_ids']
offset_mapping = encoding['offset_mapping']
print("Input IDs:", input_ids)
print("Offset Mapping:", offset_mapping)
# 将 input_ids 转换回 tokens
tokens = tokenizer.convert_ids_to_tokens(input_ids)
# 打印每个 token 及其对应的 offset
for i in range(len(tokens)):
token = tokens[i]
start, end = offset_mapping[i]
print(f"Token: {token}, Offset: ({start}, {end}), Text: {text[start:end]}")
代码解释
- 加载分词器:使用
AutoTokenizer.from_pretrained加载bert-base-uncased分词器。 - 分词并获取
offset_mapping:调用tokenizer.encode_plus方法,设置return_offsets_mapping=True以获取offset_mapping。 - 打印结果:打印
input_ids、offset_mapping以及每个标记对应的字符位置和文本。
示例输出
Input IDs: [101, 7592, 1010, 2129, 2024, 2017, 102]
Offset Mapping: [(0, 0), (0, 5), (5, 6), (7, 10), (11, 14), (15, 18), (0, 0)]
Token: [CLS], Offset: (0, 0), Text:
Token: hello, Offset: (0, 5), Text: Hello
Token: ,, Offset: (5, 6), Text: ,
Token: how, Offset: (7, 10), Text: how
Token: are, Offset: (11, 14), Text: are
Token: you, Offset: (15, 18), Text: you
Token: [SEP], Offset: (0, 0), Text:
从输出可以看出,offset_mapping 清晰地展示了每个标记在原始文本中的字符位置。特殊标记 [CLS] 和 [SEP] 的偏移量为 (0, 0),这意味着它们在原始文本中没有对应的字符。而其他标记则对应着原始文本中的具体字符范围。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)