[chatbot + AI = 下一代操作模式][17]語義識別服務 - LUIS概念介紹 @ Alan Tsai 的學習筆記|An Asp .Net Mvc Web Developer Blog

Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 記錄軟體開發的點點滴滴 著重於微軟技術、網頁開發、DevOps、C#, Asp .net Mvc、Azure、AI、Chatbot、Docker、Data Science

[chatbot + AI = 下一代操作模式][17]語義識別服務 - LUIS概念介紹

[chatbot + AI = 下一代操作模式][17]語義識別服務 - LUIS概念介紹.jpg
圖片來源:https://pixabay.com/en/books-spine-colors-pastel-1099067/ 

在上一篇([16]BotBuilder開發總結 - 下一步是搭AI服務)快速的總結了目前爲止的内容以及接下來的重點,Cognitive Service的AI服務包含的内容。

這篇將來看看最會被用到的服務,語義識別的AI 服務 LUIS的基本概念介紹。

什麽是LUIS?

LUIS其實是一個縮寫,全稱是:Language Understanding Intelligent Service。服務的首頁可以在https://www.luis.ai看到。

整個LUIS背後是由Azure在運行,luis.ai這個網站則是用來管理文字分析用的一個界面。因此,整個的LUIS操作以及使用都是在這個網址上面。

LUIS有提供免費的服務,不過如果需要更加穩定的服務,可以選擇付費。而費用則是和Azure 訂閲綁在一起。

LUIS解決什麽問題?

上面提到LUIS是一個語義識別的服務,不過這是什麽意思?

舉個例子來説好了,假設今天在酒店櫃檯,有個客人走過來并且説了一句:我想要訂1間雙人房2個晚上

作爲人類很直覺的會把部分語句拆出來:

  1. 客人想要訂房
  2. 需要1間房間
  3. 要住2個晚上

人類很直覺的把這段語句處理好了,可是如果程式面要處理這個可以怎麽做?當然,可以用拆字的方式,但是同樣意思的内容可以有好多種説法,總不可能把每種拆字組合都寫起來吧,那工程師不用做其他邏輯光在定義這些拆字法就搞死自己了。

LUIS就是一個幫工程師解決這個問題的服務。換句話説,透過簡單的設定可以讓輸入的語句拆解出類似上面列出的結構。

因此,LUIS是個語義識別的服務,透過直覺的設定來建立出符合自己application的文字分析模型。

LUIS幾個keywrod及概念

LUIS有幾個keywrod,把幾個keyword搞懂之後,在實際設定文字模型就不會有什麽問題。

Intent - 意圖
任何一個語句都有某個目的,在LUIS裡面稱之爲Intent。例如想要訂房,是屬於訂房的意圖,如果是要查飯店,那麽就屬於查找的意圖。意圖是LUIS的最基本概念,因此在規劃的時候要先把所有意圖定義出來。
Utterances - 句子
Intent是由多個Utterances組合。舉例來説,我要訂1間雙人房我要訂3間單人房2個句子(Utterances)都屬於訂房意圖(Intent)
Entities - 名詞

有了Intent和Utterances在判斷簡單的Intent的時候就夠用,但是有些句子裡面的關鍵字是需要截取出來,這些就是entities。

還是用上面的例子,會發現兩個句子裡面大部分一樣只有兩個地方不同:

  1. 1間 vs 3間
  2. 雙人房 vs 單人房

這些不同之處是想要截取出來的部分 - 可以想象,從開發的角度來説,訂房可能是個方法,這兩個值會是參數的一部分,因爲其他邏輯都會一樣。在LUIS裡面來説,截取出來的部分就是Entities。

依照不同的資料内容,在定義Entities的時候可以給與不同的形態。例如,數字類型還是日期類型等等。

LUIS有一些内建可以直接使用的Intent以及可以直接使用的Entities,開發者只需要透過luis.ai的網頁就可以設定自己的utterances以及intent來符合業務的需求。

爲什麽使用LUIS而不是其他的服務?

像LUIS這種的服務網路上還是有類似的,并且使用上概念非常類似。如果有用過別的語義識別的服務,那麽對於切換到LUIS不會覺得很突兀,因爲概念都差不多。

不過LUIS的優勢是什麽呢?爲什麽考慮用LUIS而不是用其他的?

當然,有部分是因爲LUIS在使用上非常的容易,并且和Azure有深度整合,在付費的地方又和Azure綁在一起,因此付款很方便。除了這些有點之外,LUIS其中一個很大的優勢是有支援中文

中文是世界上最難處理的語言之一,原因在於英文可以透過空白簡單斷字,但是中文不依靠空白,并且判斷需要依靠文字的上下文,因此斷錯地方,意思完全不一樣。

因此,要做中文的語義識別是非常的困難。因此有這麽一個LUIS服務對於開發者來説省掉非常多的事情。

結語

在這篇介紹了LUIS的用途以及基礎的概念,透過這一篇對於整個LUIS的運作應該有了一個模糊的概念。

在下一篇([18]在LUIS建立app - 概念變成實作),將會把這篇瞭解到的基礎和概念在luis.ai的網頁上面實際以目前的例子操作一遍,把理論和實際使用結合。

comments powered by Disqus