nlp
自然语言处理(NLP)作为人工智能(AI)领域的一个重要分支,旨在让计算机理解、生成和处理人类语言。它就像是一座桥梁,连接着人类自然语言与计算机系统,使两者之间能够实现自然、流畅的交互。
从学科范畴来讲,NLP 融合了计算机科学、语言学以及人工智能等多学科的知识与技术。它不仅仅关注语言表面的文字组合,更深入到语义理解、句法分析等多个层面。例如,当我们输入一句 “我想要查找附近好吃的餐厅”,NLP 系统要能够解析出这句话里 “我” 是主体,“查找” 是动作,“附近好吃的餐厅” 是目标对象,并且明白各个词语之间的语法关系以及整体所表达的含义,进而在相关数据库或者地图应用中去为我们精准匹配相应的信息。
现实生活中,很多常见的应用背后核心技术就是 NLP,像我们熟悉的 Siri、Cortana、Alexa 等虚拟助手,当我们向它们提问时,它们依靠 NLP 技术理解我们的话语内容,然后再用自然语言做出回应。再比如一些电子邮件程序,能利用 NLP 读取、分析消息内容,并基于分析结果为用户提供回复建议,帮助我们更高效地处理邮件。总之,NLP 致力于让计算机像人类一样理解和运用自然语言,为人们的生活和众多行业发展带来极大便利。
nlu
自然语言理解(Natural Language Understanding,NLU)是人工智能中的一个重要领域,旨在使计算机能够理解和处理人类语言的含义和意图。简单来说,就是要让计算机像人类一样,具备正常的语言理解能力,将人类语言转化为机器可理解的形式,而不是仅仅依赖过于死板的关键词。
它涵盖了诸多具体功能,例如文本理解、问答、命令理解、文本生成、自动摘要、语音识别、语音合成、知识抽取、意图识别、情绪分析、实体识别、关系抽取等。而且不仅局限于纯文本形式的自然语言,对于像命令式语言的解析等非自然语言也同样可以处理,本质上是希望把输入的各类语言符号,转化为逻辑符号、逻辑推理、变量、实体或者任何可推理可判断的元素。
例如,我们日常使用智能语音助手时,说出 “帮我查找下明天北京的天气”,NLU 技术就要分析出 “查找天气” 这一意图,识别出 “北京” 是地点实体,“明天” 是时间限定,进而将这些理解传达给后续程序去获取对应的天气信息。
nlu实现方法
- 词法分析:它主要是对文本中的单词进行处理,比如进行词性标注,判断一个词是名词、动词、形容词等,同时也会涉及到词汇的形态分析,像单词的复数、时态变化等。例如对于句子 “I am reading a book”,词法分析能准确指出 “I” 是人称代词,“reading” 是动词的现在分词形式等,这是后续理解句子语义的基础。
- 句法分析:这是将句子分解为语法结构的过程,通过分析词汇之间的关系,构建句子结构的语法树,以此提高计算机对句子结构的理解能力。常用的句法分析算法有基于规则的方法和基于统计的方法。例如 “小明在公园里跑步”,经过句法分析,计算机可以明白 “小明” 是主语,“跑步” 是谓语,“在公园里” 是状语,清楚句子的语法关系后就能更好地理解其含义。
- 语义分析:这是 NLU 的核心环节之一,它不仅关注单词的表面含义,更注重上下文及潜在意义的把握,通过各种算法和模型来挖掘文本深层次的语义信息。比如 “苹果手机很受欢迎”,语义分析要能知道这里的 “苹果” 指的是苹果公司推出的手机产品,而不是吃的水果苹果。
- 语用分析:侧重于研究语言在具体语境中的使用情况以及其表达的实际意义,确保机器能在正确的语境中解读用户的意图。例如在不同的对话场景中,同样一句话 “今天真热啊”,可能只是单纯描述天气状况,也可能是委婉地暗示想找个凉快的地方或者喝点冷饮等,语用分析就要结合上下文等语境因素准确判断其真实意图。
在自然语言理解(NLU)中,将用户输入转化为意图(Intent) 是一个关键步骤,其核心流程可分为 文本解析 → 特征提取 → 意图分类 → 槽位填充 四个阶段
那NLU涉及到的核心任务主要包括3个:领域检测、意图识别、槽位填充。
三者关系
以智能语音助手为例,当用户对着手机说 “播放周杰伦的歌曲” 时,首先涉及到语音识别技术将语音转换为文本,这是整个流程的起始环节。接着,NLU 开始发挥作用,它会分析这段转换后的文本内容,解析出这是一个音乐播放的请求,并且明确要播放的歌手是周杰伦,完成对用户意图的理解。然后,系统依据 NLU 解析出的意图去相关音乐库或者平台查找对应的歌曲资源,等资源准备好后,NLG 登场,它会生成如 “正在为你播放周杰伦的《青花瓷》” 这样自然流畅且符合日常表达习惯的语句,通过语音合成技术反馈给用户,从而完成一次完整的人机语音交互过程,让用户可以便捷地获取自己想听的音乐。
语音识别asr
语音识别正确率可以通过大数据,深度学习来提高,深度学习一般是卷积神经网络和循环神经网络

思必驰正确识别率在95%以上
声学模型
语言模型识别生成文本
在ASR中,通常分为声学模型和语言模型。声学模型负责将音频信号转化为音素或字词的概率分布,而语言模型则处理这些概率以生成连贯的文本。因此,声学模型位于ASR阶段的核心部分
声学模型可能使用CNN、RNN、Transformer等,而语言模型常用n-gram或神经网络如BERT
语音合成
语音合成技术的关键在于对语音声学模型的训练和优化,声学模型将文本转换为语音波形
采用深度神经网络声学模型可以生成更加自然和流畅的语音,此外通过引入情感合成技术可以使语音合成更加符合用户的情感需求


产品和技能的关系
- 人机交互是一个复杂的对话流程,为了让整个定制过程更简单高效,在DUI平台上分别通过产品和技能来实现;
- “技能”是指在特定领域内的用户特定需求通过语音对话的方式来满足的过程,用户仅通过语音就可以完成,是模拟用户实际生活中的对话场景,用户与技能交互时,就像与人交互一样自然,可以理解为一个APP上的功能,如果地图APP,具有导航功能一样,通过语音对话即可完成一个或者多个特定功能,如:导航技能,可以通过编写语义对话完成地址查询与设置、路线规划、周边搜索、导航等功能。
- “产品”可以理解为一个场景,或者叫BOT,在一个“产品”中,我们可以通过给这个产品配置多个技能,使得这个“产品”能力丰富,同时在产品中还能配置语音识别模型、前端信号处理、语音唤醒词(主唤醒词、快捷唤醒词)、语音唤醒高级阈值训练、合成音配置、智能家居使用开关、有屏设备的UI样式、退出对话的说法及对应的播报、错误时的重试次数、错误(识别为空、语义理解为空、超出重试次数退出)的播报。
对话管理实现原理
规则:jsgf规则
深度学习
一、对话状态跟踪
1. 状态表示:
- 使用状态机或状态图来表示对话的不同阶段和状态。
- 每个状态对应对话中的一个特定环节或任务。
2. 状态更新:
- 根据用户的输入和系统的响应,实时更新对话状态。
- 使用上下文管理器来维护对话的上下文信息,确保状态的一致性。
二、意图识别和槽位填充
1. 意图识别:
- 通过自然语言处理(NLP)技术识别用户的意图。
- 使用机器学习模型(如深度学习模型)对用户输入进行分类,确定用户的意图类别。
2. 槽位填充:
- 在识别意图的基础上,提取用户输入中的关键信息,填充到相应的槽位中。
- 槽位是指对话中需要的具体信息,如时间、地点、人名等。
三、对话策略管理
1. 对话策略制定:
- 根据对话状态、用户意图和槽位信息,制定相应的对话策略。
- 对话策略包括询问更多信息、确认信息、执行任务或结束对话等。
2. 策略执行:
- 根据制定的对话策略,生成相应的系统响应。
- 使用规则引擎或决策树来执行对话策略,确保响应的合理性和连贯性。
四、对话流控制
1. 流程控制:
- 控制对话的流程,确保对话按照预期的顺序进行。
- 处理对话中的异常情况,如用户输入不明确或偏离主题时,进行适当的引导和纠正。
2. 上下文切换:
- 在多轮对话中,管理上下文的切换和延续。
- 确保对话的连贯性,避免重复询问或遗漏重要信息。
五、反馈和学习机制
1. 用户反馈:
- 收集用户的反馈信息,评估对话管理的效果。
- 根据用户反馈调整对话策略和管理方法,提升用户体验。
2. 模型训练和优化:
- 使用大量的对话数据进行模型训练,提高意图识别和槽位填充的准确性。
- 通过持续学习和优化,不断提升对话管理系统的性能。
六、多模态对话管理
1. 多模态输入:
- 处理语音、文本、图像等多种模态的输入信息。
- 综合多种模态的信息,提高对话管理的准确性和智能化水平。
2. 多模态响应:
- 根据多模态输入生成相应的多模态响应,如语音、文字、图像等。
- 提供更加丰富和直观的用户体验。
总结
对话管理通过状态跟踪、意图识别、槽位填充、策略管理、流程控制、反馈学习和多模态处理等多个环节,实现用户与系统之间的自然、流畅对话。它是整个语音交互系统的中枢,确保对话的高效进行和用户体验的提升。
一些问题
如何提高模型的泛化能力
1. 数据层面
- 增加数据多样性:通过数据增强(Data Augmentation)扩展训练集(例如添加噪声、同义词替换)。
- 平衡数据分布:避免某些类别数据过少(如对话系统中的冷门意图)。
- 划分验证集:严格分离训练集、验证集、测试集,防止数据泄露。
2. 模型设计
- 简化模型结构:避免使用过于复杂的模型(如减少神经网络层数)。
- 正则化(Regularization):
- L1/L2正则化:约束模型参数,防止权重过大。
- Dropout:在训练时随机“关闭”部分神经元,增强鲁棒性(常用于神经网络)。
- 早停(Early Stopping):在验证集性能下降时提前终止训练,防止过拟合。
3. 训练策略
- 交叉验证(Cross-Validation):将数据分成多份循环训练和验证,评估模型稳定性。
- 集成学习(Ensemble Learning):结合多个模型的预测结果(如随机森林、Boosting)。
- 迁移学习(Transfer Learning):利用预训练模型(如BERT、GPT)在小数据集上微调。
4. 领域适配
- 领域适应(Domain Adaptation):调整模型,使其适应目标领域的数据分布(如用通用对话模型适配医疗场景)。
- 持续学习(Continual Learning):模型在新数据到来时动态更新,避免遗忘旧知识。
离线asr模型
本地技能-ASR,使用 xbnf 训练的语言模型进行ASR识别,识别率会下降
但是支持用户自己根据 xbnf 文法,修改下载后的 xbnf 资源文件,来优化本地识别效果
jsgf规则
对话管理(DM)

从上图看,对话管理系统的主要工作有:
1)对于用户Query,根据对话系统每个bot的处理能力,分发给不同的bot进行处理。
2)聚合每个bot返回的相应回复,然后进行去重、融合/排序,得到最终回复。
领域识别算法
常见的分类模型,比如:传统的学习方法有朴素贝叶斯、SVM、决策树等,深度学习方法有:基于CNN、RNN的TextCNN、LSTM,Fasttext、BERT等。至于选用哪种算法,除了准确率、召回率,还需要考虑运行速度、训练时间、内存占用等综合作选择
一些参数的值
半双工:一问一答
全双工状态下退出机制
无识别超时时间:8s
会话超时时间:15s
这个等待时间被称为VAD超时,行业一般情况下VAD超时时间为450-800ms,比如讯飞的VAD超时默认为800ms
VadTimeout:
VadPauseTime(1000):vad后端停顿时间,默认500ms
技能/Bot处理
Bot根据不同的领域和场景进行划分,可以分为:任务型、问答型、闲聊型。不类型的bot负责各自的对话逻辑和对话状态的维护管理,而不同类型bot的对话管理也不太相同,以下分别对各类型bot的对话管理做说明。
1.任务型bot
任务型一般是为了完成特定场景下的任务。任务又可分为工具类的(如设闹钟)、内容类的(如播放音乐/故事)、服务类的(如出行规划、导航、订电影票等)。下图是任务型对话系统常见框架,包括了DST对话状态追踪和DP对话策略两个模块。
一、对话状态追踪(DST)概述
定义:对话状态追踪是指在多轮对话过程中,系统能够持续跟踪和更新用户的意图、请求信息、上下文环境等状态信息,以支持后续的对话决策和响应生成。
作用:DST为对话系统提供了“记忆”功能,使得系统能够跨越多轮对话,理解用户的连续请求和变化,从而提供更加连贯和准确的响应。
DST的主流方法
- 基于规则的方法:早期DST多采用基于规则的方法,通过预设的规则模板和条件判断来追踪对话状态。这种方法实现简单,但难以处理复杂的对话场景和变化。
- 基于统计学习的方法:随着机器学习技术的发展,基于统计学习的方法逐渐成为主流。包括贝叶斯网络、条件随机场(CRF)、支持向量机(SVM)等模型被应用于DST任务。这类方法能够自动从数据中学习特征表示和状态转移规律,提高了DST的准确性和鲁棒性。
- 基于深度学习的方法:近年来,深度学习在DST领域取得了显著进展。特别是循环神经网络(RNN)、长短时记忆网络(LSTM)、注意力机制(Attention Mechanism)以及Transformer等模型的应用,使得DST能够更有效地处理长距离依赖和复杂上下文关系。
- 端到端DST:一些研究尝试构建端到端的DST模型,将对话理解和状态追踪统一到一个模型中,以进一步提高整体性能和效率。
oneshot
如何判断是oneshot和普通对话?是靠唤醒后的首次vad间隔吗?
全双工语音交互
参考链接
https://blog.csdn.net/plusli/article/details/103499617