AI人工智能基础与实践(中职版)中等职业教育 · 项目化学习

CHAPTER 04 · 学生用书

第4章 自然语言处理:从规则匹配到语义表示

第4章章首原理图 文本经过向量表示进入嵌入空间,候选按距离排序后再通过阈值和人工复核。

章首语

第2章的规则问答机器人遇到“开放时间”可以回答,遇到“放学后还能去吗”却可能漏答。第3章说明,机器学习能够从样本中形成模型,不必由人写完所有判断条件。本章把这两条线连接起来:当输入变成人类日常使用的语言,计算机怎样从字面匹配走向对词语和句子关系的计算?

我们将在班级AI应用系统中开发一个校园服务资料检索模块。页面左侧使用关键词检索,只有查询与资料出现相同词语时才容易命中;右侧使用简化语义向量,把“开放”“几点”“放学后”等表达转换为可比较的数值。学生先准备12条公开、虚构的校园服务资料,再用同义改写、否定、一词多义和资料外问题测试两种方法。

实验可能出现一种很有意思的结果:“我放学后还能来吗”在右侧找到开放时间,左侧没有命中;“我不是来打印的”在右侧却仍把“打印”识别成重要线索。语义相近能够减少字面不同造成的漏检,却不等于系统理解了说话人的完整意图。自然语言处理的发展,正是在能力扩大与新问题出现之间不断前进。

学习目标

完成本章学习后,你将能够:

  1. 说明自然语言处理的基本任务和发展线索。
  2. 解释分词、语料库和语义表示在文本处理中的作用。
  3. 开发关键词与语义检索对照页,识读向量和相似度计算。
  4. 使用四类未知问题比较两种检索方法的成功与失败。
  5. 组合精确规则、语义检索和人工复核,准确说明使用范围。

本章项目 开发校园服务资料检索模块

本章模块不直接生成新的回答,而是在一组已经核对的校园服务资料中寻找最相关的条目。每条资料包含编号、标题、正文、主题词和更新时间,例如开放时间、设备借用、打印登记、故障报修等。检索结果必须显示资料编号和原文,使用者可以检查系统找到了什么,不能只看到一个没有来源的结论。

每组设置资料负责人、开发负责人、测试负责人和记录讲解员。资料负责人编写12条虚构资料并统一术语;开发负责人根据任务说明生成或配置离线对照页;测试负责人准备16个未知问题,在第一版完成前不公开;记录讲解员比较两种路线的命中编号、得分和错误原因。测试问题不能只替换一个词,要覆盖自然语言中真正困难的现象。

第一版是关键词检索器,第二版增加简化语义表示、最低相似度、否定提示和精确编号优先规则。两个版本最终作为分类学习模块之后的语言处理模块v0.4加入班级AI应用系统。交付物不是“语义路线一定获胜”的宣传,而是一张能够说明两种方法适用条件的对照证据表。

把文字转换为程序可以处理的单位

4.1 字符、词语和分词

第1章已经知道,文字进入计算机后会被编码成数字。得到字符编码只是第一步,程序还要决定用什么单位分析语言。“设备借用需要登记”可以按单个字符处理,也可以分成“设备/借用/需要/登记”等词语。不同单位保留的信息不同,适合的任务也不同。

分词(Word Segmentation)是把连续文本划分为词语或其他处理单元的过程。英文常用空格提供一部分词边界,中文句子通常没有把所有词用空格分开,因此程序需要依据词典、统计模型或神经网络确定边界。分词不是机械加空格,同一句话在不同任务中还可能采用不同粒度。

例如,“研究生命起源”通常可以切分为“研究/生命/起源”;如果错误切成“研究生/命/起源”,后续检索会得到不同结果。“南京市长江大桥”既可以识别地名“南京市”和专名“长江大桥”,也可能因词典和上下文不足产生歧义。分词结果会影响关键词计数、实体识别、翻译和语义表示。

本章离线页面采用公开可见的小词典进行最长匹配,并保留无法识别的单个字符。这是一种教学用简化处理,优点是过程可检查,缺点是新词和歧义处理能力有限。现代系统可能直接处理字符、子词或其他文本单元,不是所有自然语言处理任务都必须采用同一套分词结果。

自然语言处理(Natural Language Processing,NLP)是研究和开发计算机处理人类语言的方法与系统的领域。常见任务包括分词、文本分类、信息检索、机器翻译、问答、摘要和文本生成。系统能够完成某项语言任务,不表示它具有人的全部语言经验、常识和交流责任。

4.2 用关键词建立第一版检索器

关键词检索先把查询和资料分词,再检查是否出现相同词语。最简单的方法是统计共同词语数量,共同词越多,候选资料的得分越高。为了避免“的、是、怎么”等高频词干扰,还可以设置停用词表,不让这些词参与主要得分。

资料负责人准备12条课堂虚拟资料,每条控制在40—80字。资料内容要稳定、可核对,不能使用真实账号、门禁方式和个人联系方式。下面给出其中6条示例,其余资料可以围绕社团报名、素材提交、储物柜、网络连接、值日安排和安全培训补充。

编号 标题 资料正文 主题词
D01 创客空间开放时间 周一至周五16:30—18:00开放,课程占用时暂停。 开放、时间、课程
D02 设备借用 填写课堂借用单,经值班员确认后领取教学设备。 设备、借用、登记
D03 打印登记 每组每天可进行一次课堂模拟打印,使用前登记。 打印、登记、次数
D04 故障报修 记录设备编号、故障现象和发生时间,再提交报修。 故障、报修、编号
D05 密码重置 忘记课堂练习账号密码时,按公开重置说明操作。 密码、账号、重置
D06 现场咨询 开放时段可到实训楼二层服务台咨询公开流程。 地点、咨询、服务台

关键词第一版可以采用下面的计算逻辑。queryWords 是查询词语,documentWords 是资料词语;共同词语每出现一次,得分增加1。

let score = 0;
for (const word of queryWords) {
  if (documentWords.includes(word)) {
    score += 1;
  }
}

关键词检索容易解释。输入“打印登记”时,可以直接指出D03同时出现“打印”和“登记”;查找设备编号、课程代码和法规条款时,精确词语本来就是重要证据。它的局限也很明确:如果查询用“放学后还能去吗”,而资料只写“开放时间”,二者没有共同关键词,程序就可能漏检。

使用AI编程助手时,可以提交以下任务说明。程序生成后先检查资料数组、分词函数、关键词得分和结果显示四个位置,不把是否美观作为第一轮验收重点。

开发任务说明:关键词与语义检索对照页 v0.1

目标:制作一个校园服务资料检索网页,第一版先完成关键词路线。
资料:使用我提供的12条编号资料,显示标题、正文、主题词和更新时间。
输入:一个中文查询框和“检索”按钮。
处理:使用公开可见的教学词典分词,删除停用词,按共同词语数量排序。
输出:显示前三条资料的编号、原文、共同词和得分;零分时明确显示“没有足够的字面匹配”。
记录:保存查询、期望编号、实际首条编号和是否命中。
运行:单个HTML文件,离线运行,不加载外部模型、脚本和字体。
验收:精确编号优先;空查询不检索;12条标准问题分别命中对应资料;资料外问题不得生成答案。

保存关键词版和资料v0.1。使用配套实训页的小组载入12条内置资料,完成标准问题检查后导出第一版记录。此时不要查看未知测试答案,也不要先把同义词全部加入词典。

用未知问题测试关键词检索

4.3 同一意思可以有不同的语言形式

测试负责人准备16个问题,每类4个。第一类是同义改写,如“放学以后还能进创客空间吗”;第二类是否定或转折,如“我不是来借设备的,只想问位置”;第三类是一词多义或依赖上下文,如“机器卡住了”和“校园卡不能用”;第四类是资料外问题,如“今天食堂有什么菜”。每个问题先写期望行为,再运行程序。

问题类型 测试问题 期望行为 关键词版可能出现的结果
同义改写 放学以后还能进创客空间吗 找到D01 没有“开放时间”,可能漏检
否定转折 我不是来借设备的,只问地点 优先找到D06 因“借设备”命中D02
一词多义 电脑运行时总是卡住 找到故障资料 “卡”可能被误作校园卡
资料外 今天食堂有什么菜 明确无资料 共同词偶然命中其他条目

测试时记录首条结果,也保留第二、第三候选。有时正确资料排在第二位,说明检索找到了线索但排序不理想;有时前三条都没有正确资料,说明当前表示没有建立查询与资料之间的联系。不能把“页面返回了三条结果”当作检索成功。

关键词路线的失败不只来自词表太短。否定词改变了句子意图,却可能与被否定的主题同时出现;一个词在不同上下文中含义不同;多意图问题可能同时需要两份资料;资料中根本没有答案时,任何排序都只能返回不相关候选。继续添加同义词可以解决一部分问题,也会重复第2章规则不断扩展的维护压力。

完成测试后统计四类问题的首条命中数,并选择两项失败。第一项必须是字面不同但意思接近,第二项从否定、多义或资料外问题中选择。后面的语义路线要用同一批问题运行,不能为第二版临时换一套更容易的题。

从检索失败理解自然语言处理的发展

4.4 词典、语法和早期机器翻译

计算机处理自然语言的早期重要任务之一是机器翻译。1954年,IBM 701运行过俄语到英语的实验性自动翻译程序。研究者准备双语词典,并编写语法和语义处理规则,希望程序能够把一种语言转换为另一种语言。限定词汇和句型上的演示取得进展,也引发了很高期待。

规则翻译并不是简单逐词替换。不同语言的词序、词形和语法结构不同,同一个词还会随上下文改变含义。系统需要先分析输入结构,再选择词义、调整顺序并生成目标句子。规则由语言专家编写时能够解释,却难以覆盖不断出现的新词、习语、歧义和例外。

1966年,美国自动语言处理咨询委员会发布关于机器翻译和计算语言学的报告,对当时进展、成本和实际需要作出评估。此后部分研究投入发生变化。这一节点不能被简化为“某份报告让机器翻译停止”,更不能说明规则方法毫无价值;它反映的是技术能力、成本、目标和社会预期之间的差距。

本章关键词检索与早期词典方法有相通之处:程序依赖人准备词表和明确处理步骤,命中原因容易检查,遇到词表外表达则容易失败。今天的术语查询、编号查找、敏感词规则和结构化命令仍会使用这类方法,因为精确匹配在适合的任务中有实际价值。

4.5 从双语语料中统计对应关系

随着数字文本增加,研究者开始更多地从大量真实语言材料中统计规律。

语料库(Corpus)是按照研究或应用目的收集、整理的语言材料集合。它可以由新闻、对话、说明书或专业记录组成;相互对应的双语文本构成平行语料,可以提供“这句话通常怎样翻译”的大量实例。

1980年代后期到1990年代,统计机器翻译受到重视。系统不必由人写完每条翻译规则,而是从平行语料中估计词语、短语和句子对应的可能性。输入一句话后,程序比较多种翻译候选,选择在翻译模型和目标语言模型下更合适的结果。

统计方法把许多语言问题转成可以从数据估计的关系,对大规模机器翻译产生重要影响,但它仍受语料限制。某个专业词在训练材料中很少出现,估计就不稳定;双语句子对齐错误,模型会学到错误对应;长距离语序和上下文关系也不容易只靠短语统计处理。

语料不是越多越好就够了。来源是否允许使用,领域是否匹配,时间是否过旧,语言和地区是否具有代表性,标注是否一致,都会影响系统。把电商客服语料直接用于医疗说明,词语虽然相同,任务责任和真实含义可能完全不同。

4.6 把词语和句子表示成向量

如果只检查词语是否相同,“开放时间”和“放学后还能来”之间没有直接联系。研究者希望用一种可计算表示,使经常出现在相似上下文中的词语具有相近表示。2010年代前后,词语的分布式向量表示得到广泛应用:每个词不再只对应一个编号,而是对应一组可以参与计算的数值。

语义表示(Semantic Representation)是把词语、句子等语言对象转换为能够参与计算、比较其关系的表示。本章使用向量作为例子。一个词向量可以有许多维,每一维不是人工词典中明确写出的单一含义,而是训练从大量语言环境中形成的数值组合。

两个向量的方向越接近,常用余弦相似度表示它们在当前表示空间中越相近。若向量为 a 和 b,计算要用到对应位置相乘的总和以及两个向量的长度。本章不要求推导公式,但要能看懂“文字—向量—相似度—排序”这条计算链。

similarity = dot(a, b) / (length(a) * length(b));

实训页中的右侧路线使用一张教学用概念向量表。“开放、时间、几点、放学后”等词在“时间服务”维度上有相近数值,“地点、哪里、几楼”等词在“位置服务”维度上接近。查询向量由其中词语向量合成,再与资料向量比较。这个设计让过程可以离线观察,但概念关系由编写者预先设置,不能冒充真正的大规模预训练语义模型。

图4-1 同一句查询经过分词、向量合成和相似度排序的过程

词向量能表现一部分语义和句法关系,却有明显局限。单个词的表示可能忽略具体上下文和词序;“允许借设备”和“不允许借设备”含有大量相同词,整体方向仍可能接近;固定向量也不容易表示一个词在不同句子中的不同含义。后来的上下文表示会根据周围词语改变当前词的表示。

4.7 神经机器翻译与Transformer

神经网络的发展使研究者能够直接学习从输入序列到输出序列的映射。2014年前后,序列到序列学习方法使用一个网络把输入句子编码成内部表示,再由另一个网络逐步生成目标句子。与人工设计大量翻译组件相比,这种端到端方法让表示和生成能够共同从数据中训练。

早期编码器—解码器把整句信息压缩到有限表示时,长句容易损失细节。注意力机制让生成每个输出词时,能够对输入中的不同位置分配不同关注程度。2017年提出的Transformer架构以注意力机制为核心,并提高了序列计算的并行性,后来成为许多语言模型的重要基础。

神经机器翻译通常能产生更连贯的结果,也能够利用更广的上下文,但仍会漏译、误译专名、混淆否定或生成原文没有的信息。专业翻译还要使用术语库、上下文资料和人工复核。语言模型怎样基于前文预测后续文本、Transformer为何重要,将在第6章展开。

图4-2 规则、统计和神经机器翻译的输入材料与处理方式对照

自然语言处理也不只等于机器翻译。文本分类判断类别,信息抽取寻找实体与关系,检索寻找相关资料,问答组织答案,生成模型产生新文本。不同任务需要不同评价:检索要看正确资料是否被找到,翻译要比较含义和表达,生成还要检查事实、来源与安全。

4.8 语义相近不等于意图相同

语义向量扩大了系统处理改写表达的能力,却没有自动解决语言中的全部关系。否定句“不要打印”和肯定句“需要打印”共享“打印”这个主题;反讽可能字面积极、实际批评;“苹果维修”可能谈水果分选设备,也可能谈某类电子产品;“他告诉老师学生已经完成”还可能存在指代范围问题。

上下文决定词义,也决定一句话在当前任务中的作用。资料检索只需找到相关文本,权限系统却要判断是否允许执行;情感分类关注态度,事实核查关注陈述是否有依据。同一句话交给不同任务,正确处理方式可能不同,因此不能只问“模型懂不懂”,还要先说明系统要完成什么任务。

相似度本身也不是正确概率。一个资料外问题仍会与12条资料中的某一条最相近,因为排序必须有第一名。若最高相似度很低,系统应显示“没有足够相关的资料”;即使相似度较高,也要让使用者查看原文,确认资料真的回答了问题。

因此,语言系统通常需要组合方法。精确编号、固定术语和禁止条件可以由规则优先处理;开放改写使用语义检索扩大召回;否定、多意图和低相似度结果触发提示或人工复核。组合不是承认技术失败,而是让每种方法承担适合的职责。

增加语义路线并完成第二版

第二版在右侧加入教学用语义向量检索,同时保留左侧关键词结果。先用原来的16个问题运行,不改测试答案。记录两侧首条资料编号、共同词、相似度、是否命中和错误类型。语义路线如果只在同义改写上改善,却在否定题上继续出错,要如实呈现两方面证据。

完成对照后,再加入三项有限修订。第一,查询中出现资料编号、设备编号等精确标识时,优先精确匹配;第二,最高相似度低于课堂设定阈值时,不返回确定答案;第三,检测到“不、不要、不是、无需”等否定提示时,页面标记“需要核对句子关系”,不直接执行现实操作。

阈值不能为这16道题反复调到最高分。开发测试可以帮助选择一个设置,最终还要由另一组提供8个新问题,其中至少包含2个同义改写、2个否定、2个多义或多意图、2个资料外问题。两种路线在新问题上的表现,才是第二版最终说明的重要证据。

测试维度 关键词路线 语义路线 组合后的处理
精确编号 通常可靠 可能被其他词干扰 编号规则优先
同义改写 容易漏检 可能找到相近资料 显示原文供核对
否定转折 可能误命中 仍可能误判 标记否定并提示复核
资料外问题 零共同词时可拒绝 总会有最相近候选 设最低阈值并拒答

第二版保存为 language_retrieval_v02.html;使用配套实训页的小组导出包含两条路线、16题开发测试和8题最终测试的记录。任何一侧返回资料,都必须显示编号和原文。页面可以建议“查看D01”,不能脱离资料生成“今天一定开放”之类的新事实。

完成技术路线说明和版本展示

每组制作一张技术路线说明表,按照“输入怎样表示—依据来自哪里—怎样计算—主要优势—主要局限”比较关键词、统计方法、语义向量和神经语言方法。历史年份只用于建立先后关系,评价重点是方法变化解决了什么问题,又引入了什么新的检查要求。

展示控制在九十秒。前二十秒用同义问题展示两条路线的差异;接着二十秒展示否定或资料外问题,说明语义方法的失败;再用三十秒解释从字面匹配到语义表示的基本原理;最后二十秒说明组合规则、语义检索和人工复核的原因。不得只选择右侧胜出的题目。

班级AI应用系统保存关键词第一版和组合第二版。第2章规则机器人直接输出预设回答,第4章检索模块返回可核对资料;两者虽然都处理语言,任务和证据不同。下一章接入摄像头后,输入将从文字变为像素,但“表示—模型—测试—范围”这条主线继续成立。

图4-3 关键词第一版与组合第二版的处理流程和证据对照

安全与责任

语言材料可能包含姓名、联系方式、健康、家庭和观点等个人信息。技术上能够复制文本,不等于有权把它用于训练、检索或展示。本章使用公开流程和课堂虚构资料;真实项目要明确材料来源、使用目的、访问权限和保留期限,并删除完成任务不需要的个人信息。

语言标签和语料分布还可能造成偏差。某些方言、专业表达或少数群体用语在语料中较少,系统表现可能更差。发现这种差异时,应补充得到允许的代表性材料并分别报告结果,不能把系统错误归咎于使用者“说得不标准”。

本章小结

自然语言处理把人的语言转换为计算机能够分析、比较和生成的表示。字符编码解决文字怎样存入计算机,分词进一步确定处理单位;语料库为统计和学习方法提供语言材料;语义表示把词语或句子转换为向量等可计算对象,使字面不同的表达有机会建立联系。

机器翻译的发展显示了方法变化。早期系统依赖词典、语法和语义规则;统计方法从平行语料中估计对应关系;神经网络学习序列表示和生成,注意力与Transformer又增强了上下文处理和并行计算。新方法扩大了能力,但没有取消术语检查、资料来源、独立测试和人工复核。

本章的关键词路线对精确词语和编号容易解释,却会漏掉同义改写;教学用语义路线能根据向量相似度找到部分相关表达,仍可能被否定、多义和资料外问题误导。可靠的第二版让规则、语义检索、阈值拒绝和原文核对各自承担职责,不把“相似”误写成“正确”或“理解”。

习题

基础题

  1. 用自己的话解释自然语言处理、分词、语料库和语义表示,并各举一个本章实例。
  2. 为什么“研究生命起源”和“研究生/命/起源”的切分会影响后续处理?
  3. 比较关键词检索与语义检索的依据,各写出一项适合的任务和一项局限。
  4. 按规则、统计、神经三个方向概括机器翻译方法怎样取得处理依据,不能只罗列年份。

应用题

  1. 查询“我不是来打印的,只想报修设备”,关键词和语义路线可能分别出现什么问题?设计一个组合处理流程。
  2. 某检索系统对资料外问题也返回相似度最高的条目。提出两项防止使用者误信的界面或流程修订。

探究题

  1. 【选做】选择一个存在多种合理分词的中文短句,比较两种切分对关键词统计或检索结果的影响,并说明任务目标。
  2. 【选做】寻找一项仍使用精确关键词或规则的现代语言系统,说明为什么没有把全部工作交给语义模型。

本章交付物

1. 程序与测试证据

提交关键词第一版、组合第二版、12条资料、16题开发测试、8题跨组最终测试和技术路线说明表。使用配套实训页时,提交单文件页面和导出的实验记录。测试至少保留一项关键词成功、语义成功、两者共同失败和正确拒答。

评价维度 达成标志
程序运行 两条检索路线可离线运行,结果显示编号、原文和计算依据
测试证据 同义、否定、多义和资料外问题齐全,有开发与最终测试
原理解释 能说明分词、语料、向量、相似度及三类技术路线
修订质量 精确规则、语义检索、阈值和人工复核分工清楚
数据责任 资料来源允许使用,不含非必要个人信息,限制说明准确

2. 自评单

  • [ ] 我能指出查询经过分词后得到的处理单位。
  • [ ] 我能说明关键词得分和语义相似度分别怎样产生。
  • [ ] 我没有把相似度解释为正确概率或理解程度。
  • [ ] 测试包含同义、否定、一词多义和资料外问题。
  • [ ] 我们展示了语义路线失败的真实样例。
  • [ ] 第二版返回资料编号和原文,没有脱离资料生成事实。
  • [ ] 我能说明规则、统计和神经方法在语言技术发展中的联系。
  • [ ] 语料和测试材料不含未经允许的私人文本。

打开本章离线实训