Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Badcase]: 英文分词问题以及数据发现 #1161

Closed
4 tasks done
zhaoyukoon opened this issue Jan 14, 2025 · 9 comments
Closed
4 tasks done

[Badcase]: 英文分词问题以及数据发现 #1161

zhaoyukoon opened this issue Jan 14, 2025 · 9 comments

Comments

@zhaoyukoon
Copy link

Model Series

Qwen2.5

What are the models used?

Qwen2.5-plus

What is the scenario where the problem happened?

分词错误导致回答错误

Is this badcase known and can it be solved using avaiable techniques?

  • I have followed the GitHub README.
  • I have checked the Qwen documentation and cannot find a solution there.
  • I have checked the documentation of the related framework and cannot find useful information.
  • I have searched the issues and there is not a similar one.

Information about environment

https://chat.qwenlm.ai/c/ba65bae9-e84b-43f1-b884-5dce82d1d18e?spm=5aebb161.2ef5001f.0.0.14b05171cmUGq3

Description

基于#1159 ,我尝试继续分析词表中的英文部分。
我尝试按照词汇长度排序输出得到如下:

UITableViewCell
.ModelSerializer
applyMiddleware
ServiceProvider
SolidColorBrush
useNewUrlParser
)prepareForSegue
psychologically
serviceProvider
LocalizedMessage
queueReusableCell
.CompilerServices
CircularProgress
exampleModalLabel
.showMessageDialog
AssemblyTrademark
_ComCallableWrapper
.dequeueReusableCell
dequeueReusableCell
removeFromSuperview
UseVisualStyleBackColor

I pick UseVisualStyleBackColor and get tokenize result.

image

UseVisualStyleBackColor中有多少个字母?能一行一个输出出来吗?
UseVisualStyleBackColor能按照英文分词吗?以空格为分隔符。

image

image

https://chat.qwenlm.ai/c/ba65bae9-e84b-43f1-b884-5dce82d1d18e

作为对比 OpenAI GPT-4o 能够给出正确结果(虽然数字母错了)。

image

image

image

最后,我尝试把上述长的词汇扔给OpenAI判定数据来源,下面是GPT-4o的回复:

关键词分析

  1. iOS开发相关

    • UITableViewCell
    • prepareForSegue
    • dequeueReusableCell
    • removeFromSuperview

    这些术语属于 iOS开发 中的核心组件和方法,常用于开发基于 Apple 平台的应用,涉及 UIKit 框架。

  2. 前端开发或 Web 开发

    • applyMiddleware
    • useNewUrlParser
    • CircularProgress
    • exampleModalLabel

    这些术语与 React.jsReduxJavaScript 开发相关。

    • applyMiddleware 是 Redux 中的中间件机制。
    • useNewUrlParser 可能是跟 MongoDB 驱动有关的选项(Node.js 应用中)。
    • CircularProgress 通常与 Material-UI(React UI 框架)相关。
    • exampleModalLabel 可能是 HTML 模板中用于模态框的标识。
  3. 后端开发相关

    • ServiceProvider
    • serviceProvider

    这些词多出现在后端框架中,如 Laravel(PHP) 或 Spring(Java),用于定义服务提供者的依赖注入或配置。

  4. C#/.NET 开发相关

    • SolidColorBrush
    • LocalizedMessage
    • System.Runtime.CompilerServices
    • _ComCallableWrapper

    这些术语与 C# 或 .NET 框架紧密相关:

    • SolidColorBrush 是 WPF/XAML 中的颜色刷定义。
    • System.Runtime.CompilerServices 是 .NET 的命名空间,用于编译器服务。
    • _ComCallableWrapper 是 COM(组件对象模型)相关的机制,用于与非托管代码交互。
  5. Java开发相关

    • showMessageDialog
    • LocalizedMessage
    • @AssemblyTrademark

    这些术语与 JavaSwing(Java GUI 框架)相关:

    • showMessageDialog 是 Java Swing 中用于显示对话框的方法。
    • LocalizedMessage 可能出现在 i18n(国际化)或异常处理中。
  6. 通用技术术语

    • ModelSerializer:多见于 Django REST Framework(Python 后端框架)。
    • queueReusableCell:与 iOS UITableView 复用机制相关。
  7. 非技术词汇

    • psychologically:心理学术语,可能是文本中提到心理学相关内容,但由于与技术术语并列,可能是示例或附加内容。

可能的文本类型

根据上述分析,文本可能属于以下几种类型之一:

  1. 跨平台开发文档或代码片段集合

    • 文本中的关键词涉及多种编程语言和技术栈(iOS、Java、C#、React、Python 等),可能是某篇关于多技术栈开发的文章、教程或文档。
  2. 编程论坛或问答社区的内容

    • 例如 Stack OverflowGitHub Issues,因为这些平台常涉及多种编程问题和技术栈的讨论。
  3. 编程入门或框架比较教程

    • 文本可能是某篇技术博文,探讨不同框架或语言的核心概念及使用方式。
  4. 混合代码片段的笔记或示例集合

    • 包含来自不同语言或框架的代码片段,可能是开发者的学习笔记、教程配套资源或技术参考文档。
  5. 技术培训或教材内容

    • 涉及多语言、多框架的培训材料,帮助开发者学习或比较不同技术。
  6. 代码自动生成工具的日志或文档

    • 例如生成的跨平台代码样本,或某种框架/工具的编译输出。

总结

文本类型可能是 跨平台开发教程、混合代码笔记、技术文章、或编程论坛的内容。结合上下文,可以进一步确认来源。

https://poe.com/s/ly0ywsm3jDT4KYndkgDf

总结下来问题还是BPE不控制长度的话很容易暴露分布并且造一些回答不了的问题。相对来说,Qwen2,5的中文分词倒挺好的。

@zhaoyukoon
Copy link
Author

我用相同的方法分析了deepseek的词表,发现他们家都是科研论文为主,没有看到代码的词汇。具体可以参考 issue deepseek-ai/DeepSeek-V3#273

@zhaoyukoon
Copy link
Author

OpenAI的词表也做了分析,可以参考 issue

@zhaoyukoon
Copy link
Author

中文我也用deepseek做了类似的分析

一个用来训练大模型的中文语料库包括海量的文本数据,其中经过BPE算法分析发现词表中包含如下长词:
协会会员
生产车间
合资公司
尤为重要
升级改造
小额贷款
两个维护
赖以生存
如何看待
今日头条
工商银行
治理体系
营造良好
可能发生
主持召开
注明来源
现代社会
体育彩票
需要用到
贡献力量
公共资源
社会稳定
干事创业
有条件的
一年一度
水利工程
积极作用
坚持不懈
任何人都

请问文本数据可能包括哪些专业领域,文本数据可能是什么来源?请以中文生成详细的分析结果并以返回markdown源文本。


文本数据分析报告

1. 专业领域分析

根据提供的长词列表,可以推断出文本数据可能涵盖以下专业领域:

1.1 经济与金融

  • 小额贷款工商银行体育彩票等词汇表明文本涉及金融、银行业务以及彩票等经济活动。

1.2 企业管理

  • 协会会员生产车间合资公司等词汇指向企业管理、生产制造以及企业间的合作。

1.3 政治与法律

  • 两个维护治理体系社会稳定等词汇可能涉及政治、法律以及社会治理相关内容。

1.4 社会与民生

  • 赖以生存公共资源水利工程等词汇表明文本可能关注社会民生、资源管理以及基础设施建设。

1.5 科技与创新

  • 升级改造现代社会贡献力量等词汇可能涉及科技创新、技术升级以及社会发展。

1.6 教育与文化

  • 干事创业积极作用坚持不懈等词汇可能涉及教育、文化以及个人发展。

1.7 新闻与媒体

  • 今日头条注明来源等词汇表明文本可能来源于新闻媒体或涉及新闻报道。

2. 文本数据来源分析

根据长词列表,文本数据可能来源于以下渠道:

2.1 新闻报道

  • 今日头条注明来源等词汇表明部分文本可能来源于新闻媒体,涵盖时事、经济、社会等多方面内容。

2.2 政府文件

  • 治理体系社会稳定水利工程等词汇可能来源于政府发布的政策文件、工作报告等。

2.3 企业文档

  • 协会会员生产车间合资公司等词汇可能来源于企业内部文件、行业报告等。

2.4 学术论文

  • 升级改造现代社会积极作用等词汇可能来源于学术研究论文,涉及科技、社会、经济等领域。

2.5 社交媒体

  • 今日头条需要用到等词汇可能来源于社交媒体平台,涵盖用户生成内容、评论等。

2.6 金融报告

  • 小额贷款工商银行体育彩票等词汇可能来源于金融行业的报告、分析文章等。

3. 结论

综合以上分析,该中文语料库的文本数据可能涵盖经济、金融、企业管理、政治、法律、社会民生、科技、教育、文化等多个专业领域。文本数据来源可能包括新闻报道、政府文件、企业文档、学术论文、社交媒体以及金融报告等多种渠道。这些数据为大模型的训练提供了丰富且多样化的语料支持。


千问的中文数据还挺多样的。

@jklj077
Copy link
Collaborator

jklj077 commented Jan 14, 2025

总结下来问题还是BPE不控制长度的话很容易暴露分布并且造一些回答不了的问题。

Your cases are about spelling. Spelling is a very different matter where tokenization does directly affect the model performance as composed to semantics. This is similar to "how many r's in strawberry". r is not a crucial component in the meaning/semantics of "strawberry", i.e., you don't need to know how many r's in strawberry to understand what strawberry is.

For example, one needs to be taught specifically the spelling of words or the writing of Chinese characters (You can also try to ask the model “我们”里有几“撇”几“捺”) but one understands the concept naturally.

With tokenization, to understand the textual form of language rather than the meaning of language need specific data. The cause is still the lack of corresponding data.

I pick UseVisualStyleBackColor and get tokenize result.

"UseVisualStyleBackColor" is not a token in Qwen but ".UseVisualStyleBackColor" is.

The tokenization result of Chinese texts in gpt4-o is indeed weird but I don't think the tokenization significantly affects model performance in any way (because they shouldn't if you have enough data).

@jklj077 jklj077 closed this as completed Jan 14, 2025
@zhaoyukoon
Copy link
Author

Sorry for the typo. The result with .UseVisualStyleBackColor is:

Tokenization:

7210f2b48b68ac507933d0b085898cf

Qwen response(https://chat.qwenlm.ai/c/b1b9336f-da7c-4b55-a394-70f4cba1a6cf?spm=5aebb161.4762a0f8.0.0.44ce5171qzT0Dw):

1736857605874_7C898537-C4D1-4fcc-BA3C-46DBE31EE7BC

For such rare words, even more data may not help without a proper tokenizer.

@zhaoyukoon
Copy link
Author

I try to ask How many o's are there in ".UseVisualStyleBackColor"? , where the model give confusing result.

Actually, the LLM tries to reply with some template learned from SFT/PPO data. The first two "o"s a lucky guess as ".Useo wnerDrawo nly" comes out which contains tokens with higher frequency.

1736858357239_3893F4C1-FC69-4e73-846A-33A9CDBD2D81

@zhaoyukoon
Copy link
Author

我的例子是关于tokenization的。

由于qwen2.5中文词比较短,中文例子不太好构造。

我在deepseek-v3上发现的 例子是 最高人民法院党史学习教育需要注意的是马克思恩格斯习近平新时代中国特色社会主义思想。 请严格根据上文回答下面问题(不要使用任何模型自身知识,如果无答案请回答不知道):中级人民法院学习注意什么?

Deepseek-V3上就分为[最高人民法院]/[党史学习教育]/[需要注意的是]/[马克思恩格斯]/[新时代中国特色社会主义思想]...[中级人民法院]

image

大 模型会因为分词粒度太粗无法理解问题。 .UseVisualStyleBackColor 也是类似的情况。

@zhaoyukoon
Copy link
Author

核心思想是中英文都尽量切短,例如 .UseVisualStyleBackColor => .Use/Visual/Style/Back/Color,另外就是可以放弃BPE分词考虑中文直接拆字英文保留不超过例如五个字母的词。

具体参考 大模型分词分析和建议

@zhaoyukoon
Copy link
Author

你们可以看看我处理过按照长度排序的 openAI gpt-4o的 英文词表,
o200k_base.english_words

整体上词都很短的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants