AI模型Token和各种字符的换算计量方法

AI模型中,Token和各种字符之间的数量兑换是如何计算的? 可以简述为基本为1:1的关系,一个token对应一个字符,包括中文、英文、或其他各种符号。 在不同的AI模型中,Token数量与中文简体字、英文字词、数学符号和各种键盘符号数量之间的兑换关系可以有所不同。Token 是自然语言处理模型中的一个基本单位,它可以是一个字符、一个单词或一个子词。以下是一些常见的兑换关系: 英文字词(English Words) 通常,一个简单的英文单词(如“cat”、“dog”)对应一个 Token。 复杂的单词或不常见的单词可能会分成多个 Token。 中文简体字(Chinese Simplified Characters) 一个汉字通常对应一个 Token,例如,“你好”会被分成两个 Token。 但是,如果使用的是基于字词的模型,一个词语(如“北京”)也可能被视为一个 Token。 数学符号(Mathematical Symbols) 数学符号通常每个符号对应一个 Token。例如,“+”、“-”、“=”、“∫” 等。 各种键盘符号(Keyboard Symbols) 键盘符号(如标点符号、特殊字符)通常每个符号对应一个 Token。例如,“@”、“#”、“$”、“&” 等。 示例 假设你有以下文本: 英文:“Hello, world!” 中文:“你好,世界!” 数学:“x = y + z” 键盘符号:“@#$%^&*()” Token分解结果可能如下: 英文:“Hello, world!” -> [“Hello”, “,”, “world”, “!”] -> 4 Tokens 中文:“你好,世界!” -> [“你”, “好”, “,”, “世”, “界”, “!”] -> 6 Tokens 数学:“x = y + z” -> [“x”, “=”, “y”, “+”, “z”] -> 5 Tokens ...

2025-2-16 · 1 分钟 · Atom.X

翻译项目需求概述

适用于多语言版本的博客或网页文档翻译 开发程序语言:python,给程序逐行写英文注释; API:Google Cloud Translation API,使用高级翻译模型; 备注:此前尝试调用 Google Translation API 的NMT基础模型,可能它不识别文档格式的语法标记,导致被翻译后的文件格式混乱。为了避免这种情况,需要使用更先进的翻译模型,能够理解和保留文档格式; 源语言:此为源文件内容的人类自然语言版本(语言标签),程序应能自动识别源语言类别,也可在程序中定义默认源语言; 语言标签: Translation API 的多语种翻译功能使用 BCP 47 语言标签作为输入和输出的语言标识符,主要组成部分是ISO 639 标准中的语言代码,和ISO 3166 标准中的地区代码,例如 zh-TW 台湾正体、zh-CN 中文简体。 目标语言:把源文件内容翻译成我们想要的其他人类自然语言版本,文件的目录名称定义了目标语言,例如目录名 en 英文,de 德文。目录名并不一定与语言标签完全一致,例如目录zhs中文简体(语言标签 zh-CN ),en英文(不区分en-US美国英语 和 en-GB英国英语); 源文件目录中可能有多级子目录、子文件等等,程序应该能识别并逐个检索并完成全部文件的翻译; 全部的目标语言目录及其文件结构与源语言目录保持一致,文件名也都是一样的,仅仅是目录名(en,de,zhs)不同。 本项目处理多语言版本的博客文件,在目标语言目录中持续有新的源语言文件,程序应跳过已经翻译成目标语言的文件,仅仅翻译新的源语言文件。例如en目录中大部分都是英文版本内容的文件,但是持续有源语言zh-TW的文件被添加进去,每次运行程序将其批量翻译成目标语言en。 程序会直接将翻译后的内容覆盖到目标语言目录中对应的源语言文件中,而不需要从源语言目录中复制文件到目标语言目录中。 文件格式 源文件格式:根据文件名后缀判断文件格式,如.md, .yaml, .xml等等。例如文件名以.md结尾,filename.md,属于markdown格式; 多格式并存:可能需要同时处理多种混合格式的文件,但是为了提高效率,我们尽可能每次只处理同一种格式文件; 自动检测文件格式:确保翻译模型能理解不同格式的语法标记,根据格式类型选择相应的处理方案,能保留源文件格式,这是最重要的翻译模型能力; 特别注意事项 文件格式的语法标记是不可翻译的,例如md文件中带有markdown格式标记,必须保留翻译后的文件与源文件相同的格式; 引用圣经、名言、人名、地名、图书、电影名称、汉语成语和寓言等应该保留一份原文的源语言,同时一份对应翻译的目标语言; 文件目录名、文件名不要翻译,因为作为最终网页url的一部分,应始终保持其英文语言版本; 问题 本项目所选用的翻译模型能有效识别并保留源文件的格式(例如markdown,YAML等待)吗? 若翻译模型能识别大部分的文件格式标记,那么我们就没必要采用复杂的文件格式解析库,因为我们翻译后的文件依然保留原文件的格式标记,所以仅仅是翻译了有必要翻译的文本内容。 翻译模型能识别出哪些文本是待翻译的内容?哪些部分引用的文本应该保持原文不翻译呢?例如我们把英文圣经和经典句子翻译成中文,那么应该保留一份原文,同时翻译一份中文对照。 c++也能做本项目开发,但相比较python而言,更复杂; 调用 Translation API 并选用高级模型,是否需要先设置endpoint,并在Google Cloud控制台中进行特殊配置?如何简单高效地调用API,提供配置和调用的最佳实践。

2024-12-11 · 1 分钟 · Atom.X

C++程序设计

原课程链接:C++程序设计 cplusplus.com 教材《新标准 c++程序设计》 郭炜, 清华大学 w11. C++11 新特性 auto 自动变量类型 decltype 关键字,求表达式类型 shared_ptr 智能指针 nullptr 空指针 基于范围的for循环 右值引用和move语义 unordered_map 无序容器(哈希表) regex 正则表达式 Lambda 表达式 强制类型转换 static_cast、interpret_cast const_cast和dynamic_cast C++异常处理基础:try、throw、catch 意外异常(unexpected exception) 动态内存管理的异常处理 new w9. STL - 质因数数目 container adapter 容器适配器 (让已有的顺序容器以栈/队列的方式工作) stack queue priority_queue member function push top pop 参考案例:github/ PKUC3/ 3.10.1.4.cpp map/ multimap map 容器中,关键字key是唯一的,值value可以重复。 multimap 容器中,关键字和值都可以重复。 set/ multiset set 容器中,元素是唯一的,按其值自动排序,而非插入顺序。 添加新对象时会比较对象的大小,set 是一个基于红黑树实现的容器,它会自动将元素按照特定的顺序存储,通常是使用元素的 < 操作符来进行比较和排序。 set 容器的迭代器支持双向迭代,可以使用++,- - 移动迭代器,但不支持随机访问,所以不能进行 i+1 的操作; ...

2024-3-12 · 8 分钟 · Atom.X

数列 Array

Week 10 array function #include<iostream> #include<cmath> using namespace std; /* looking for prime within 100. Sieve of Eratosthenes algorithm */ int main() { int sum=0, a[100]={0}; for(int i=2;i<sqrt(100.0);i++) // outer loop for i[2,9] { sum=i; while(sum<100)// inner loop for sum[2,99] { sum=sum+i; if(sum<100) a[sum]=1; // why = ? } } for(int i=2;i<100;i++) { if(a[i]==0)cout<<i<<" "; // why == ? } cout<<""<<endl; return 0; } when a[i] = {9, 15} , how could we calculate and remove it from the array a[n]? ...

2023-12-28 · 1 分钟 · Atom.X

C程序设计进阶

原课程链接:C程序设计进阶 const vs. static const 限制指针实参的功能 指针常量: 不能修改指针所指向的地址。在定义时必须立即初始化。 示例: char* const ptr = &some_char; // ptr 是一个指向 char 的常量指针 *ptr = 'a'; // 合法,修改了 ptr 所指向的 char 的值 ptr = &another_char; // 错误,不能修改 ptr 的值 常量指针: 不能修改指针所指向地址的内容,但可以改变指针所指向的地址。 示例: const char* ptr; // ptr 是一个指向 char 的常量指针 char const* ptr; // 与上一行等效 *ptr = 'a'; // 错误,不能修改 ptr 所指向的 char 的值 ptr = &another_char; // 合法,可以改变 ptr 的值 static 在函数内部或类中声明的静态变量,其生命周期跨越整个程序执行过程(在循环中多次执行,每次循环的初始值继承了上一次循环的值),且只初始化一次。 string literal #include <iostream> using namespace std; int main() { // input arguments int k=0, m=0, n=0; cin>>k; cin>>m>>" ">>n; // wrong expression. } cin operator automatically skips any whitespace, including spaces and newlines. it’s illegal to use “ ” with cin, because it is string literal, cin could not hold string. ...

2023-12-14 · 6 分钟 · Atom.X