刚试了一下 claude 好像也不太行。
![]() |
1
bankroft 73 天前
因为它不会思考,你把他当成高级搜索引擎就行了
|
![]() |
2
cmdOptionKana 73 天前
为什么你会以为 gpt 能识别汉字个数?
|
![]() |
3
Cooky 73 天前
|
4
MelodYi 73 天前
我觉得他对“前一句话”、“这一句话”的描述不太理解,你可以试下把要数数字的句子用引号框起来,然后再问他这句话有多少字。
|
![]() |
5
Cooky 73 天前
十九八七六五四三二,前面这句话有几个汉字几个字符
|
6
mxT52CRuqR6o5 73 天前
现在的大语言模型因为 token 压缩的原因很难做这个事情吧
|
7
maolon 73 天前 via Android
模型的位置编码实现方式造成的问题,之前的位置编码没有考虑 token 与上下文之间的位置关系而是基于整段内容的位置进行编码,所以模型不能准确的完成计数任务,现在提出了一个新位置编码 CoPE 能解决这个问题,但是需要模型重新训练才能解决,显然这很费时间,所以短期内这些模型还是无法进行准确计数
|
8
fulajickhz 73 天前
@Cooky 我打不开 404
|
9
EvaDan 73 天前
这个涉及倒 GPT 技术底层的一些实现问题,主要是 tokenizer 。也就是把一个词/char 字符转成对应整型的数(并不一定就是一个)来表示。tokenizer 的实现有很多种,目前主流的是 BPE ,你可以去搜搜看。简单来说 字符串里的一个单元 经过 tokenizer 处理后,并不一定就是生成一个 token ,可能是多个,也可能是需要合并其他单元才生成一个。也就说你理解的字数 和最后输入到 GPT 的 token 数不一定不相等。
对应到你这个任务,如果 GPT 需要完成,它首先得对准确的截断出,你想要计算个数的的 token 再进行 decoder (反编码),然后再去计算个数,目前纯粹的数值计算并不是 GPT 的强项,所以效果不好。 不知道巴拉清楚没,哈哈 |
![]() |
10
guoz 73 天前 via Android
可能一个是 token 的原因,gpt 思考汉语的语句单元不是单个汉字。英文的话每个单词是先会分开再映射 token 的,估计问题不大。
而且这类问题本身比较像算数,llm 天然好像不擅长。 |
![]() |
12
Cooky 73 天前
@fulajickhz 删了,gpt 发挥不稳定,试了好几次都正常,结果蹦出来一个算错的
|
13
whileFalse 73 天前
|
![]() |
14
guoz 73 天前 via Android
@whileFalse token 根据 tokenizer 不同分法是不一样的,所以没有准确答案。
如果说是问某个模型他本身用的 tokenizer 针对某句话的 token 数,可以试试用 tiktokenizer 交叉验证 titokenizer.vercel.ap |
15
fulajickhz 73 天前
|
![]() |
17
TimePPT 73 天前 ![]() 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 。 |
![]() |
18
TimePPT 73 天前
@TimePPT 当然,中间步骤有瑕疵哈哈哈。
不过,如 LS 诸位所说,GenAI 的问题就是 predict next token ,所以他没法直接去做 count ,必须加必要的中间过程辅助拆解任务 |
19
shinsekai 73 天前
应该设计一种 Mathematica 与 GPT 混合的模型
|