练习
2.1 把你熟悉的一种语言中的句子翻译成另一种语言。然后对两个句子进行词元化,例如使用 Tat Dat Duong 的 Tiktokenizer 可视化工具(https://
2.2 对一个很长的数字、一个 URL 和一个化学式进行词元化。根据观察到的结果,为什么大语言模型可能不擅长算术?
2.3 使用图 2.5,手工把下列字符编码成 UTF-8,并展示位操作过程:(a)字符 é(U+00E9);(b)字符“进”(U+8FDB)。每个字符分别占多少字节?
2.4 为下列语言编写正则表达式。
所有字母字符串的集合;
所有以 b 结尾的小写字母字符串的集合;
字母表为 a、b,并且每个 a 都紧接在一个 b 之后、同时紧接在另一个 b 之前的所有字符串集合。
2.5 为下列语言编写正则表达式。这里的“词”指由字母组成,并以空白、相关标点、换行符等与其他词分隔的字符串。
包含两个连续重复词的所有字符串,例如“Humbert Humbert”和“the the”,但不包括“the bug”或“the big bug”;
在行首以整数开头、在行尾以一个词结尾的所有字符串;
同时包含单词 grotto 和单词 raven 的所有字符串,但不包括 grottos 等仅仅含有 grotto 子串的词;
编写一个把英语句子的第一个词存入寄存器的模式,并妥善处理标点。
2.6 使用本章所述的替换规则,实现一个类似 ELIZA 的程序。你可以选择罗杰斯学派心理治疗师以外的领域,但应注意,所选领域必须允许程序合理地进行大量简单重复。
2.7 计算从“leda”到“deal”的编辑距离,其中插入、删除和替换的代价均为 1。请使用编辑距离网格展示计算过程。
2.8 判断 drive 与 brief、divers 中的哪一个更接近,并计算它与二者各自的编辑距离。你可以任选一种距离版本。
2.9 实现一个最小编辑距离算法,并使用手工计算的结果检查代码。
2.10 扩充最小编辑距离算法,使其输出一个对齐;你需要存储指针,并增加一个执行回溯的阶段。