You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用tokenizer.train_from_iterator时抛出TypeError: expected string or buffer错误的排查求助

调用tokenizer.train_from_iterator时抛出TypeError: expected string or buffer错误的排查求助

看起来你在自定义Tokenizer训练时遇到了TypeError,我帮你梳理下代码里的几个关键问题:

1. preprare_dataset方法存在笔误

你的preprare_dataset方法最后返回了未定义的变量examples,但前面实际构建的训练文本变量是training_texts,这会导致self.training_corpus内容异常,后续迭代器无法返回正确的训练文本:

def preprare_dataset(self):
    X2 = np.random.choice(len(self.df), size=self.size_dataset, replace=False)
    training_texts = [f"{df.iloc[i]['problem']} {df.iloc[i]['solution']}" for i in X2]
    return training_texts  # 替换原来的return examples

2. IngenxPreTokenizer类缺少base_tokenizer初始化

你在IngenxPreTokenizer的pre_tokenize方法中调用了self.base_tokenizer.process_text,但这个类没有初始化base_tokenizer属性,运行时会找不到该对象。需要补充初始化逻辑:

class IngenxPreTokenizer:
    def __init__(self, base_tokenizer):
        self.base_tokenizer = base_tokenizer  # 初始化传入的基础分词器

    def pre_tokenize(self, pretok: PreTokenizedString):
        # 关键:将PreTokenizedString对象转换为字符串,避免类型不匹配
        text = str(pretok)  # 或根据base_tokenizer要求使用pretok.normalized_str
        processed = self.base_tokenizer.process_text(text)
        normalized_tokens = []
        current_offset = 0
        for token in processed:
            token_len = len(token)
            normalized_tokens.append((
                token,
                (current_offset, current_offset + token_len)
            ))
            current_offset += token_len + 1
        
        pretok.tokens = normalized_tokens
        return pretok

之后在设置预分词器时,记得传入你的基础分词器实例:

# 替换成你实际使用的基础分词器实例
base_tokenizer = YourBaseTokenizer()
tokenizer.pre_tokenizer = PreTokenizer.custom(IngenxPreTokenizer(base_tokenizer))

3. pre_tokenize方法参数类型不匹配

你当前直接把PreTokenizedString对象传给process_text,而该方法期望接收字符串类型的输入,这正是你看到expected string or buffer错误的核心原因。上面的代码中已经通过text = str(pretok)解决了这个类型转换问题。

另外,建议你检查get_training_corpus方法yield的每个元素,确保都是标准字符串类型,避免传入非字符串内容给train_from_iterator。

备注:内容来源于stack exchange,提问作者Swaraj Gaikwad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 12:27:59