> Image source: Author
可以為自己的網站構建聊天機器人,而無需依賴Dialogflow或Watson等第三方服務,也無需服務器。 我將向您展示如何構建一個完全在瀏覽器中運行的聊天機器人。
我將假設您對JAVAScript有一定的了解,并了解自然語言處理的工作原理。不需要高級知識或機器學習經驗。
如果有人告訴您在使用JavaScript的瀏覽器中進行機器學習是瘋狂的,請不要聽,因為很快您就會了解自己。
我們的代碼將基于NLP.js版本4。NLP是一個開放源代碼庫,用于以JavaScript編寫的自然語言處理。 該項目將允許您直接從語料庫在瀏覽器中訓練NLP,并將Hook添加到任何以編程方式更改答案的意圖。
最終項目可以在我的GitHub存儲庫上找到:https://github.com/MeetMartin/nlpjs-web。 您可以下載它,打開index.html,然后與最終的聊天機器人一起玩。
如今,每個真正的開發人員都應具備一些人工智能方面的經驗,并且比使用您自己開發的東西與您的計算機進行交談更像是科幻小說。
安裝套件
在任何文件夾中創建一個新的npm項目并安裝NLP軟件包:
npm i -D @nlpjs/core @nlpjs/lang-en-min @nlpjs/nlp @nlpjs/request-rn@nlpjs/request-rn
我們還需要browserify和terser才能構建供瀏覽器使用的NLP:
npm i -D browserify terser
全新安裝的軟件包可為您帶來新項目的味道。 你應得的。
建立NLP
第一步是使用browserify和terser構建NLP。為此,我們只需要在buildable.js中創建一個基本設置:
我們僅使用NLP的核心和小型英語包。要構建所有內容,只需在您的package.json中添加一個構建命令:
現在運行構建:
npm run build
您應該以./dist/bundle.js結尾,大約只有137 KB。 還需要注意的是,NLP擁有令人印象深刻的受支持語言列表。 但是,只有英語具有針對瀏覽器的優化版本。
在瀏覽器中訓練NLP
現在我們已經創建了包,我們可以在瀏覽器中訓練我們的NLP。創建此index.html:
我們的功能setupNLP負責庫的設置以及培訓。語料庫是一個JSON文件,它以以下格式定義我們的聊天機器人的對話:
該意圖是會話節點的唯一標識符,其名稱應表示聊天機器人做出響應的用戶的意圖。言語是用戶可以說出觸發意圖的一系列訓練示例。然后,答案是聊天機器人將隨機選擇的一系列響應。
為了訓練我們的聊天機器人,我們從庫中的例子中借用了更大的語料庫:https://raw.githubusercontent.com/jesus-seijas-sp/nlpjs-examples/master/01.quickstart/02.filecorpus/corpus-en.json。但是對于您的用例,請隨時創建自己的語料庫。只要記住,庫希望從某個URL讀取語料庫。
在瀏覽器中打開index.html時,您應該會看到一個簡單的聊天表格,該表格目前還沒有任何作用。
但是,如果打開瀏覽器控制臺,您已經可以看到成功的訓練輸出:
訓練非常快速,并使訓練后的模型可用于瀏覽器中的聊天機器人。這是一種更有效的方法,因為語料庫文件比生成的模型小得多。
訓練您的第一個機器學習代碼感覺很好。 您剛剛成為一個傳奇人物,并且這個星球上的少數人可以說:"是的,我曾經訓練過一次AI,沒什么大不了的。"
聊天機器人HTML
現在,我們將使chatbot表單起作用。 通過添加onChatSubmit函數來擴展index.html:
現在,您可以使用新的聊天機器人了:
在https://raw.githubusercontent.com/jesus-seijas-sp/nlpjs-examples/master/01.quickstart/02.filecorpus/corpus-en.json上探索您的主體或主體,以了解支持哪些對話主題。
現在,您可以在酒吧中向朋友展示并輕松獲得他們的欽佩,因為您現在是真正的黑客。
向意圖添加掛鉤
您可能希望您的聊天機器人能夠使用每種意圖調用一些其他代碼,或者使用一些API調用替換某些意圖的答案。讓我們將index.html擴展到最終版本。
在setupNLP中,我們添加了一行:
nlp.onIntent = onIntent;
我們創建了onIntent函數。請注意,onIntent將每個意圖的響應對象記錄到控制臺中。它還通過根據用戶的當前時間用答案替換其輸出,從而為greetings.hello意圖添加了邏輯。就我而言,現在是下午:
這不是很棒嗎?如果您正準備創建自己的AI創業公司,則高五。
已知局限性
請注意,NLP的瀏覽器版本不支持某些常見的自然語言處理功能,例如完整庫中可用的命名實體或實體提取。
NLP作為圖書館目前也不支持故事或后續意圖。 這些是chatbot業務流程當前開發的一部分,但是在撰寫本文時,該功能仍處于試驗階段。
安全和隱私注意事項
使用此解決方案時,請記住,訪問您網站的任何人都可以在瀏覽器中使用整個語料庫及其功能。 這也使任何人都能夠簡單地下載您的語料庫,對其進行操作以及以其他方式使用它。 確保您的漫游器沒有公開任何私人信息。
使用僅瀏覽器的解決方案具有某些優勢,但也消除了一些機會,因為您仍然需要一些后端解決方案,以便能夠記錄用戶與您的聊天機器人在談論什么。 同時,如果您記錄整個對話,請考慮隱私問題,尤其是在GDPR之類的立法中。
(本文由聞數起舞翻譯自Martin Novák的文章《Natural Language Processing in the Browser》,轉載請注明出處,原文鏈接:https://medium.com/better-programming/natural-language-processing-in-the-browser-8ca5fdf2488b)