當前位置:
首頁 > 最新 > 自然語言處理技術在商業領域可以支持哪些應用?

自然語言處理技術在商業領域可以支持哪些應用?

作者:Haixun Wang

編譯:張盛強

來源:51CTO

原文標題:Getting NLP Ready for Business

人工智慧和機器學習技術在很多領域已經取得了重大進展。

就某些任務而言,人工智慧已經超越了人類的水平。

在這波新的 AI 浪潮中,圖像識別和語音處理技術方面的突破給人的印象最深刻。

相比較它們而言,自然語言處理 (NLP) 領域的進展卻給我們一種很滯後的感覺。

NLP 領域中目前比較突出的一點是機器翻譯(MT)技術:最近的基於神經網路的方法明顯優於傳統的機器翻譯方法。

但有人認為,端到端的神經網路方法並不真正「理解」所處理的自然語言的含義。雖然我們可能會討論什麼是「理解」,但機器翻譯的質量,尤其是長句的質量,確實還有很大的提升空間。

與此同時,很多人對 NLP 技術如何推動各種新舊業務的發展抱有很大的熱情。

我有一位非常聰明的炒股朋友,想知道 NLP 技術是否可以幫助他閱讀財經新聞並提供貿易前景的建議,以便擴大他的貿易規模。

我的另一位朋友正在探尋製作聊天機器人的方法,他想讓這種機器人有足夠的知識與患者交談並進行醫學診斷。

還有一位朋友,他希望創建一個可以百分百信任的私人助理,每個人都可以與它分享自己的全部想法,這樣它可以為每個人提供一些私人的生活建議,讓用戶感覺更快樂,生活更積極。我們距離實現這些願景還有多遠呢?

NLP:The State-of-the-Art

在深度學習浪潮到來之前,傳統的 NLP 任務,如詞性標註 (POS tagging),句法分析 (syntactic parsing),實體鏈接 (entity linking),語義分析 (semantic parsing) 等任務一直在緩慢而穩步地發展著。

概括來說,這些任務都是文本標註的任務,可以用下面的圖片形象地描繪出來。

?

用深度學習的方法來處理這些任務並不一定能得到更好的效果,但深度學習能讓這些事情變得更加簡單。例如,以前,為了訓練一個解析器,我們需要構建數百萬個特徵,現在我們可以從 word embeddings 開始,而將剩下的部分留給神經網路去做。

兩個因素:先驗和結構

是什麼讓 NLP 變得與眾不同和如此困難,為什麼深度學習能為圖像識別和語音處理任務帶來顯著的改進,卻對 NLP 任務沒有太大幫助?這裡有兩個因素對於理解自然語言非常重要:先驗和結構。

2011 年,Tenenbaum 等人提出了一個非常有趣的問題:我們的大腦是怎樣從少量的知識中獲取到大量的信息的?我們的大腦構建了非常豐富的世界模型,並且對輸入數據進行了高度的概括,這些輸入數據可能是稀疏的,嘈雜的和模稜兩可的————這些信息在很多方面都遠遠不能支持我們所做的推論。

那我們究竟是怎麼做到的呢?

Tenenbaum 等人給出了令人信服的答案:貝葉斯推斷。貝葉斯推斷允許一個三歲的孩子在看到三匹馬的圖片後學會馬的概念。但是這種推斷可能依賴於經過億萬年地進化而悄悄植入我們大腦中先天的先驗知識。

但是機器卻難以獲得這些用於貝葉斯推斷的正確先驗知識。以下是一個簡單的例子(儘管不完全相關):搜索「Jordan 7 day weather forecast」,我們如何確定「Jordan」指的是什麼?人類能立即知道它指的是國家「Jordan」。但一個不理解查詢語句結構的簡單演算法可能會將「Jordan」誤認為是「Jordan 鞋」(一種 Nike 品牌)。

這可能是由於它在貝葉斯推斷中使用的先驗是通過計算人們在網上搜索喬丹鞋與約旦這個國家的頻率來估計的。這個估計是有偏差的,在我們當前的情況下尤其如此:事實證明前者比後者的搜索頻率更高。有偏差的先驗會導致錯誤的推斷結果。我們是否應該用更複雜的方式來估計先驗?當然。但是不能保證在所有情況下都採用更複雜的方法。

先驗很重要,但更重要的是自然語言展現的遞歸結構。查詢語句「jordan 7 day weather forecast」具有可以被映射到具有位置參數(時隙)和時間跨度參數(時隙)的「天氣預報」語義幀的結構。如果演算法識別到這種結構,那麼它不會受到先驗知識的困擾,而將 Jordan 誤認為是喬丹鞋。這種方法可以更進一步地理解這個查詢語句。

在最先進的網頁搜索和問答/會話應用程序中,工程師會寫一些規則用於捕捉自然語言輸入中的結構,這會大大減少推理中的錯誤。但問題是,概括和擴展這種解決方案是很困難的。神經網路和深度學習促進了自然語言處理中分散式方法的使用。

通過 word2vec 和 GloVe 等詞嵌入(word embeddings) 方法,可以將自然語言中的離散詞語映射到連續的空間中。在這個空間中,「貓」與 「狗」兩個詞很接近,這使得我們可以概括出我們為「貓」和「狗」總結的結論。然而,分散式方法和先驗和結構的必要性並不衝突。事實上,我們沒有比單詞更好的表示語句的方法,比如用短語、句子或者是段落等其他表示方法,原因僅僅是我們不知道如何有效地去建模它們的結構。此外,我們沒有很好的方法去表示知識和常識,而這是解釋和推理不可或缺的兩樣東西。

也許深度學習在圖像處理中更成功的原因是因為圖像中的「結構」更易於捕捉:允許平移不變性的卷積神經網路(CNN)符合要求。

然而,對自然語言做同樣的事卻難得多。因此,我們沒有看到 NLP 的突破,除了在少數幾個孤立的領域中,我們碰巧有大量的訓練數據可以隱式地學習先驗和結構(例如,Google 使用數十億的歷史搜索來訓練 RankBrain 進行搜索結果排序)。

NLP 技術很薄弱,在機器可以處理自然語言的開放域通信之前還有很長的路要走。但是在我們最終到達那裡之前,現有的 NLP 技術如何幫助我們在商業領域中更進一步呢?

The power of aggregation

NLP 在許多應用中已經發揮著關鍵作用。但都使用了一個小伎倆。通常,在這些應用程序中,我們不依賴於 NLP 來理解自然語言中單個話語的含義。相反,我們使用 NLP 技術處理大型語料庫,並匯總其結果以支持應用程序。

情感分析

特別是面向特定領域的情感分析,是評估企業和產品的有用工具。它對大量的用戶評論語料進行信息提取,並向企業和產品輸出綜合情緒或意見。

但是如果我們更深入地了解這項技術,我們會看到它的缺陷:我們有時無法衡量情緒,因為我們不了解自然語言的特定表達。

例如,「the phone fits nicely in my pocket(這部手機與我的口袋很相稱)」是對手機尺寸的積極情緒,但要自動將「fits nicely in my pocket」與「size」聯繫起來並不容易。

摘要

有兩種類型的文本摘要:抽取和抽象。總結一篇文章,抽取的方法是在文章中選擇幾個句子,而抽象的方法則是產生新的句子。

抽取的方法使用純粹的統計方法,例如,它通過研究句子間的共享單詞和主題來創建兩個句子之間的聯繫。但這種方法一直無法產生好的結果,直到最近幾年深度學習可以派上用場。

但即便使用了深度學習(例如,最近的工作有使用 sequence to sequence translation, attention mechanism, copy mechanism, coverage mechanism 等),摘要的質量仍然達不到產品級別。

那麼,這項技術何時可以幫助我的朋友來閱讀財經新聞並提供貿易建議呢?至少目前的方法需要多做些額外的工作,例如通過在摘要中考慮明確的目標(例如提供貿易建議)。

知識庫

知識庫構建是另一個依賴信息提取(IE)聚合結果的領域。它還展示了聚合的優勢和弱點:為創建一個更完整的知識庫而付出的努力並不是非常成功。

因為,通過聚合大語料庫的信息抽取結果而獲得大部分開放域的知識,通常已經被 Freebase 或其他人工庫涵蓋了。同樣,從個人的話語中獲得的知識通常是不可靠的。

儘管如此,特定領域的知識庫依然可能會在商業領域發揮巨大作用。以兩個重要行業為例:電子商務和醫療保健

在電子商務網站上,用戶可以通過名稱或功能搜索產品,但他們不支持諸如「how to fight insomnia(如何與失眠做鬥爭)」或「how to get rid of raccoons(如何擺脫浣熊)」等這樣的查詢,儘管他們有很多適用這類情況的產品出售。他們需要的是將任何名詞短語或動詞短語映射到產品列表的知識庫。

醫療保健領域也有類似的情況。我們需要一個能夠連接癥狀、環境、治療手段和藥物的知識庫。

搜索

許多人認為搜索問題已經解決。不是的。搜索依賴於搜集的用戶行為數據,這意味著搜索主要在頭查詢時效果很好。但在網頁搜索以外的情景中,即使是頭查詢目前效果也並不好。?

考慮一下這個問題:在 Facebook 上搜索「travel in Arizona(在亞利桑那州旅行)」。我的一位朋友在我的查詢前四個小時發了相關帖子,這本是一個完美的匹配。但是,在搜索時看到這篇文章是非常困難的,因為用戶行為數據還沒有導入它。

因此,對於社交搜索、電子郵件搜索、電子商務搜索、應用搜索等,NLP 和語義匹配仍然扮演著重要角色。具體而言,在只有有限甚至是沒有用戶行為數據的情況下,知識圖、實體鏈接、語義分析技術可以更好地服務於搜索。

教育

一個非常有趣和有利可圖的業務是幫助用戶更有效地學習或使用一種語言。

例如,幾個初創公司(例如,Grammarly,DeepGrammar 等)提供工具來糾正用戶的語法錯誤。在高層次上,這是相當可行的,因為演算法應該能夠通過大型語料庫的離線學習獲得足夠的語法知識。這應該使他們能夠捕捉文本中的大部分錯誤,而不必理解文本的含義。

但是,還有很多需要改進的空間。例如,給出「I woke at 4 am in morning」的時候,Grammarly 或 DeepGrammar 都沒有建議將「woke」改為「woke up」或者將「in morning」改為「in the morning」。DeepGrammar 實際上建議將「woke」 改為「work」,這當然是沒有意義的。當然,識別某些錯誤需要語義知識,例如,這些工具何時能夠建議在下面的文字中「I woke up at 4 pm in the morning」,將「pm」改為「am」?

A little technical breakthrough plus a lot of dirty work

我們喜歡想像漂亮的 NLP 解決方案,但其中很多都是通用人工智慧(Artificial General Intelligence, AGI),因為他們需要處理所有可能的場景。

通用人工智慧不會很快出現。儘管如此,技術突破仍然時刻在發生。

有時候,只需要人工額外做一點苦活,我們就可以將它們變成商業上的成功。

是什麼讓 QA 和聊天機器人又變得如此火爆?

自動問答(QA)和聊天機器人現在已並不新鮮 。第一個聊天機器人是在 60 年代開發的(ELIZA,1966),但它並沒有走得太遠。50 年過去了,是什麼讓 QA 和聊天機器人又變得如此火爆?發生了三件事:

1.(技術)語音識別的突破,使得 Alexa,Google Assistant,Siri 成為可能; 大型知識庫的可用性,特別是開放領域的知識庫,如 Google 的知識圖譜。

2.(市場)信息已經成為商業和日常生活中不可或缺的元素,最近聰明的語音助手突然無處不在。

3.(實用性)人們已經準備好從關鍵字搜索切換到基於語音/自然語言的界面,以更直接的方式獲得更具體的答案。但技術突破 - 語音識別和知識庫 - 不會自動導致問答系統的產生。我們仍然需要理解問題,解釋和推理問題,但在過去的 50 年中,這種能力並沒有根本的改善。

儘管如此,QA 非常成功,我們都在 Google 上體驗過。(它仍然犯了錯誤,下文中,谷歌將婆婆錯認為是它創始人的母親,截圖產生於 2017 年 7 月)。只是成功不是來自於自然語言理解的新水平,相反,它是通過大量手工模板實現的。

這裡我們觀察到一些現象

1.技術的進步在很大程度上推動著產品的影響力。因此,我們知道技術的局限性至關重要:畢竟,半個多世紀以來,問答系統和聊天機器人並沒有多少大事件發生。

2.通常新技術並不能解決 100%的問題,但沒關係。我們很樂意去做一些苦活(例如,手工製作模板和寫規則等)以彌補技術上的不足。在很大程度上,QA 和數字助理(如 Siri,Alexa,Google Assistant 和 Cortana)的成功是由手工模板驅動的。

但是最新的會話式 AI(例如,使用深度強化學習來構建聊天機器人)怎麼樣呢?它是使聊天機器人如此熱的動力之一嗎?是,但它尚未產生真正的影響。在這裡,我專註於以目標為導向的對話系統(Siri,Alexa,Google Assistant),儘管我承認漫無目標的 smalltalk(Microsoft Tay) 可能會有趣。但我們應該不斷研究技術進步和應用需求的交集,而不是迴避使用低技術含量的苦活來實現目標。

Narrowing the problem domain

讓我們重新審視我之前提到的朋友們的項目:

1.與病人交談並進行醫學診斷的聊天機器人。

2.一種讀取財經新聞並提供貿易建議的演算法。

3.個人助理,記錄你的日常活動,並提供建議,讓你更快樂,更充實。

必勝客部署了一個聊天機器人來處理客戶的訂單,這非常成功。Facebook 的虛擬助理 M 已經死了,因為 Facebook 沒有對 M 能做或不能做的事施加限制。在討論朋友項目的可行性之前。

讓我們重新回顧一下微軟 AI 總裁 Harry Shum 的這句話:

今天的電腦可以很好地執行特定的任務,但是當涉及到一般任務時,AI 甚至還無法與人類孩子競爭。

- Harry Shum

斯坦福大學教授 Andrew Ng 的這句引述:

今天深度學習只能在一些可以獲得大量數據的狹小的領域內發揮價值。下面是一個它不能做的事情的例子:進行一次有意義的對話。在相關的 demo 中,如果你精心挑選對話,那麼看起來它像是一個有意義的對話。但如果你實際去使用一下那些產品,它們通常會很快不知所云。

- Andrew Ng

醫學診斷

當談到讓機器人進行醫學診斷時,人們自然會產生很多懷疑和擔憂。但從技術上講,這並非不可能。要解決狹窄領域的問題,首要任務就是開發特定領域的知識庫,使我們的機器人成為領域的專家。

在這種情況下,我們需要模擬癥狀、病情、診斷、治療、藥物等之間關係的知識圖表。無論如何,人們都會收到非醫療機構的健康建議:每 20 個谷歌搜索中就有一個與健康相關的信息搜索。

聊天機器人僅提供比網路搜索更直接的通信形式。另一方面,這個項目的真正難點可能是如何訪問用戶的病歷。事實上,一些初創公司(例如 doc.ai 和 eHealth First)已經投資使用區塊鏈技術來解決這個問題。

金融領域

閱讀金融新聞並提供貿易前景的任務涉及一個更廣泛的領域,因為股票價格受到無數因素的影響:自然因素、政治因素,科學因素,技術因素,心理因素等等。了解某些事件如何導致股票價格變動是困難的。但是,縮小這些領域並為他們開發專門的工具是可能的。

例如,我們可能並非監測廣泛的股市,而是專註於商品期貨。然後,我們再次開發知識庫,其中可能包含如下規則:「如果像智利這樣的國家出現政治動蕩或自然災害,銅的價格會上漲」。最後,我們可以開發演算法來讀取新聞和檢測某些國家的政治動蕩或自然災害的事件。由於機器讀新聞的速度遠比人類快,它們提供的信息可能轉化為演算法交易的優勢。

創建個人助理是一個非常有趣的想法,個人助理可以記錄用戶的日常思考和活動,並提供反饋,讓用戶更快樂,更滿意。這讓我想起 Google Photos。Google 會不時挑選一些舊照片來創建一個標題,例如「Rediscover this day 4 years ago(重新發現 4 年前的今天)」這樣的標題。它從來都可以讓我笑容滿面。儘管如此,照片只能捕捉人們一生的一瞬間,而自然語言有可能以更全面的方式保存我們的想法和活動,並以更有創意的方式回放給用戶。

然而,這是一個開放的領域任務:個人助理需要了解各種思想和活動,這使得它成為通用人工智慧(AGI)。是否有可能縮小問題域?

我們為什麼不從 1000 個模板開始?1000 個模板將涵蓋令人驚訝的許多人類活動(例如,「我今天在斯坦福大學校園跑步 3 英里」和「我在帕洛阿爾托市中心的哈納斯與阿隆喝咖啡」等),這是相當合理的。私人助理會將我們生活中的片段轉化為結構化的表示,對它們進行分類,聚合,然後以一種新的形式將它們呈現給我們。

還有一些私人助理無法理解的東西

例如,「我的岳父昨天去世了。我的妻子和我整晚都擁抱在一起聊天。「它可能不適合我們手工製作的 1000 個日常生活類模板中的任何一個。儘管如此,私人助理不應該錯過這個人一生中的重要事件。

私人助理可以做幾件事情。首先,使用預先訓練的分類器,它可以將事件分類並歸檔為失去親人。其次,它可以使用語義分析或槽填充機制來進一步檢測誰去世。第三,當上述工作都不奏效時,它仍然可能將其記錄為原始文本,並等待未來的先進技術去解決它。

Pushing technical boundaries

現有的 NLP 技術不足以理解自然語言; 通用人工智慧沒有實現,至少不會很快實現。這是否意味著產生商業影響的唯一途徑是通過縮小問題範圍來達到我們可以使用勞動密集型技術來涵蓋所有情況的程度?

當然不是。推動技術邊界的方法有很多種。在這裡,我將討論我們正在研究的兩個方向。

如果現在的自然語言處理技術不允許我們深入理解自然語言,那麼是不是可以試著擴展它?

作為一個例子,讓我們考慮 QA 和 chatbots 的客戶服務。客戶服務是 NLP 和 AI 發展的前沿。它不需要我們特別深入地理解自然語言。如果我們的技術能夠處理 30%的客戶互動,企業就可以節省 30%的人力,這非常重要。因此,許多公司正在部署自己的 QA 或聊天機器人的解決方案,並且已經取得不同程度的成功。

曾經有一段時間(20 世紀 70 年代以前),每個企業都需要以自己的方式管理某種數據存儲(例如,保留工資記錄)。然後是關係資料庫管理系統,它宣稱無論您運行什麼業務,關係資料庫管理系統都可以以聲明的方式為您處理工資單和其他應用程序,這意味著無需編寫代碼以進行數據操作和檢索。

是否有可能為客戶服務建立一個通用的會話式 AI?換句話說,為一個企業設計的客戶服務系統用於不同的業務需要做些什麼?

這可能聽起來很牽強,但並非完全不可能。首先,我們需要統一用於客戶服務的後端數據模型。這是可行的,因為大多數業務數據已經在關係資料庫中。其次,我們將客戶的自然語言問題轉換為針對底層資料庫的 SQL 查詢。

這是否意味著我們需要處理所有情況下的自然語言問題?

不是的。我們只處理一小部分自然語言,也就是說,那些可以轉換為 SQL 語句的部分。在這種約束下,一個業務領域中的自然語言問題必須與不同業務領域中的自然語言問題類似,因為他們共享相同的潛在結構。事實上,如果我們將 i)資料庫模式,ii)資料庫統計數據,以及 iii)在自然語言中提及資料庫屬性和值的等效方法作為可注入 QA 和會話 AI 的元數據,則可以創建一個系統滿足不同的客戶服務需求。

如果缺乏訓練數據是 NLP 的瓶頸,那麼為什麼不努力將明確的領域知識注入機器學習演算法?

這並不是什麼新鮮事,但問題是實際存在的。機器學習將大量訓練數據中的統計相關數據轉化為隱式知識。但有時候,這些知識可以用明確的方式注入機器學習中。

舉個例子,假設一個知識庫有一個父母關係,但不是祖父母關係。學習 grandparentOf 等同於 parentOf(parentOf)需要大量的訓練數據。更有效的方法是將該領域知識作為規則傳遞給機器學習演算法。

在我們上面描述的客戶服務項目中,我們使用深度學習(基於 seq2seq 的模型)將自然語言問題轉換為 SQL 語句。從訓練數據中,演算法學習自然語言問題的含義以及 SQL 的語法。儘管如此,即使擁有非常大的訓練數據,學習模型並不總是生成格式良好的 SQL 語句,但是模型不應該需要學習 SQL 的語法!


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 51CTO 的精彩文章:

你應該使用NoSQL資料庫、SQL資料庫還是兩者都用?

TAG:51CTO |