[论文笔记][INTERSPEECH-2016]Multi-Domain Joint Semantic Frame Parsing using Bi-directional RNN-LSTM

一、Contributions

  1. 我们提出了RNN-LSTM架构,用于槽填充,意图识别和域分类的联合建模;
  2. 我们建立一个联合的多领域模型,支持多任务深度学习,每个领域的数据相互加强;
  3. 我们研究了在口语理解中对词汇语境进行建模的替代架构

二、Models

三、特点

  • 域、意图和槽的联合

这样就把三个任务合并为一个序列标注任务

  • 多域建模

ATIS,alarm, cal- endar, communication and technical

这种模块化设计方法(即将SLU建模为3个任务)具有灵活性的优点; 可以在不需要改变其他域的情况下实现对域的特定修改(例如,插入,删除)。另一个优点是,在这种方法中,可以使用任务/域特定功能,这通常显着提高这些任务/域特定模型的准确性。此外,这种方法通常在每个域中产生更集中的理解,因为意图确定仅需要在单个(或有限集)域上考虑相对较小的意图和槽类集,并且可以针对特定意图和槽集合优化模型参数。但是,这种方法也有缺点:首先,需要为每个域训练这些模型。这是一个容易出错的过程,需要仔细的工程设计以确保跨域处理的一致性此外,在运行时期间,这种任务流水线操作会导致错误从一个任务转移到以下任务。此外,各个域模型之间没有数据或功能共享,导致数据碎片,而一些语义意图(例如,发现或购买域特定实体)和槽(例如,日期,时间和位置) 实际上可能是许多领域的共同点[2,3]最后,用户可能不知道系统覆盖哪些域以及覆盖的程度,因此该问题导致用户不知道期望什么并因此导致用户不满的交互[4,5]。

四、Refs

paper/reading1/reading2

 

0

字符串

151. 翻转字符串里的单词

给定一个字符串,逐个翻转字符串中的每个单词。

 

示例 1:

输入: "the sky is blue"
输出: "blue is sky the"
示例 2:

输入: "  hello world!  "
输出: "world! hello"
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:

输入: "a good   example"
输出: "example good a"
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
 

说明:

无空格字符构成一个单词。
输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
 

进阶:

请选用 C 语言的用户尝试使用 O(1) 额外空间复杂度的原地解法。
class Solution {
    public String reverseWords(String s) {
        String[] str=s.split(" ");
        for(int i=0;i<str.length/2;i++){
            String es=str[i];
            str[i]=str[str.length-i-1];
            str[str.length-i-1]=es;
        }
        return String.join(" ", str).trim().replaceAll("\\s{2,}", " ");
    }
}

179. 最大数

给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。

示例 1:

输入: [10,2]
输出: 210
示例 2:

输入: [3,30,34,5,9]
输出: 9534330
说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。
class Solution {
    //"2"+"12">"12"+"2",所以需要排序
    public String largestNumber(int[] nums) {
        if(nums==null || nums.length==0)
            return "0";
            String[] str=new String[nums.length];
        for(int i=0;i<nums.length;i++){
            str[i]=String.valueOf(nums[i]);
        }
        Arrays.sort(str,new Comparator<String>(){
                public int compare(String o1,String o2){
                    return (o2+o1).compareTo(o1+o2);
                }
            });
        if(str[0].equals("0")){//说明原始数组只有一个元素"0"
            return "0";
        }
        String ans=new String();
        for(int i=0;i<str.length;i++){
            ans+=str[i];
        }
        return ans;
    }
}

Collections.sort和Arrays.sort自定义排序/部分排序

0