音樂領域的天然語言理解

人機交互方式愈來愈多的變成語音交互,用戶說出口語化的天然語言,系統須要正確理解並實現對應的操做。語音識別是另一個問題,本文討論語音識別後的文本處理。而音樂在人們生活中是剛需,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

相關文章
相關標籤/搜索