使用C#開發Linebot(19) - 建立LUIS服務處裡自然語言辨識
接下來這幾篇,我們從頭開始談談NLP(自然語言處理),以及LUIS如何跟Line bot整合應用 前言 關於Linebot的開發,最終我們免不了碰到一個問題,要如何識別用戶所輸入的語句? 雖然我們有千百個不願意,Linebot也提供了Template Message之類的選單機制,可以幫助我們降低free style對談發生的機會,但終究,到最後我們還是得讓chat bot面對用戶以文字方式傳來的訊息。 怎麼說千百個不願意? 做一隻chatbot不就是希望和用戶chatting嗎? 話是這麼說沒錯,但截至今天的科技,要做一個答非所問,胡言亂語的bot來 引誘用戶跟你聊天 很容易(別懷疑,很多的chat bot其實目的只是要引誘用戶說話),但要做到有意義的自然語言『對談』,對電腦來說,這依舊是一個非常大的挑戰。隨著你對這個主題研究的逐漸深入,你愈會發現,人腦處理語言的神奇。 前話表過,我們終究要來看,在當前的技術下,如何讓chat bot來識別一段文字。我們在這邊推薦的技術是LUIS。 LUIS全名是Language Understanding Intelligent Services,顧名思義,是一個提供語句理解能力的雲端服務。請留意,LUIS並非去分析語句含意(這是Text Analytics的功能),而是去拆解並嘗試依照句型來判斷一個句子,分類歸納出用戶的意圖(intents)並抓取出句子當中關鍵的entities。 而這個功能,對於我們的caht bot,非常的重要。 由於bot的文字輸入介面很自由,用戶往往可以很隨興的打字輸入,你根本無法限制用戶輸入什麼,以什麼句型方式輸入。而且人很有趣,只要沒有限制,就會竭盡所能地嘗試。此外,也非常有可能因為typo之類的輸入錯誤,導致一個句子在輸入上就有錯別字或是不完整,使得chat bot無法只是抓取特定關鍵字來識別用戶的企圖與目的。 凡此種種,都讓NLP自然語言處理的難度比想像來的高。 你只要開放一個文字聊天機器人,就會有人亂打一些有的沒的,然後bot沒理解出他的意思,他就笑這個bot很笨。(這樣很有成就感?) 因此,就對談機器人來說,首要目標之一就是理解用戶輸入的內容,而LUIS是實現這個功能的重點服務。 基本概念 首先,我們需要知道一些概念,LUIS的基本功能(以後有空再說複雜的),就是分析一句話,區分出用戶的意