第5章 机器怎么听懂人话:从字面到语义
本章导读
前面已经看过 AI 处理数字的样子——身高、体重、跳远成绩。这样的 AI 比较容易理解:数字进、数字出,跟做数学题差不多。
但你跟 AI 聊天的时候,明明输入的是文字,它怎么听懂的?你打一句我想吃西红柿鸡蛋烩饭,它怎么就知道这是在说一道菜?你打一句我心情不太好,它怎么就知道你需要安慰而不是答案?
本章将从自然语言处理(NLP)的基本方法入手,了解机器处理文字的大致演进:从手写规则,到统计词频,再到语义向量。读完这一章,你应理解一件事:
字面一样不等于意思一样,字面不一样也不等于意思不一样。
这个看似简单的判断,是后续学习提示词、上下文管理和 RAG 等内容的基础。
《易经·系辞》说:书不尽言,言不尽意。 文字写不全要说的话,说话也装不下全部意思。机器处理语言时,难就难在要从有限字句中寻找更完整的语义关系。
学习目标
- 知识目标:
- 能说出机器处理自然语言的三代技术:规则系统 → 统计词频 → 学习语义,每一代各自怎么做、有什么局限。
- 能用自己的话解释字面相似和意思相似的区别——并能各举一个例子。
- 能力目标:
- 能运行本章预置 Notebook,比较字面共同字数与语义接近度的差别。
- 能想出至少 3 个字面差很多但意思一样的同义说法。
- 素养目标:
- 不把 AI 的理解当成人的理解——它的“懂”是数学上的接近,不等于人的理解。
- 知道涉及重要决定、真实权益、健康安全和个人隐私的判断,不能只看 AI 算出的语义分数。
先修要求与环境清单
- 已完成第 3 章环境验证和第 4 章数据实验,能打开课程 Notebook,并能保存运行结果和人工复核记录。
- 软件准备:
- 课程统一配置的 AI 学习环境。
- 本章预置
Notebook:
notebooks/ch05_text_similarity.ipynb。
- 配套资源:本章 Notebook 已经准备好一个对比实验脚本——基础版不要求从零写代码,运行、观察、记录和解释即可。
本章提醒:本章所有句子、客服、情绪和群聊示例均为教学模拟,不收集真实聊天记录,不上传真实个人隐私。
知识准备:先认识这些词
- 自然语言处理(NLP)
- 一句话说明:让机器处理自然语言的技术总称,包括识别、理解、生成和翻译自然语言。
- 直观解释:从输入法联想下一个词,到搜索引擎理解你想搜什么,再到 AI 跟你对话——这些都是 NLP。
- 关键词匹配(字面匹配)
- 一句话说明:看两段文字有多少个共同的字 / 词——共同的字越多就算越像。
- 直观解释:相当于对对碰——你看到我用了番茄,我看到你也用了番茄,那我们俩说的差不多。
- 关键短板:番茄和西红柿对对碰是 0 分——但意思一样。
- 同义异构
- 一句话说明:字面差别很大,但意思相近或相同。
- 例子:
- 我想退货 / 钱能退吗 / 我不想要了 —— 字面差别明显,但都可能是在表达退款或不再购买的诉求。
- 西红柿 / 番茄 —— 字不一样,但常常指同一种食材。
- 关键点:只看字面对对碰,会漏掉所有同义异构的情况。
- 一词多义
- 一句话说明:同一个字 / 词,在不同场合意思完全不同。
- 例子:
- 苹果 是水果还是手机?要看上下文。
- 我要挂了 是挂电话、是不及格、还是生病?要看场合。
- 关键点:字面一样不等于意思一样。
- 词向量 / 语义匹配
- 一句话说明:把一段话翻译成一组数字,相近意思的话在数字上更接近。
- 直观解释(比喻):每个词在某个地图上的一个位置——教师和老师在地图上几乎重合,教师和拖拉机离得很远。
- 关键价值:让机器能按意思找东西,不只是按字找东西。
- 场景依赖
- 一句话说明:同样一句话,放在不同场景里意思可以完全不同。
- 例子:你跟朋友说我要挂了 vs 你跟医生说我要挂了——同一句话,意思天差地别。
5.1 问题与现象:为什么计算规则容易,理解自然语言更难?
5.1.1 一个反直觉的事实
设想这两件事:
- A. 算 100 道复杂的微积分题:计算机可以在很短时间内完成。
- B. 完整理解一篇小学生日记:电脑做不到——它能识字,但分不清作者是开心、难过还是装作开心。
这件事一开始很反直觉——数学那么难,电脑都能做;小学生日记那么简单,电脑反而不行?
原因是: * 数学题的边界是封闭的——题目里所有字符都有精确定义,加减乘除规则一目了然。 * 自然语言的边界是开放的——同一句话在不同场合意思不同;同一个意思可以有几十种说法;很多事情人靠常识就懂,但电脑没有常识。
5.1.2 三个机器很难处理的自然语言场景
场景 1:一词多义
- 我要挂了
- 跟朋友打电话:挂电话
- 在学习群里:考试不及格
- 在医院:生命垂危
同一个字,意思天差地别。怎么分?靠上下文——但教电脑识别上下文,是一件比做数学题难太多的事。
场景 2:同义异构
- 同一个客户咨询,可以这样说:
- 钱能退吗?
- 帮我办个售后。
- 我不想要这东西了。
三句话共同字很少、说法差别很大——但说的是相近的事。如果客服机器人只会对字面,它会把这三个用户当成完全不同的诉求。
场景 3:常识缺失
- 老鼠吃掉了奶酪,因为它太饿了。 —— 你一秒钟就知道它指的是老鼠。
- 老鼠吃掉了奶酪,因为它太诱人了。 —— 你一秒钟也知道它指的是奶酪。
人类靠常识瞬间就懂——但机器要先把老鼠会饿、奶酪会诱人这种常识学进去,才能做这个判断。
5.1.3 这一章要解决的问题
这一章要让你看清楚一件事——
机器处理自然语言不是凭空完成的。它经历了三代技术演进,每一代都在解决前一代的问题。
- 第 1 代(规则系统):人工写一万条规则告诉机器如果出现 X 就当成 Y。 → 漏掉一种说法就崩。
- 第 2 代(统计词频):数每个词在文章里出现了几次,字面越像就算越接近。 → 解决不了同义异构。
- 第 3 代(语义向量):把每段话翻译成一组数字,让意思相近的话在数字上也接近。 → 才真正能做到按意思找。
理解了这三代,你就能更好地理解今天的大模型为什么能跟你聊天:它并不是凭空“懂人话”,而是在语义表示、上下文建模和大规模生成能力基础上形成了更强的语言处理能力。
【思考 1】 有人说:我做了一个客服机器人,用的方法是关键词匹配:用户说的话和“常见问答库”里的标准问题有多少个共同的字,共同字越多就当成同一个问题。
请结合 5.1.2 节,说明这个机器人会在哪些场景出问题,至少举两个具体场景。
思考提示:① 同义异构 —— 用户说钱能退吗?机器人在问答库里找不到包含退和钱两字的问题,就会回答错;但用户其实是要退款,他用售后不想要这些说法都会被漏。② 一词多义 —— 用户说我要挂了,机器人可能用关键词匹配到挂号这个标准问题,但用户其实在说挂电话。字面对对碰最大的问题就是看不见意思。
5.2 原理与分析:从字面匹配到语义表示的演进
相关结构如图5-1所示。
图中位置是教学简化后的二维投影。真实语义向量通常是高维数字,本图只帮助观察“字面相似”和“语义相似”之间的差别。
5.2.1 第一代:规则系统
最早的时候,人们请语言学专家手工写规则:
规则 1: 如果用户说话里出现"退款"或"退货" → 转给售后部门。
规则 2: 如果用户说话里出现"咨询"或"问问" → 转给客服部门。
规则 3: 如果用户说话里出现"投诉"或"差评" → 转给售后主管。
...
- 优点:完全可控、每一步都能解释清楚。
- 关键短板:自然语言表达过于开放。即使规则库非常庞大,用户也可能用规则库未覆盖的新说法提出同一需求,例如“把米还给我”这类含义依赖语境的表达。
这种方法曾经是 NLP 的重要路线,今天仍会在高可控、规则清楚的场景中作为辅助方法使用;但面对开放自然语言时,单靠规则很难覆盖所有表达。
5.2.2 第二代:统计词频
人们想:既然手写规则不行,那让机器自己从大量文章里数词的出现频率呢?
代表方法叫 TF-IDF / 词袋模型。简单说就是:
"番茄炒蛋盖浇饭" → 里面有: 番茄(1次)、炒(1次)、蛋(1次)、盖(1次)、浇(1次)、饭(1次)
"西红柿炒鸡蛋盖饭" → 里面有: 西红柿(1次)、炒(1次)、鸡蛋(1次)、盖(1次)、饭(1次)
两段共同的词: 炒、盖、饭 (3 个)
→ 算法判断: 这两段有一定相似度
- 优点:机器自动数,不用人工写规则。
- 关键短板:
- 同义表达难以识别 —— 番茄 和 西红柿 完全是两个不同的字,机器容易把它们当成互不相关的词。
- 顺序丢失 —— 猫咬狗 和 狗咬猫 在词袋里一模一样(都只是有猫咬狗三个词)。
- 没有意思 —— 它只是在数字面上的重合,对意思完全无感。
第二代解决了第一代手写不过来的问题,但没解决看不见意思的问题。
5.2.3 第三代:语义向量
现代自然语言处理中的一个基础思想叫嵌入(embedding)/ 语义向量。大模型内部也会使用丰富的向量表示来处理语言。它的核心思想是:
把每段话翻译成一组数字——意思相近的话,对应的数字也相近。
打个比方:
想象有一张语义地图——上面每个词都有一个坐标:
- 教师 在
(0.9, 0.1, -0.4, ...)这个位置 - 老师 在
(0.88, 0.12, -0.38, ...)——几乎和教师重合 - 学生 在
(0.7, -0.5, 0.1, ...)——离教师不远,因为常一起出现 - 拖拉机 在
(-0.3, 0.8, 0.5, ...)——离教师距离较远
这套地图怎么来的?它是在大规模文本训练中逐步学得的。训练材料足够丰富时,模型会发现教师和老师在许多上下文中可以互换,于是给它们分配了相近的坐标。
这能缓解第二代的两个大问题:
- 同义异构 —— 番茄 和 西红柿 的坐标几乎重合(因为它们出现的上下文几乎一样)。
- 一词多义 —— 在上下文嵌入模型中,苹果出现在“苹果手机”和“苹果是水果”里时,可以形成不同的表示。
5.2.4 但请注意:语义接近不等于真正理解
这里有一个特别重要的判断,请你记住:
AI 的“懂”是数学上的接近,不等于人的理解。
- 它能算出老师和教师的坐标距离小——所以知道它们意思接近。
- 它不能真的理解老师在你心里到底意味着什么。
举个例子:
- 你跟 AI 说:我老师今天表扬我了,我特别开心。
- AI 能算出老师和教师接近,表扬和夸奖接近,开心是正面情绪,所以可能给出一句祝贺。
- 但 AI 并不知道你的老师姓什么、教什么、为什么表扬你、表扬这件事对你意味着什么。
这一条工程认识,是后面所有章节的基础:
- 第6章:你给 AI 写提示词时,要意识到它的理解来自模式匹配和语义表示,所以要把任务说得具体、可检查。
- 第7章:AI 可能以流畅语气给出错误内容,因为它会根据相似模式生成回答,而不是直接核验事实。
- 第8章:让 AI 查资料(RAG)时,要先把资料翻译成向量——这就是第 3 代技术的工程落地。
【思考 2】 有人说:我用大模型做了一个智能客服。我让它把每条用户输入都转成向量,然后跟标准问答库的向量比对相似度,挑相似度最高的那个标准问题对应的答案回给用户。 请结合本章关于语义相似度和人工复核的讨论,说明这个设计在什么场景下会出问题,还需要增加哪些安全措施。
思考提示:可以从两类风险分析:一是语义相似但真实诉求不同,例如投诉被误判为普通咨询;二是涉及退款、投诉、权益等场景时,不能让 AI 直接自动回复,应设置阈值和人工复核。
AI 协同实践:观察字面相似与语义相似的差别
实践目标:用一个小实验,让你亲眼看见只看字面和看意思的根本差别——并明白为什么现代 AI 必须用第 3 代技术。
预计时间:20 分钟。
实验场景:美食问答助手
设想你做了一个美食小助手。用户说:我想吃西红柿鸡蛋烩饭。
你的菜谱库里有三道菜: 1. 番茄炒蛋盖浇饭 2. 西红柿紫菜蛋花汤 3. 清蒸排骨
问题:哪道菜跟用户的请求最匹配?
凭直觉你知道——答案是 1. 番茄炒蛋盖浇饭。但机器怎么判断?
我们对比两种方法:
- 方法 A(第 2 代:字面对对碰):数共同的字。
- 方法 B(第 3 代:语义向量):用 AI 算意思的接近度。
跑实验
打开本章 Notebook,运行预置好的对照实验脚本。它会自动做两件事:
- 字面对对碰:把每对句子里共同出现的字数算出来。
- 语义向量:调用 AI 给每对句子算一个语义接近度分数(0~1,越接近 1 意思越像)。
输出大致是这样:
用户请求: 西红柿鸡蛋烩饭
对比 1: 番茄炒蛋盖浇饭
字面共同字数: 2 (有“蛋”“饭”两个字)
语义接近度: 0.85(示例:很接近)
对比 2: 西红柿紫菜蛋花汤
字面共同字数: 4 (有“西”“红”“柿”“蛋”四个字)
语义接近度: 0.42
对比 3: 清蒸排骨
字面共同字数: 0
语义接近度: 0.12
把这个结果保存为运行输出或截图——它在视觉上把字面 vs 意思的差别一目了然地呈现出来了。
提醒:不同模型、不同切分方式会让分数略有差异。学习重点不是背住 0.85、0.42 这些数字,而是观察两种方法的排序为什么不同。
你看到了什么?
关键观察 1:
- 用字面对对碰,最匹配的会是 西红柿紫菜蛋花汤(字面重合更多)——但其实它是汤,不是用户想要的烩饭!
- 用语义向量,最匹配的是 番茄炒蛋盖浇饭——尽管字面重合不如第二项多,但意思最接近。
这就是第 2 代和第 3 代技术的本质差别。第 2 代在这个例子上会明显偏离用户意图——把汤推荐给想吃饭的人。
关键观察 2:
- 番茄炒蛋盖浇饭字面共同字数不占优势,但语义接近度更高——模型判断它们在语义空间中很接近。
- 清蒸排骨字面共同字数为 0,语义接近度也较低——这与人的直觉基本一致。
自主尝试:找字面差很多但意思一样的例子
实验脚本里有一段自定义对比——你可以输入两句话,让 AI 给你算它们的语义接近度。
任务:自己想 3 对字面差很多但意思一样的句子,分别跑一下,看 AI 给的分数。例如:
相关内容见表5-1。
表5-1 同义异构实验记录表
| 句子 A | 句子 B | 你预计的接近度 | AI 算的接近度 |
|---|---|---|---|
| 我饿了 | 想吃点东西 | ||
| 你能再说一遍吗 | 不好意思我没听清 | ||
| 今天天气真好 | 今儿这天可真不错 |
把这三对放进 Notebook 跑一下——看 AI 是否给出了高的接近度。
反过来:找字面像但意思不一样
也试试反过来——找几对字面很像但意思不一样的句子:
相关内容见表5-2。
表5-2 同字异义实验记录表
| 句子 A | 句子 B | 你预计的接近度 | AI 算的接近度 |
|---|---|---|---|
| 我要挂电话了 | 我要挂科了 | ||
| 苹果真好吃 | 苹果手机真好用 | ||
| 这个题太难了 | 这个题太简单了 |
跑完看看——AI 给的接近度是不是没有你想象中那么高?
把这两组实验的结果完整记下来——这就是这一章最重要的产出。
验证与证据:用字面与语义对照表记录结果
主对照表(菜谱例子)
相关内容见表5-3。
表5-3 美食问答主对照记录表
| 对比项 | 字面共同字数 | 语义接近度 |
|---|---|---|
| 番茄炒蛋盖浇饭 | ||
| 西红柿紫菜蛋花汤 | ||
| 清蒸排骨 |
关键观察:字面共同字最多的,是不是语义最接近的?为什么会出现差别?
同义异构对照
相关内容见表5-4。
表5-4 同义异构对照记录表
| 句子 A | 句子 B | 字面共同字数 | 语义接近度 |
|---|---|---|---|
同字异义对照
相关内容见表5-5。
表5-5 同字异义对照记录表
| 句子 A | 句子 B | 字面共同字数 | 语义接近度 |
|---|---|---|---|
原理小结
围绕两个问题写一段:
- 在你这次的实验里,什么样的情况下字面方法会误判?
- 这个实验对你将来和 AI 协同完成任务有什么启发? 提示:你跟 AI 说话时,要不要注意它如何理解你的话?
伦理、安全与边界
第一条底线:AI 的语义相似不等于真实理解
这是这一章最重要的一条底线。
AI 算出来两句话意思接近——这只表示它们在数学上的坐标接近。它并不真的理解这两句话在生活里意味着什么。
举几个例子:
- AI 能算出“我心情不太好”和“我有点难受”语义接近——所以可能两条都给你推荐心情调节的内容。
- AI 不知道“我心情不太好”背后可能是失恋、考试没考好、家庭变故或其他原因——不同原因需要完全不同的回应。
底线判断:
AI 的懂只能当线索,不能当真相。
涉及人的情绪、健康、安全、重要决定时,AI 对语义的判断必须经过人工复核。
第二条底线:用语义判断时要看相似度多高才算像
在本章实验中可以看到,AI 给出的语义接近度是个数字(0~1 之间)。
但多高才算足够像?这件事在不同场景下答案完全不同:
- 聊天推荐:相似度 0.7 以上算挺像了——错了无所谓,下次推别的就行。
- 客服自动回复:相似度 0.85 以上才算敢自动回——错了会得罪客户。
- 医疗、法律、财务等高风险辅助:即使相似度很高,也不能让 AI 自动决定。
底线:重要场景下要设高阈值,否则就转人工。学习阶段就要形成这种意识,因为工作场景中一次错误自动回复可能带来实际损失。
第三条底线:不能因为 AI 算出意思接近就跳过人工核对
举一个真实可能的场景:
- 客户在评论区留言:你们这个软件的退款功能隐藏得也太深了!
- AI 用语义分析判断:功能、深——可能是在问功能有多深、有什么深度功能——所以回了:亲,建议您升级到最新版本体验更多功能哦~
结果:客户在投诉,AI 却在推销新功能,可能导致投诉升级。
为什么 AI 会犯这个错?
- 它计算了句子里词的语义。
- 它没有理解句子背后的情绪和真实诉求。
- 它根据看起来相似的标准回复自动作答。
底线判断:
涉及用户真实情绪或诉求的场景,AI 给出回答前,要么有人工复核,要么让 AI 至少先识别这是不是在抱怨/投诉。
【思考 3】 有人做了一个 AI 情绪提醒原型:它读取每周学习群里的留言,如果发现某个成员发布心情不好或类似意思的句子,就自动私聊对方发一条关怀消息。他用的方法是:语义接近度 > 0.6 就触发关怀。 请回答:① 这个设计有什么风险?② 如果是你来改,你会怎么改?
思考提示:可以从误判、隐私、知情同意和人工复核四个角度分析。更稳妥的设计是不自动私聊,不直接处理敏感情绪,而是提高阈值、限制数据范围,并把提醒交给有责任边界的人复核。
总结与思考
本章核心判断
- 机器处理自然语言经历了三代:规则系统 → 统计词频 → 学习语义。
- 字面相似 ≠ 意思相似——字面对对碰会漏掉所有同义异构。
- 意思相似 ≠ AI 真正理解——AI 的“懂”只是数学表示上的接近。
- AI 给信号,人做决定——涉及重要判断时,AI 的语义分数只能当线索。
基础题(理解层面)
- 用自己的话说说字面相似和意思相似的差别。各举一个例子。
- 为什么第 1 代规则系统在开放语言任务中不够用?最主要的问题是什么?
- 第 3 代语义向量解决了什么问题?又有什么它没解决的问题?
迁移题(生活场景)
- 想一想:你身边有哪些看起来很合理但其实差很多的同义异构?
- 比如群聊中有人说今晚有空吗和今晚一起去吃点东西呗——意思可能完全一样。
- 比如你跟家里说我想买个新手机和我手机有点旧了——意思也可能一样。
风险题(伦理与边界)
如果有一天,有机构用 AI 做了一个群体心理状态识别系统——它读取所有成员每周写的记录,自动判断哪个成员心情不好,然后把名单发给负责人。
请回答:
- 这件事会让你舒服吗?为什么?
- 至少说出两条这件事可能造成的伤害。
- 你觉得这个系统应不应该上线?如果一定要上,至少要加什么保护?
本章交付物
请按下面清单提交本章证据:
本章的关键收获是:AI 可以计算语义接近度,但语义接近不等于真正理解。后续使用 AI 时,应把任务、资料、边界和验收标准说清楚,并在重要场景中保留人工复核。