0%

\[ \begin{aligned} m = [a_1, a_2, \cdots, a_n] \\ n = [b_1, b_2, \cdots, b_n], \\ \end{aligned} \] f(x),g(x) 是两个可积函数。

向量点积

英文中叫做 dot product,又被称为点乘内积数量积

\(m \cdot n = a_1 * b_1 + a_2 * b_2 + \cdots a_n * b_n\)

也可以写作\(m \bullet n = a_1 * b_1 + a_2 * b_2 + \cdots a_n * b_n\)

阅读全文 »

个人认为 UML 中的组成(composition)以及聚合(aggregation)的关系十分混乱,比如网上的一些版本。human 和 head 是一个 composition 关系因为 human 不能脱离 head 而独立存在。但是如果不严格来讲,其实 human 是可以脱离 head 存在的,并且现实的业务中并没有如此严格的设定,表示某一样事物不能离开某物存活。

另外认为 car 和 engine 是一个 aggregation 的关系,因为 car 即使脱离了 engine 也能独立存在。但是又不严格的来讲,car 其实脱离了 engine 就无法行驶了,这到底是否还算 car 存在?由于脱离 engine,car 的最主要的功能消失了,这还能算脱离 engine 依旧可以存在吗?

那么现在的问题就是能否独立存在(head 之于 human,engine 之于 car)的概念该如何定义?这是一个很模糊的概念。human 脱离 head 之后,虽然 human 无法存活,但是 human 作为一件实体,它还是会继续存在在这个世界上。难道以是否能存活来区分吗?那么如果下次改为鸡呢?大家知道有只鸡即使已经脱离了头部,它也依旧存活了数月。那么这个概念到底该如何定义呢?我觉可以暂时使用以下的方式:

  • 物体拥有多个功能性组件定义为 aggregation
    • 如果物体只有一个功能性组件定义为 composition。如 PolicyManager 的功能是管理 Policy
    • 如果物体拥有多个功能性组件但是拥有主要(关键)功能,那么将主要功能组件(可多个组件)定义为 composition,其他为 aggregation。如 car 的主要功能是行驶,那么 engine 和 car 肯定是 composition 的关系,而车载音响不过是 aggregation 的关系。
  • 物体的属性定义为 composition。Tree 拥有 Node 属性
阅读全文 »

语音对话系统架构

PyDial 的论文中已经描述了系统的架构,本文最上面的 alert 中也已经给出了两篇论文笔记。我在这里做个总结。

PyDial 的总体架构如下图所示。其中主要组件被称为 Agent,它封装了所有对话系统模块,以实现基于文本的交互。对话系统模块依赖于由一个本体Ontology)定义的领域规范。为了与环境交互,PyDial 提供了三个接口:Dialogue Server【允许语音型交互】、Texthub【允许输入型交互】和 User Simulation system。交互的性能由评估Evaluation)组件监视。

下图总计大部分,将在下面的小节中分别阐述。 The general architecture of PyDial

Agent

主要关注 Agent 部分。Agent 负责对话交互,因此内部的架构类似于下图中的内容。Agent 还维护 dialogue sessions。因此,可以通过实例化多个 agents 来支持多个对话。 Architecture of a modular Spoken Dialoug System

  • Semantic Parser/Semantic Decoder:将文本输入转化为一个语义表征。PyDial 提供了一个基于规则(使用正则表达式)的实现,以及一个基于 SVM 的统计模型,即 the Semantic Tuple Classifier。对于后者,只提供了 CamRestaurants 领域的模型
  • Belief Tracker:负责维护一个被称为 belief state 的对话状态表征,可用 the rule-based focus tracker 实现。该实现与领域无关。所有特定领域的信息都是从本体中提取的
  • Policy:将 belief state 映射到适合的 system dialogue act。有两种实现方式:1)人工制定的策略(应该适用于所有领域);2)Gaussian process (GP) reinforcement learning policy。对于多领域对话来说,策略管理器可以像处理所有其他模块一样处理策略。给定每个用户的输入的领域,然后选择相应的领域策略;3)此外,还可以选择 Gasic et al.(2015b) 提出的 Bayesian committee machine(BCM) 处理程序;4)博主注:目前(2020.1)已经不止这三种方法,还有十数种强化学习策略可供选择。
  • Semantic Output/Language Generator:将 system dialogue act 转化为文本表示。PyDial 提供了两个实现组件:1)对于所有领域来说,提供了一个基于模板(定义规则)的语言生成;2)此外 Wen et al. (2015) 提出了基于 LSTM 的语言生成器,里面包含了 CamRestaurants 领域的预训练模型
  • Topic Tracker:对于多域功能,需要 topic tracker。如果 Topic Tracker 已为某些用户输入标识了领域,那么它将继续使用该领域,直到识别了新的领域。因此,并非每个用户输入都必须包含相关关键字。如果 Topic Tracker 无法在开始时识别领域,那么它将创建与用户的 meta-dialogue,直到确定初始领域或达到最大重试次数。
    阅读全文 »

论文地址,论文作者 Casanueva I 等,发表于 2017 年。 此论文基于 PyDial,所以可能需要先看 这篇博文。

本文出现的名词

  • 自动语音识别——Automatic Speech Recognition, ASR
  • 自然语言理解——Natural Language Understanding, NLU
  • 基于开放域聊天的系统(open-domain chat-based systems):涉及一般性话题的非目标驱动对话
  • 面向任务的对话系统(task-oriented dialogue systems):将其做成一个小型电子设备附有非常吸引人的界面,旨在通过自然语言帮助用户实现特定目标。
  • 语音对话系统——Spoken Dialogue Systems, SDS
  • 对话管理——Dialogue Management, DM:belief state tracking and policy
    1. state tracking
    2. 策略模型
  • 自然语言生成——Natural Language Generation, NLG
  • 语音合成——speech synthesis
  • 本体(ontology):本体是系统数据库的结构化表示,定义了 requestable slots, informable slots and database entries(即用户可以与之交互的实体类型及其属性)
  • 强化学习——Reinforcement Learning, RL
  • 试错过程(trial-and-error process)
  • 高斯过程——Gaussian Process, GP
  • 策略梯度(policy gradients)
  • Q-learning
  • 通用口语对话测试平台(common testbed for spoken dialogue)
  • 基准测试环境(benchmarking environments)
  • 对话状态跟踪挑战——Dialogue State Tracking Challenges, DSTC
  • 马尔科夫决策过程(MDP)

论文摘要翻译

对话助理正迅速成为不可或缺的日常助手。

阅读全文 »

论文地址,论文作者 S Ultes 等,发表于 2017 年。 此文中出现了许多专业名词,可参考 此处 加以理解。

摘要翻译

统计口语对话系统(Statistical Spoken Dialogue Systems, Statistical SDS, 统计 SDS)已经存在多年了。然而,访问这些系统一直很困难,因为仍然没有公开的端到端系统实现。为了缓解这个问题,我们提出了 PyDial,一个开源的端到端统计语音对话系统工具包,它为所有对话系统模块提供统计方法的实现。此外,它还被扩展为提供多领域会话功能。它提供了各个对话系统模块的简单配置、易扩展性和域无关(domain-independent)的实现。该工具包可在 Apache2.0 许可下下载。

1 引言

针对机器去设计语音接口(凭此人机交互)是多年来的研究热点。这些语音对话系统(SDSs)通常基于模块化的架构,包括语音识别speech recognition)和语义解码semantic decoding)的输入处理模块input processing modules)、信念跟踪belief tracking)和策略policy)的对话管理模块dialogue management modules)、语言生成language generation)和语音合成speech synthesis)的输出处理模块output processing modules)(见图 1)。

以上介绍了 SDS 的架构。下一段介绍了一些 SDS 中不同组件的统计方法示例。

统计 SDS 是一个语音接口,其中所有 SDS 模块都基于统计模型(从数据中学习)(与人工规则相比)。对话系统中不同组件的统计方法例子可以在以下中找到: - ……(若干论文),详见原论文 Introduction 第二段。

阅读全文 »

2019年写了很多博文或者学习笔记,此文章记录一些比较重要的博文,以供未来查阅。

博文

论文地址,论文作者 D Ge 等,发表于 2019 年。

结论

使用 BPE、Sharing Vocab、Synthetic Training Instance 极大地提高了准确率。

概要

seq2seq 方法将语义解析形式化为一个翻译任务,即将一个句子转换为其对应的 lf(logical form)。然而,在缺少大规模标注过的数据集的情况下,即使在一流的 seq2seq 模型(如 Transformer)中也会遇到数据稀疏的问题。为了解决这个问题,本文探索了三种广泛应用于神经机器翻译的技术,以更好地适应 seq2seq 模型的语义分析任务。 1. byte pair encoding (BPE): 将单词分割成子词(subword),将稀有单词转换成高频的子词; 2. 我们在 source 和 target 共享词表(Sharing Vocab); 3. 我们定义启发式规则生成合成的实例,以提高训练集的覆盖率(Synthetic Training Instance)。

阅读全文 »

论文地址,作者 Piotr Bojanowski et al.,发表于 2016 年。

论文概要

现在流行的模型对单词表征的学习忽视了词法(morphology of word),它们直接给单词分配了不同的向量。这有一定的局限性,尤其对大规模词表并且含有大量稀有单词的语言。本论文提出基于 skipgram model 的方法,每个单词都被表示为一个 character n-grams(博主注:注意是 character,不是 word)词袋。每个 character n-grams 有一个向量,而单词由这些表征相加表示(即 e(where) = e(wh) + e(whe) + e(her) + e(ere) + e(re),e() 表示 character n-grams 对应的向量)。 模型,且可以计算那些不在训练数据中的单词表征(OOV 单词)。

阅读全文 »

《特征工程入门与实践》

3、特征增强:清洗数据

填充缺失值

通常数据集会因为各种原因有所缺失。必须尽可能地了解数据集,以便找到使用其他符号填充的确实数据。公开数据集的文档里面有可能会提到缺失数据的问题。 如果没有文档,缺失值的常见填充方法有: - 0(数值型) - unknown 或 Unknown(类别型) - ?(类别型)

阅读全文 »