知識圖譜與自然語言處理的故事

Eric_Xie
3 評論 17049 瀏覽 48 收藏 20 分鐘
🔗 B端产品经理需要更多地关注客户的商业需求、痛点、预算、决策流程等,而C端产品经理需要更多地关注用户的个人需求

你指尖躍動的代碼,是我此生不變的信仰,唯我NLP永世長存。

從NLP和知識圖譜說起

本人的主要領域是知識圖譜的方向,但是自然語言處理是知識圖譜是繞不開的話題,一種普遍看法是知識圖譜是自然語言處理的基石,而知識圖譜靠自然語言處理的應用落地。

為什么是這樣呢?我們可以從兩者的定義出發(fā):

什么是知識圖譜?

借鑒其中一個理解:起源于語義網絡,主要的目標是用來描述真實世界中間存在的各種實體和概念,以及它們之間的關聯(lián)關系。

什么是NLP?

也借鑒一個理解,機器接受用戶自然語言形式的輸入,并在內部通過人類所定義的算法進行加工、計算等系列操作,以模擬人類對自然語言的理解,并返回用戶所期望的結果。

從上述描述中可以看到相近的幾個詞匯:“語義網絡”、“自然語言”、“自然客觀世界”。所以NLP和知識圖譜是為了解決同一個目的: 讓機器和人類有相同的思考理解能力,并且機器可以和人類進行擬人化的交互。

在實際應用中,知識圖譜和NLP的目的也是相同的,比如:智能問答、翻譯、推薦系統(tǒng)等。知識圖譜的構建離不開NLP技術對于自然語言的抽取、NLP的應用離不開知識圖譜的關聯(lián)方分析和推理能力。

所以在研究知識圖譜的過程中,自然語言處理是無法回避的領域。

想理解,先分詞

如果用搜索引擎搜索“蘋果和錘子”, 你猜會不會出現(xiàn)一個河神問你想搜索的是金蘋果還是金錘子。如果你回答你想搜索的是鐵蘋果,你就能獲贈一個金錘子手機。

你可以用任何一個搜索引擎去試驗,僅僅是搜索“蘋果和錘子”這兩個完全沒有前后語境的詞語,搜索返回的結果會全部都是關于“蘋果手機”和“錘子手機”。 但是如果單獨搜索“蘋果”或者“錘子”,如果不是網站記錄了搜索偏好,返回的結果里多少都會包含非手機的“蘋果”和“錘子”。

出現(xiàn)這樣情況的原因,是搜索網站的知識圖譜里一定存在“手機”“蘋果”“錘子”之間的關聯(lián)關系,所以機器能夠把三者之間建立聯(lián)系并且返回結果。

如果搜索的是一句話呢?

“蘋果和錘子哪個更好?!?/p>

那么機器可能首先要從這個句子中正確的提取出“蘋果”和“錘子”兩次詞語了,而不是提取出“萍、果和、錘、子”。

所以搜索“蘋果和錘子哪個更好”的時候,搜索引擎干了很多事情,其中至少包含了這兩件事情: 理解輸入、遍歷圖譜。其中,理解輸入就是一個自然語言處理過程,這個過程大概可以分為:詞法分析、句法分析、語義分析。

搜引擎收到輸入,首先將每個句子切割為詞語,然后進行詞性標注,接著對標注過的句子進行命名實體識別,最后搜索實體間可能存在的關系。所以在對文句子進行命名實體識別之前,必須對進行分詞和詞性標注。

所以詞法分析是自然語言處理的第一個環(huán)節(jié),把詞法分析細分步驟即為:分詞、詞性標注、命名實體識別和詞義消歧。

其中命名實體和詞義消歧是知識圖譜構建的關鍵流程,而分詞是詞法分析最基本的任務。關于分詞的算法當前已經比較成熟了,準確率基本可以達到90%以上了,而剩下不到10%卻是技術落地應用的巨大鴻溝。出現(xiàn)這樣的情況是因為在實際應用中對于分詞準確度的要求極高,用一個常見的例子舉例:“南京市長江大橋”,這里涉及到三個基本問題:

  • 分詞粒度:“長江大橋”是一個詞還是兩個詞。
  • 語境歧義:比如“南京市長江大橋”可以理解為“南京市/長江大橋”,,也可以理解為“南京/市長/江大橋”。
  • 詞典未錄入:如果“江大橋”沒有在詞典里,是否能夠判斷出這是一個詞語。

分詞算法綜述

如上所訴,分詞是自然語言處理中最經典同時也是最基礎的問題。而分詞首先要面臨的場景是不同的語言“分詞”的重點是完全不同的。

對于英文等語言來說,句子中的詞語是通過單詞天然分割的,所以對這類語言來說更多工作是集中在實體識別、詞性標注等。

對于像中文這樣的語言來說,文章是由句子組成、句子是由詞語組成、詞語是由字組成,所以切割句子抽取詞語是理解文章句子最基礎的一步。

這里主要討論中文分詞的算法,但是中文定義一個句子中的詞語是很難的。以前看到過一個調查是對以漢語為母語的人進行測試,對于句子中詞語的認同率只有70%左右。人尚且如此,對于機器來說就更是一個巨大的挑戰(zhàn)。

分詞算法按照規(guī)則來說可以分為:按照字典的分詞和按照字的分詞。

按照技術發(fā)展來說可以分為:基于規(guī)則的分詞、基于統(tǒng)計學的分詞、基于神經網絡的分詞。

下面將介紹最基本的三種分詞算法:

  • 基于規(guī)則的方法:最大匹配分詞算法;
  • 基于統(tǒng)計的方法:n-gramn分詞算法;
  • 基于神經網絡的方法:BiLSTM+CRF。

1. 最大匹配分詞算法

最大匹配算法是基于詞典的算法即首先要有一個詞典作為語料庫,所匹配到的詞語是提前錄入到詞典中的詞語。算法的基本原理其實很直接,按照現(xiàn)代正常的閱讀習慣從左往右進行,去匹配可以匹配到的詞典中最長詞語,若組不了詞的字則單獨劃分。

算法需要兩個輸入,一個是分詞詞典(已知的詞語集合),另一個是需要被分詞的句子。以下舉一個簡單的例子來說明匹配過程:

分詞詞典:{“今天”,”好吃的”,”吃”,”什么”}

待分詞句子:今天吃什么?

找第一個詞的分詞過程:

今天吃什么 =>
今天吃什 =>
今天吃 =>
今天 => 得到詞語:今天

上述例子是正向匹配,還可以進行逆向匹配,進一步可以結合最小切分和限定最大詞語長度提高匹配的準確率。但是該算法在實際使用的準確率仍舊是很差的,因為很容易就構造出反例,比如:剛剛提到的“南京市長江大橋”,根據(jù)分詞詞典有可能得到“南京市長”這樣的結果。另外一個問題是該算法依賴于已知的詞典,如果出現(xiàn)新詞不在詞典里則無法得到正確的結果。

2. n-gramn 分詞算法

N-Gram是一種基于統(tǒng)計語言模型的算法,利用概率判斷詞語的組成情況。算法基于一個前提:句子中包含常見詞語的可能性會肯定大于包含生僻詞的可能性,所以該算法的目的是“為分詞尋找最有可能的結果”。

求概率最直接的方法就是數(shù)個數(shù),比如對于剛剛的例子“南京市長江大橋”有各種分詞方法:

  • 南京/市/長江/大橋
  • 南京/市/長江大橋
  • 南京市/長江大橋
  • 南京/市長/江/大橋
  • 南京/市長/江大橋
  • ……

每種分詞在語料庫中出現(xiàn)的次數(shù)為m,語料庫的總數(shù)為n,則每種分詞的概率為m/n。

上述的方法在理論上是沒問題的,但是對于實際應用場景來說,語料庫不可能包含所有的句子,所以,如何高效的數(shù)個數(shù)是問題關鍵。

該算法思想不復雜,但是介紹起來卻要寫很多,這里只大概描述下過程,詳細算法介紹可以很輕松找到!

在介紹算法之前作如下兩個定義:

  • 詞語序列:?w_1, w_2, w_3, … , w_n
  • 鏈式規(guī)則:?P(w_1, w_2, w_3, … ,w_n)=P(w_1)P(w2_|w_1)P(w_3|w_1w_2)P(w_4|w_1w_2w_3)…P(w_n|w_1w_2…w_n-1)

現(xiàn)在我們要計算“南京市/長江/大橋”的概率,按照貝葉斯公式則有:

P(“南京市”,“長江”,“大橋”) = P(“南京市”)P(“長江” | “南京市”)P(“大橋” | “南京市" , "長江”),

仔細想想上面的計算,其中:

P(“大橋” | “南京市" , "長江”)=P(“南京市" ,"長江" , "大橋”) / P(“南京市" ,"長江”)

納尼?!P(“南京市” ,”長江” , “大橋”)?不就是我們要計算的概率么,要計算P(A)要先已知P(A)?!

廢話這么多,終于輪到N-Gram算法上場了。該算法基于以下假設:第n個詞w_n只與前面n-1個詞有關,該假設也叫作馬爾可夫假設。

N-Gram中的N是窗口長度,

n=1時,P( w_1, w_2, … , w_{n-1},w_n)=\prod_{i=1}^{n}P(w_i)

n=2時,?P( w_1, w_2, … , w_{n-1},w_n)=\prod_{i=1}^{n}P(w_i|w_{i-1})

n=3時,?P( w_1, w_2, … , w_{n-1},w_n)=\prod_{i=1}^{n}P(w_i|w_{i-1}w_{i-2})

比如n=2時,則

P(“南京市”,“長江”,“大橋”) = P(“南京市”)P(“長江” | “南京市”)P(“大橋” | “長江”)

P(“長江” | “南京市”)=Count("南京市" , "長江")/Count("南京市")

然后再用數(shù)數(shù)的方法就可以得到以上結果。

把所有分詞可能用圖的方式表示出來,就是求一個有向加權圖的最短路徑問題。概率最大的分詞結果即為所得。在實際應用中還是會覺得計算空間很大,比如有5000個詞語,那么2-gram就是 5000 * 5000個二維組合,但是相比于直接用貝葉斯公式也會小很多,另外還會采用數(shù)據(jù)平方式減少上述二維表的稀疏性。

N-Gram算法最典型應用是搜索引擎或者輸入法的詞語聯(lián)想補全,輸入前面幾個字的時候,會自動聯(lián)想出最有可能的接下來的詞。

3. BiLSTM+CRF分詞算法

該算法實際上是兩個算法的合成,即BiLSTM和CRF算法。這兩個算法,如果真的詳細介紹起來會涉及很多基礎知識,包括馬爾科夫鏈、神經網絡等。以后有機會詳細寫一篇博客來介紹兩者的細節(jié),這里暫時簡單羅列下。

CRF想比較于傳統(tǒng)統(tǒng)計學的方法的最大優(yōu)勢在于考慮了上下文場景,對多意詞和詞典未錄入的詞有更好的效果,但是效率比較低,需要的大量的訓練和計算時間。

LSTM為RNN變種的一種,在一定程度上解決了RNN在訓練過程中梯度消失和梯度爆炸的問題。雙向(Bidirectional)循環(huán)神經網絡分別從句子的開頭和結尾開始對輸入進行處理,將上下文信息進行編碼,提升預測效果。相比于其它模型,可以更好的編碼當前字等上下文信息。

基本步驟是:

  1. 標注序列;
  2. 雙向LSTM網絡預測標簽;
  3. Viterbi算法求解最優(yōu)路徑。

BiLSTM-CRF是兩種算法模型的結合,可以保證最終預測結果是有效的。算法輸入是詞嵌入向量,輸出是每個單詞對應的預測標簽。

NLP技術工程化

語言理解是人工智能領域皇冠上的明珠。”

——比爾蓋茨。

通常認為人工智能是機器從感知到認知的過程。在感知階段,最知名的應該是計算機視覺技術。視覺感知在理論上已經達到了一個很成熟的階段,不止能夠識別物體圖像,甚至還能預測物體的下一個動作。在應用上,視覺技術在大部分場景種對于準確度的要求并不會太嚴苛,相比于自然語言處理則是“差之毫厘謬之千里”。

在技術上,NLP的最難的問題是以下四類場景:問答、翻譯、復述、文摘。

  • 問答即人和機器進行聊天交互,聊天可以是語音識別也可以是文字交互,機器要能理解聊天內容,內容的情感,并且能夠給出合適的回應,再進一步能夠根據(jù)聊天內容進行自我學習增長知識。
  • 翻譯是機器要理解多種不同的語言,在語法語境語義上能夠相互轉化。
  • 復述可以更加廣義的理解為把一種結構的數(shù)據(jù)轉化成另外一種結構。
  • 文摘是將一大段內容進行抽象提煉,通過更少的內容概括更多的內容。

以上的應用場景會涉及一整套自然語言處理方法流程,包括: 詞法分析、句法分析、文檔分析、語義分析、分類、相似度匹配等。

將以上的基礎問題包裝成具體的業(yè)務場景,即為常見的:自動問答、糾錯消歧、詞典翻譯、自動編文、標簽分類、情感分析、推薦系統(tǒng)、爬蟲系統(tǒng)等。

自然語言處理如何落地到具體應用?

個人認為當前對于NLP的應用落地來說最重要的是“兩端問題”,即頂層產品和底層數(shù)據(jù)。在底層是否有面向垂直領域的足夠大的語料庫,在頂層是否有足夠好的交互系統(tǒng)。

在底層,不管是自然語言處理還是知識圖譜,多數(shù)努力的方向都是建立一個通用的知識庫和詞典等。

  • 而在面向垂直領域則有很高的市場壁壘,一方面是基于數(shù)據(jù)安全和數(shù)據(jù)資產的原因,大部分數(shù)據(jù)都是非公開的,無法直接使用。
  • 另外一方面是垂直領域建模需要有深入的業(yè)務理解,這也是需要在一個行業(yè)深耕的經驗為基礎。

通過針對具體的業(yè)務特點做定制化構造一個面向垂直領域的知識圖譜,以及基于這個圖譜的NLP應用,才能真正的提升相關業(yè)務的生產力。

在頂層,需要用產品將理論落地。除了產品本身符合正確的業(yè)務流程,更需要良好的交互來提升用戶體驗。比如智能客服應用,對于多輪交互肯定無法做到100%,但是可以通過友好的交互使用戶愿意接受結果。如果交互做的不好,即便技術上準確率會很高也會被抱怨。

再比如:對于語音實施翻譯來說,又會面臨噪音、遠場、口音等問題。所以將NLP技術落地會涉及很多定制化場景,除去技術,對于產品經理也提出了很高的要求。

有意思的是知識圖譜被看作是人工智能的基石,而NLP被稱作人工智能皇冠上的明珠。這句話足以體現(xiàn)兩者間的互相依賴,知識圖譜需要借助自然語言處理技術去構建圖譜,而自然語言處理需要借助知識圖譜完成推理。

技術算法是通用的,但是業(yè)務場景確是定制化的。產品經理對于技術落地需要做非常深入的思考,如何把理論技術工程化、產品化、最后商業(yè)化變現(xiàn)?

用技術講故事的同時,要求更多的干貨來提升業(yè)務目標。

 

作者:Eric ,數(shù)據(jù)產品經理。金融大數(shù)據(jù)方向,知識圖譜工程化。

本文由 @Eric_Xie 原創(chuàng)發(fā)布于人人都是產品經理。未經許可,禁止轉載。

題圖來自 Unsplash,基于 CC0 協(xié)議。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 知識圖譜需要借助自然語言處理技術去構建圖譜,而自然語言處理需要借助知識圖譜完成推理。

    請問下實際落地的時候,彼此都需要對方才行,,那是先有哪個呢

    來自浙江 回復
  2. 大哥,如何申請轉載 ??

    來自上海 回復
    1. 請問要轉載到哪里呀?

      來自安徽 回復
专题
13248人已学习13篇文章
本专题的文章分享了搜索策略产品经理必读系列。
专题
15130人已学习12篇文章
用户体验五要素包括战略层、范围层、框架层、结构层、表现层五个方面,本专题的文章分享了用户体验五要素的看法。
专题
11973人已学习12篇文章
面对多岗位意见不统一时,如何提升自己的话语权,让自己的建议能够真正被他人纳入范围内?本专题的文章分享了关于提升话语权的一些建议。
专题
12620人已学习13篇文章
在用户运营中,拉新往往要比做好用户留存所花费的成本要高,但有各种各样的原因会让用户在某个过程中流失掉,应当如何规避与注意呢?本专题的文章分享了如何做好用户流失预警。
专题
12891人已学习12篇文章
营销数字化与数字化营销,是两个不同的概念,很多容易混淆。本专题的文章分享了关于营销数字化的解读。
专题
16136人已学习12篇文章
本专题的文章分享了支付风控系统的设计指南