V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hutng
V2EX  ›  OpenAI

为什么 gpt 不能正确识别汉字的个数?

  •  
  •   hutng · 3 天前 · 907 次点击

    刚试了一下 claude 好像也不太行。

    19 条回复    2024-06-26 18:56:13 +08:00
    bankroft
        1
    bankroft  
       3 天前
    因为它不会思考,你把他当成高级搜索引擎就行了
    cmdOptionKana
        2
    cmdOptionKana  
       3 天前
    为什么你会以为 gpt 能识别汉字个数?
    Cooky
        3
    Cooky  
       3 天前
    MelodYi
        4
    MelodYi  
       3 天前
    我觉得他对“前一句话”、“这一句话”的描述不太理解,你可以试下把要数数字的句子用引号框起来,然后再问他这句话有多少字。
    Cooky
        5
    Cooky  
       3 天前
    十九八七六五四三二,前面这句话有几个汉字几个字符
    mxT52CRuqR6o5
        6
    mxT52CRuqR6o5  
       3 天前
    现在的大语言模型因为 token 压缩的原因很难做这个事情吧
    maolon
        7
    maolon  
       3 天前 via Android
    模型的位置编码实现方式造成的问题,之前的位置编码没有考虑 token 与上下文之间的位置关系而是基于整段内容的位置进行编码,所以模型不能准确的完成计数任务,现在提出了一个新位置编码 CoPE 能解决这个问题,但是需要模型重新训练才能解决,显然这很费时间,所以短期内这些模型还是无法进行准确计数
    fulajickhz
        8
    fulajickhz  
       3 天前
    @Cooky 我打不开 404
    EvaDan
        9
    EvaDan  
       3 天前
    这个涉及倒 GPT 技术底层的一些实现问题,主要是 tokenizer 。也就是把一个词/char 字符转成对应整型的数(并不一定就是一个)来表示。tokenizer 的实现有很多种,目前主流的是 BPE ,你可以去搜搜看。简单来说 字符串里的一个单元 经过 tokenizer 处理后,并不一定就是生成一个 token ,可能是多个,也可能是需要合并其他单元才生成一个。也就说你理解的字数 和最后输入到 GPT 的 token 数不一定不相等。
    对应到你这个任务,如果 GPT 需要完成,它首先得对准确的截断出,你想要计算个数的的 token 再进行 decoder (反编码),然后再去计算个数,目前纯粹的数值计算并不是 GPT 的强项,所以效果不好。
    不知道巴拉清楚没,哈哈
    guoz
        10
    guoz  
       3 天前 via Android
    可能一个是 token 的原因,gpt 思考汉语的语句单元不是单个汉字。英文的话每个单词是先会分开再映射 token 的,估计问题不大。
    而且这类问题本身比较像算数,llm 天然好像不擅长。
    zictos
        11
    zictos  
       3 天前
    @MelodYi #4
    我:
    下面的引号中有几个汉字:
    “安全性被认为是很重要的”

    ChatGPT:
    这个引号中有 7 个汉字。
    Cooky
        12
    Cooky  
       3 天前
    @fulajickhz 删了,gpt 发挥不稳定,试了好几次都正常,结果蹦出来一个算错的
    whileFalse
        13
    whileFalse  
       3 天前
    @EvaDan @guoz 那么如果问他这段文字有多少个 token 它能准确回答吗
    我很怀疑,因为 gpt 本质是个高级鹦鹉
    guoz
        14
    guoz  
       3 天前 via Android
    @whileFalse token 根据 tokenizer 不同分法是不一样的,所以没有准确答案。
    如果说是问某个模型他本身用的 tokenizer 针对某句话的 token 数,可以试试用 tiktokenizer 交叉验证
    titokenizer.vercel.ap
    fulajickhz
        15
    fulajickhz  
       3 天前
    @Cooky 现在 AI 都这样,词语接龙

    我之前传个 xls 文件,让他们统计下个数,每个 AI 给的都不一样
    hutng
        16
    hutng  
    OP
       3 天前
    @maolon
    @EvaDan
    @guoz
    差不多大概明白了,感谢
    TimePPT
        17
    TimePPT  
       2 天前
    prompt 加点小 trick 就 ok 了

    以下为 GPT -4o 测试结果:
    User
    要求不使用代码解析器,推断如下结果:
    有一个字符串,str="十九八七六五四三二",请问 len(str)的返回值是多少

    ChatGPT
    字符串 str="十九八七六五四三二" 包含了中文数字字符。计算字符串长度时,每个字符都算作一个单位。虽然这些字符在视觉上占用的空间可能与字母或数字不同,但在 Python 中,每个字符无论是什么字符都是一个长度单位。

    因此,计算 str 的长度时,每个字符都算作一个字符单位。这个字符串包含 9 个字符:










    所以 len(str) 的返回值是 9 。

    User
    那 str="安全性通常被认为是重要的"呢

    ChatGPT
    字符串 str="安全性通常被认为是重要的" 包含中文字符和汉字。计算字符串长度时,每个字符都算作一个单位。这个字符串包含 11 个字符:













    所以 len(str) 的返回值是 12 。
    TimePPT
        18
    TimePPT  
       2 天前
    @TimePPT 当然,中间步骤有瑕疵哈哈哈。

    不过,如 LS 诸位所说,GenAI 的问题就是 predict next token ,所以他没法直接去做 count ,必须加必要的中间过程辅助拆解任务
    shinsekai
        19
    shinsekai  
       2 天前
    应该设计一种 Mathematica 与 GPT 混合的模型
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2339 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 10:32 · PVG 18:32 · LAX 03:32 · JFK 06:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.