-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathre_nn.txt
34 lines (21 loc) · 3.87 KB
/
re_nn.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Marrying up Regular Expressions with Neural Networks:A Case Study for Spoken Language Understanding
ACL2018
# 总体介绍
这篇文章通过利用正确表达式中的知识辅助神经网络的训练,从而在数据量非常少的时候,也能训练处比较好的模型。
# 需求分析
在实际使用神经网络类的机器学习方法时,往往需要跟具体的应用场景相结合。而一旦具体到一个细分的场景,所能利用的数据往往都是非常有限的。任务式对话系统就是一个典型的例子。其中的难点主要在于,如何在领域数据很少的情况下获得一个可靠的口语理解系统。
口语理解分为两个子任务。一是意图识别,即识别用户所说的指令对应的意图(句子分类);二是槽位解析,即在用户的指令中找出与其意图相关的槽位(序列标注)。
在工业界,缺少数据时,通常会人工撰写一系列正则表达式规则来构造一个规则系统。虽然这种方法不需要训练数据,但是它的泛化能力却非常差。而对应地,由于神经网络类模型是在向量空间中进行操作,所以其一般具有比价好的泛化能力。因此,是否可以将正则表达式和神经网络相结合,从而在数据很少的情况下构建出更可靠的系统?
# 结合正则表达式与神经网络
正则表达式的有用性
### 正则表达式的输出
正则表达式对于意图识别这类的句子分类任务,正则表达式通常会输出句子级别的标签;而对于槽位解析这种序列标注任务,正则表达式则通常会输出词级别的标签。
可以将正则表达式输出的标签进行向量化表示,并作为神经网络的辅助输入
可以通过类似线性加权的形式,将正则表达式输出的标签与神经网络的输出以一种可学习的方式进行结合。
### 正则表达式自身
正则表达式自身可以说明其分类所依据的线索词是什么。所以,相对应的,利用神经网络在做分类时也关注这些线索词。而关注句子中特定的词恰恰就是神经网络中attention模块做的事情。所以,正则表达式的另一种用法就是,可以利用正则表达式中的线索词来指导attention模块的训练。
在实际中,既会使用正向正则表达式,其认为符合其pattern的样本应该被标成某一类;也会使用负向正则表达式,其认为符合其pattern的样本不应该被标成某一类。所以,相对应地提出了正向attention和负向attention。负向attention关注样本里面哪些词告诉我们这个样本不属于这一类,正向attention则相反。将正向attention对于第k类的打分和负向attention对第k类的打分相减,得到最后的第k类的打分。
# 实验
实验是在ATIS航班信息数据集上进行的。首先,进行了小样本学习的实验。在这个设置下,通过随机抽样的方法,使得每一类都只包括5个、10个或20个训练样本。
在意图识别任务中,三个方法相对于基础的双向LSTM模型都有明显的提升。其中,利用正则表达式监督attention的方法提升最大,大概能提高8% - 15%的Accuracy。在槽位解析任务中,将正则表达式的输出当做feature进行输入的方法效果最好,大概能提高5%的宏观F1。同时,该方法也显著超过了单纯的正则表达式匹配方法。在使用全量ATIS训练集的时候,结合正则表达式的方法仍然可以对意图识别和槽位解析的宏观F1带来显著的提升。
复杂正确表达式和简单正确表达式的区别。复杂正则表达式一般比简单正则表达式具有更好地效果。但是,使用非常简单的正则表达式已经能取得非常明显的提升。在实际应用的时候,可以先从简单正确表达式开始,然后在成本允许的情况下,再逐渐增加正确表达式的复杂程度。