21天搞定聊天機器人之{命名實體識別}

看到這個題目,估計程序猿們要笑了,你們都懂的嘛。畢竟你們已經被「21天學會XXX」坑了很多回了。因此,這個題目天然是開玩笑的了,怎麼可能21天搞定聊天機器人呢。算法

雖然2016年號稱人工智能元年,各類牛逼的人工智能技術如雨後春筍冒出來,可是要打造一個智能聊天機器人談何容易,目前尚未一款聊天機器人能夠經過「圖靈測試」。最近大熱的《西部世界》中的阿諾德提到了人工智能的四層金字塔模型,從下往上依次爲"記憶","即興","私利","?", (最上面一層劇中尚沒有透露), 這也偏偏就是描述咱們人類的智商層次。機器學習

OK,言歸正傳。今天想聊的只是在作聊天機器人(或者叫語音助手)的過程當中須要面對的一個小問題,叫作所謂的命名實體識別(NER: Named Entity Recognition)。NER是天然語言處理中的一個課題,好比識別文本中的人名,地名,日期等這些詞語。工具

好比對於以下一句話:
「Siri,打電話給Abby"學習

做爲Siri來講,她除了要明白你的這句話是讓她打電話,同時要知道到底是打電話給誰。在這句話中,很顯然是要打電話給Abby這我的。那天然要從這句話中識別出Abby做爲打電話的目標人。那麼怎麼來實現從一句話紅提取出人名這中命名實體呢? 固然對於人名這種典型的命名實體,已經有不少天然語言處理的工具實現了這個功能,好比NLTK, Stanford NER等。測試

可是,今天我想講的是藉助機器學習和簡單的NLP來實現定製化的NER。OK,怎麼搞呢?既然提到機器學習,第一反應就是「分類」,畢竟機器學習一個很大的應用領域就在於分類。那麼對於NER怎麼來用「分類」算法作呢?既然咱們的目標是從一個句子中定位出相關的"詞"或"詞組",那麼很天然這個句子中的每一個詞或字就能夠劃分紅兩個分類:人名,和非人名。人工智能

對上面的這個例子來講,就能夠分爲下面兩個類:blog

  1. Siri, 打電話給 ---> 非人名分類
  2. Abby ---> 人名分類

所以這個問題就變成了分類問題了! 只要咱們準備足夠的語料庫(包含可能的說法,和常見的人名)就能夠來訓練咱們的分類模型了。it

具體流程能夠參考下面示意圖:io

如今你的聊天機器人應該知道怎麼打電話了, 是否是很贊。哈哈,其實這種方法能夠推廣,能夠用來訓練識別其餘的Concept, 不單單是人名。二維碼

OK,今天先聊到這裏了。

歡迎掃描二維碼,瞭解更多。

相關文章
相關標籤/搜索