音乐领域的天然语言理解

人机交互方式愈来愈多的变成语音交互,用户说出口语化的天然语言,系统须要正确理解并实现对应的操做。语音识别是另一个问题,本文讨论语音识别后的文本处理。而音乐在人们生活中是刚需,amazon的echo、google的google home、讯飞京东的叮咚智能音箱、百度的对话式人工智能操做系统DuerOS等,如雨后春笋般爆发,对音乐的支持都是必须功能。正则表达式

要处理的问题

  • 判断文本是否属于音乐领域
  • 信息的抽取:歌曲名、歌手、乐队、专辑、标签、歌词、场景词等
  • 上下文语境的继承:我要听薛之谦的歌,换成他唱的演员
  • 用户感情理解:不喜欢听邓紫棋的歌,随便放一首歌,讨厌摇滚歌曲
  • 多轮对话:和用户产生屡次连续对话,来确认其真实需求

面对的挑战

  • 半结构化文本:咱们要处理的文本是半结构化文本,它不彻底符合天然语言规则,比较简短,没有固定形式。相较于新闻报道、科技文献使用的合乎天然语法规则的自由文本更加困难。
  • 实体名抽取:音乐领域的实体名复杂多变,没有固定、清晰的组成规则,尤为是歌曲名的识别。
  • 数据量大:音乐领域历史悠久,参与人员众多,积累了庞大的数据,QQ音乐有1500w,网易云音乐500w,阿里系有300w。这就对系统的高效、准确提出了挑战。
  • 音乐知识的完整及准确度:只有流行歌曲/歌手才有比较完整的字段信息,如何爬取创建完整的音乐知识库,清洗数据去除噪音使其可用,正确理解音乐特性打上准确的标签等都是繁杂有挑战的工做。

实现方案

信息抽取

首先就是信息的抽取,有2种方法基于规则和基于统计。规则就是含有目标信息的句子模式,用于指明构成目标信息的上下文约束环境,依赖于语言、领域,书写规则的过程耗时且容易错误,但抽取效率和准确性高。基于统计的方法是利用人工标注的语料进行训练,使用隐马尔科夫模型、最大熵模型(CRF)、几率上下文无关语法(PCFG)等。因为天然语言简短半结构化,音乐类的实体名无规则(如“我爱你”就能抽出歌曲我、爱、你、我爱、我爱你、爱你6首歌),基于统计的模型不适合音乐领域,准确度不会过高,也很差泛化。
基于规则的抽取方法,一般须要词典,如天气领域能够是城市名。但音乐领域把听(张杰唱)、我(张国荣等唱)、南方(文雀唱)、看风景(嘉林唱)等歌曲名加入词典的话,会对规则系统在歧义消除、系统复杂性、响应时间上有很大的挑战。咱们须要另寻其余的词典。
用户的query每每很简短,主要有实体词(忘情水)、意图词(唱个歌儿、放首等)2部分组成,实体词不能做为词典,但音乐领域的意图词是能够列举的(咱们找到了764个),把意图词去掉剩下的部分就是与音乐相关的实体词。less

词典组成

  • 意图词,意图词有2个属性,type和score。type为query/next/again/negative,指出是放下一首仍是上一首,仍是不喜欢;score表示意图词倾向于音乐领域的强烈程度,如“打开”就没有“唱首歌”强烈。
  • 专辑词:主题曲、专辑、结尾曲、推广曲等
  • 标签词:标签分为特殊标签、普通标签,如情歌、快歌等属于特殊标签,由于会影响句型规则的匹配,须要提早提出来,后续再作归为处理。标签也有强烈程度区分,如客家山歌、摇滚、童年三者的强烈程度依次递减,在消除歧义时会用到。

句型规则

句型规则用于得到主干内容等其余信息。句型规则由4部分组成(type, pattern, score, tendency)。机器学习

  • type分为clean(删除匹配部分)和extract(提取主干)两种
  • score表示该句型属于音乐领域的强烈程度,能够为负数
  • tendency表示该句型查询倾向于歌手仍是歌曲,如我要听小毛驴的歌,我要听小毛驴
  • pattern由变量组成
  • 变量分为play、repeat、emotion、indicator、quantifier、 uselessQualifier、uselessPrefix、uselessSuffix等,各变量是简单的正则表达式

音乐知识库

在得到主干query(即音乐领域实体词集合+少量未清理干净的噪音)后,咱们须要从中得到对应的音乐信息,如今问题就天然转变为了普通的关键词搜索。所以咱们创建了音乐知识库,doc包含歌名、歌手、歌手别名、专辑等,将成熟的信息搜索技术运用到天然语言理解中,既轻松解决了数据量大的问题,也保证了处理时间。学习

流程

类似度计算

在选择音乐的时候,咱们作了总体类似度和单field类似度两种计算,用于实现music pick和field pick。类似度计算方法使用了两种,编辑距离和相同字符,以应对不一样的判断状况。相同字符公式以下:

其中a为字符串b和c的相同字符个数,b和c为两字符串的各自长度,w为各自权重。google

Tag PK

一个词究竟是标签仍是歌手、歌名,仍是专辑,或者这个词只是歌名的一部分,再加上多标签的状况,这又是另一个复杂的问题。主要使用类似度、包含关系、标签强烈程度、标签组合状况、句型规则等来进行区分判断。人工智能

继承

目前咱们支持以下的继承,其中会有避免误继承的策略,如句型、知识库验证等。操作系统

  • 领域加强:本次为模糊的音乐领域,若是上轮为音乐领域则提升本次音乐领域得分
  • 歌曲继承歌手
  • 歌手继承歌曲
  • 标签继承歌手
  • 歌手继承标签
  • 歌曲切换的offset处理
领域强度打分

一个智能聊天机器人或者智能音箱都是面向多个领域的,要避免音乐领域过召回的状况,尤为是歌名能够是“对不起”。这部分工做利用了意图词得分、句型得分、命中field数、field与query的类似度、上下文状况及query长度等信息。日志

后续展望

机器学习或者深度学习在NLP中都有很好的应用,如可使用embedding进行领域判断。比较想作的一个是规则的自动提取,但愿经过线上日志+标注系统得到标注好的语料,利用这些语料自动生成句型规则,并补充意图词到意图词表中。使系统能够不断的自我提高,而不须要人工干预。
目前系统支持部分纠错功能,如贝尔加湖畔能够纠正为贝加尔湖畔,这是用了搜索自有的特性。但对比较短的query以及拼音纠错作的很差,但愿在知识库中增长拼音字段等其余手段来进行完善。
功能还须要继续扩展,如歌词识别、否认支持、音乐图谱、个性化推荐和搜索等。blog

相关文章
相关标签/搜索