使用AI搜尋的目的在於提升找到資料的便利性,包含多欄位快速比對並儘可能依據使用者偏好提供備選答案。
雲那裡產業智能已經參加數年AIGO競賽,主要解題方向是最佳化與排程有關的議題,今年有些不同,與出題單位會談後竟是需要一個資料庫搜尋的AI機器人,雖然與想像中要做的事情不同,還是儘力做出能接近需求的AI機制,本文就簡單介紹一下這個AI的機制吧!!
如果說Google Search是搜尋引擎的龍頭應該沒有人會反對,但提到Google Search你會想到什麼? SEO(Search Engine Optimization)和關鍵字搜尋,這些詞大部份人一定不陌生,其他Google Search衍生出的應用諸如Google Trend也都深入影響我們的生活。此處我們就用Google Search當做基礎概念,解釋實做一個AI搜尋引擎包含的幾個重要元素:
- 關鍵字
- 使用者偏好
- 最佳化機制
關鍵字是搜尋引擎中第一要素,Google Search成功之處在於使用者可以用少量關鍵字進行快速網頁搜尋,雖然輸入的關鍵字越少也相對不易精準找到預期中的網站,但逐步增加關鍵字多次搜尋也屬於使用者可以接受的範圍,可惜的是這看似簡單的操作實際上並不容易,第一關要面對的就是文字比對(更甚者將涉及一定程度的自然語言處理Natural Language Processing, NLP和語意分析)。
不過這次要做的是資料庫搜尋,同時關聯式資料庫架構可以將資料分類並串聯,所以我們並不需要深入NLP的技術課題,取而代之的是資料內的⌈編號⌋欄位,以產品資料表為例,編號是足以代表一類產品的一個序號或編碼,因此在簡單的資料庫搜尋引擎AI中我們再進一步簡化關鍵字改採用編號。若搜尋的是一個產品資料庫,我們會將⌈產品編號⌋視為主要欄位編號(以上圖為例),只要數字比對到一致的數字編碼,就代表可以找到同一類產品。但如果只做到這裡就要號稱AI則是沒有意義的,不如直接用資料庫語法完成比對。
多關鍵字搜尋是AI的精髓,如果我們用Google Search隨便搜尋一個常見的單詞,只會得到非常不精準的結果,例如用Google Search搜尋⌈筆記型電腦⌋這個詞,就會得到一堆電子商城、線上論壇評價、比價網的網頁,實際上效用不大。這個時候如果再加上第二甚至第三個單詞,才有可能更貼近使用者的需求,因此我們需要具有關聯性的一系列資料才有意義。所幸關聯性資料庫正是將具有關係的一連串資料表進行連結,我們也可以藉此加入更多⌈欄位編號⌋,讓使用者用多個欄位去比對資料庫(如上圖)。
舉個例子,如果是一個人力資源的資料庫,我們想要快速建立一個AI機制進行搜尋,我們就可以把員工編號、性號(編號)、出生年月日、部門等資料欄位拿出來進行比對,就可以選擇性地輸入前述欄位中的其中幾個進行搜尋。
多欄位/關鍵字搜尋衍生的另一個課題就是:多個欄位中相較之下哪一個欄位比較重要,呈現方式也就是上圖所示的欄位權重值。由於AI搜尋是為了讓使用者更容易找到想找的資料,也可以解釋為使用者偏好。如果可行的話,由使用者來決定這些欄位的權重值是最理想的,畢竟每一個使用者的習慣和偏好不同,每一個企業的產品定位與客群不同,但是大部份狀況下使用者並不容易快速決定每一個欄位的權重,因此試誤和磨合一段時間住往也是必要的。如果有大量數據可以分析使用者偏好則是更好的情況,利用大數據分析可以更容易找出行為上的偏好分布情形。(據此不難理解Google Trend的應用為何對Google Search也很重要吧!)
最佳化機制則是應該交給技術人員來完成的部份,主要涉及AI相關的演算法的細節,本次實作所使用的是SCIP的樹狀搜尋最佳化技術,利用Python完成模式建立與資料分析,使用C語言建置獨立運算的執行檔,技術細節在這篇文章中我們就不多深入。(有此需求請與民邦資訊的雲那裡產業智能團隊聯繫)
最後,一個不介入既有系統運作的AI搜尋引擎(如上圖所示)就完成了,任何個人或企業的既有系統只要:
- 匯出待搜尋的資料清單
- 呼叫AI程式
- 等待AI搜尋完成(取得最佳解清單)
- 讀取結果資料清單/匯入最佳解資料 (AI會挑選最大化加權值的結果給使用者,至少挑選出一筆以上的資料供使用者參考)
就這樣,一個非常精簡的資料庫搜尋AI就完成了,雖然還需要基於不同使用者的需求進行使用者偏好釐清與AI技術細節的調校,但是想要快速建立一個小型AI解決資料搜尋的問題卻也不如多數人想像中那麼困難!!