人机交互方式愈来愈多的变成语音交互,用户说出口语化的天然语言,系统须要正确理解并实现对应的操做。语音识别是另一个问题,本文讨论语音识别后的文本处理。而音乐在人们生活中是刚需,amazon的echo、google的google home、讯飞京东的叮咚智能音箱、百度的对话式人工智能操做系统DuerOS等,如雨后春笋般爆发,对音乐的支持都是必须功能。正则表达式
首先就是信息的抽取,有2种方法基于规则和基于统计。规则就是含有目标信息的句子模式,用于指明构成目标信息的上下文约束环境,依赖于语言、领域,书写规则的过程耗时且容易错误,但抽取效率和准确性高。基于统计的方法是利用人工标注的语料进行训练,使用隐马尔科夫模型、最大熵模型(CRF)、几率上下文无关语法(PCFG)等。因为天然语言简短半结构化,音乐类的实体名无规则(如“我爱你”就能抽出歌曲我、爱、你、我爱、我爱你、爱你6首歌),基于统计的模型不适合音乐领域,准确度不会过高,也很差泛化。
基于规则的抽取方法,一般须要词典,如天气领域能够是城市名。但音乐领域把听(张杰唱)、我(张国荣等唱)、南方(文雀唱)、看风景(嘉林唱)等歌曲名加入词典的话,会对规则系统在歧义消除、系统复杂性、响应时间上有很大的挑战。咱们须要另寻其余的词典。
用户的query每每很简短,主要有实体词(忘情水)、意图词(唱个歌儿、放首等)2部分组成,实体词不能做为词典,但音乐领域的意图词是能够列举的(咱们找到了764个),把意图词去掉剩下的部分就是与音乐相关的实体词。less
句型规则用于得到主干内容等其余信息。句型规则由4部分组成(type, pattern, score, tendency)。机器学习
在得到主干query(即音乐领域实体词集合+少量未清理干净的噪音)后,咱们须要从中得到对应的音乐信息,如今问题就天然转变为了普通的关键词搜索。所以咱们创建了音乐知识库,doc包含歌名、歌手、歌手别名、专辑等,将成熟的信息搜索技术运用到天然语言理解中,既轻松解决了数据量大的问题,也保证了处理时间。学习
在选择音乐的时候,咱们作了总体类似度和单field类似度两种计算,用于实现music pick和field pick。类似度计算方法使用了两种,编辑距离和相同字符,以应对不一样的判断状况。相同字符公式以下:
其中a为字符串b和c的相同字符个数,b和c为两字符串的各自长度,w为各自权重。google
一个词究竟是标签仍是歌手、歌名,仍是专辑,或者这个词只是歌名的一部分,再加上多标签的状况,这又是另一个复杂的问题。主要使用类似度、包含关系、标签强烈程度、标签组合状况、句型规则等来进行区分判断。人工智能
目前咱们支持以下的继承,其中会有避免误继承的策略,如句型、知识库验证等。操作系统
一个智能聊天机器人或者智能音箱都是面向多个领域的,要避免音乐领域过召回的状况,尤为是歌名能够是“对不起”。这部分工做利用了意图词得分、句型得分、命中field数、field与query的类似度、上下文状况及query长度等信息。日志
机器学习或者深度学习在NLP中都有很好的应用,如可使用embedding进行领域判断。比较想作的一个是规则的自动提取,但愿经过线上日志+标注系统得到标注好的语料,利用这些语料自动生成句型规则,并补充意图词到意图词表中。使系统能够不断的自我提高,而不须要人工干预。
目前系统支持部分纠错功能,如贝尔加湖畔能够纠正为贝加尔湖畔,这是用了搜索自有的特性。但对比较短的query以及拼音纠错作的很差,但愿在知识库中增长拼音字段等其余手段来进行完善。
功能还须要继续扩展,如歌词识别、否认支持、音乐图谱、个性化推荐和搜索等。blog