天天看點

機器學習第一次作業

自然語言處理技術概述

自然語言處理(NLP)是語言學和人工智能的交叉科學,旨在讓計算機能夠“讀懂”人類的語言,是指機器了解并解釋人類paralyzes寫作、說話方式的能力。其包括的主要範疇有:分詞、詞性标注、命名實體識别、句法分析、關鍵詞抽取、文本分類、自動摘要以及資訊檢索等等。傳統的自然語言處理主要是利用語言學領域本身的知識結合一些統計學的方法來擷取語言知識。後來伴随着機器學習淺層模型的發展(如:SVM、邏輯回歸等等),自然語言處理領域的研究取得了一定的突破,但在語義消歧、語言的了解等方面還是顯得力不存心。近年來,随着深度學習相關技術(DNN、CNN、RNN等)取得了顯著的進展,其在自然語言處理方面的應用也展現出了明顯的優勢。

自然語言處理技術的流程

1、自然語言了解(NLU)

2、自然語言生成(NLG)

自然語言了解

NLU 是要了解給定文本的含義。本内每個單詞的特性與結構需要被了解。在了解結構上,NLU 要了解自然語言中的以下幾個歧義性:

詞法歧義性:

詞法歧義性是指一個單詞有多重含義。如train這個單詞,作為動詞使用時,它是訓練的意思,當作為名詞使用時,它是火車的意思。又如coach這個單詞可以表示為長途汽車,也可以作為教練的意思存在。又如一句諺語:Never trouble troubles until troubles trouble you。這裡的trouble就有三個意思。

歧義消除方法

一、有監督消歧

  1. 貝葉斯分類

    s = arg max p(Sk|c), Sk 是W可能包含的語義,C是歧義詞的上下文,而s是 使該機率最大的語義,即消歧後确定的語義。

  2. 基于資訊論的方法。以W包含2個語義為例,基本思想是最大化 互資訊 I(P,Q),P是W的語義集,Q是W的訓示器取值集(訓示器 即能區分W不同語義的關鍵鄰近詞)。

    例:法語“ prendre”的含義是take或make,其訓示器可以是 decision,note,example,measure。P劃分為 p1 = {take,}和p2={make,},

    Q分為Q1 = {note,example,measure,}和Q2 = {decision}, 如果W的訓示器為note,出現在Q1中,那麼W對應的語義應該對應地出現在P1中,即take。在這裡,P和Q的集合劃分的原則是最大化 I(P,Q)。該方法感覺和貝葉斯分類本質上類似,還是基于鄰近詞,根據機率判決,隻是具體的公式不一樣。

二、 基于詞典的消歧(本質上也是無監督消歧的一種)

1.基于語義定義的消歧。如果詞典中對W的 第i種定義 包含 詞彙Ei,那麼如果在一個包含W的句子中,同時也出現了Ei,那麼就認為 在該句子中 W的語義應該取詞典中的第i 種定義。

2.基于類義辭典的消歧。 詞的每個語義 都定義其對應的主題或範疇(如“網球”對應的主題是“運動”),多個語義即對應了多個主題。如果W的上下文C中的詞彙包含多個主題,則取其頻率最高的主題,作為W的主題,确定了W的主題後,也就能确定其對應的語義。

3.基于雙語對比的消歧。這種方法比較有創意,即把一種語言作為另一種語言的定義。例如,為了确定“interest”在英文句子A中的含義,可以利用句子A的中文表達,因為 interest的不同語義在中文的表達是不同的。如果句子A對應中文包含“存款利率”,那麼“interest”在句子A的語義就是“利率”。如果句子A的對應中文是“我對英語沒有興趣”,那麼其語義就是“興趣”。

三、無監督消歧

主要是使用EM算法 對W的上下文C進行無監督地聚類,也就是對 W的語義進行了分類。(當然,該分類的結果不見得就是和詞典中對該詞的定義分類是比對的)。

語義角色标注概述

語義角色标注是一種淺層語義分析技術,它以句子為機關,不對句子所包含的予以資訊進行深入分析,而隻是分析句子的謂詞-論元結構。具體一點講,語義角色标注的任務就是以句子的謂詞為中心,研究句子中各成分與謂詞之間的關系,并且用語義角色來描述它們之間的關系。

句法歧義性

句法歧義性是指語句有多重解析樹。在英文中,也可以看到不少的例子,如:

They kidnapped the old coin collector.

這個句子是以引起歧義,是因為其中的形容詞轄域(focus scope)不确定。例句中的形容詞old既可以修飾名詞coin,又可以修飾coin和collector兩個名詞組成的組合體,進而使句子産生兩種句義。

又如red red wine 的結構可為 修飾詞 修飾詞 事物 又可為 修飾詞 屬性詞 事物。基于前者的翻譯為紅紅的酒,基于後者的翻譯為紅葡萄酒。

使用上下文無關文法時會出現一些問題。

當給定一個句子時,我們便可以按照從左到右的順序來解析文法。

例如,句子the man sleeps就可以表示為(S (NP (DT the) (NN man)) (VP sleeps))。

機器學習第一次作業

這種上下文無關的文法可以很容易的推導出一個句子的文法結構,但是缺點是推導出的結構可能存在二義性。如下

機器學習第一次作業
句法歧義消除方法

使用機率分布的上下文無關文法(Probabilistic Context-Free Grammar)

由于文法的解析存在二義性,我們就需要找到一種方法從多種可能的文法樹種找出最可能的一棵樹。一種常見的方法既是PCFG (Probabilistic Context-Free Grammar)。如下圖所示,除了正常的文法規則以外,我們還對每一條規則賦予了一個機率。對于每一棵生成的文法樹,我們将其中是以規則的機率的乘積作為文法樹的出現機率。

機器學習第一次作業

當我們或得多顆文法樹時,我們可以分别計算每顆文法樹的機率p(t),出現機率最大的那顆文法樹就是我們希望得到的結果,即arg max p(t)。

但是該模型存在一些假設條件:

機器學習第一次作業

語義歧義性

語義歧義性是指一個句子有多重含義。

如在英文諺語中,Cats hind their paws 這句話在百度翻譯中,這句話的意思是毛隐藏起它們的爪子。但是在實際意義中,這句話是大智若愚的意思。

又如:Diamond cuts diamond在百度翻譯中是指 鑽石 切割 鑽石 但是在實際中又引申為強中自有強中手。語義歧義性的消除主要還是消除詞義歧義。

回指歧義性(Anaphoric Ambiguity)

回指歧義性是指之前提到的短語或單詞在後面句子中有不同的含義。比如說在英劇中有很多像諷刺,黑色幽默的例子,這裡不做詳述。

自然語言生成

自然語言生成是研究使計算機具有人一樣的表達和寫作的功能。即能夠根據一些關鍵資訊及其在機器内部的表達形式,經過一個規劃過程,來自動生成一段高品質的自然語言文本。

自然語言生成可被分為三個階段:

1、文本規劃

2、語句規劃

3、實作

其中,文本規劃決定文本要說什麼(what);句法實作決定怎麼說(how);句子規劃則負責讓句子更加連貫。

自然語言生成方法

雖然NLG已應用于許多實踐當中,但目前對NLG的研究進展遠不如NLU。是以,在NLG技術發展的曆史過程中,主要包括基于模闆的NLG和基于深度學習的NLG方法。

1、基于模闆的NLG

NLG模闆由句子模闆和詞彙模闆組成。句子模闆包括若幹個含有變量的句子,詞彙模闆則是句子模闆中變量對應的所有可能的值。為友善了解,下面引用文獻中的一個例子:

topic->weather
  act->query
    Content: weather_state
      ->3 對不起,請[<tell>]您需要[<refer>]{<where>}的[<what>]。
      ->2 請[<tell>]您需要[<refer>]的[<what>|具體内容]。
      ->1 抱歉,請[<tell>]您需要{<refer>}{(day)|今天|[when]}{(location)||<where>}的[<what>]。
符号說明:
|:或者
[]:内部元素出現次數>=1
{}:内部元素出現次數<=1
():對話管理子產品中的變量
<>:自定義語料中的變量
句子前的數字:該句子的權重,權重越大句子出現的可能性越大。
           

詢問天氣場景中的句子模闆

<tell> -> [告訴我|補充|說明|輸入]
<refer> -> [查詢|知道|擷取|收到|了解|咨詢]
<where> -> [哪裡|何處|什麼位置|什麼地方|什麼城市|哪個位置|哪個區域]
<what> -> [天氣|哪方面資訊|什麼資訊|哪方面情況|哪方面内容|何種内容]
<when> -> [哪天|什麼時間|哪個時辰|什麼時候]
           

實際工作中,基于模闆的NLG技術在項目初期使用較多,由于其可控性,對于語言較為嚴謹的很多領域中使用極為普遍。

2、基于深度學習的NLG

伴随深度學習的熱潮,以及機器翻譯相關研究的快速發展,基于深度學習的NLG技術也有了較為突出的進展。尤其是encoder-decoder架構的流行,使得該架構下的seq2seq技術也得到了快速發展.

自然語言生成的任務

了解了上一部分的NLG體系結構,下面對NLG相關任務進行探讨。通常,通過将輸入資料分解成若幹個子問題來解決将輸入資料轉換成輸出文本的NLG問題。通過對多數NLG系統總結,我們可以大緻把NLG的任務分為:

(1)确定内容

确定内容即決定即将建構的文本中應該包含哪些資訊;作為生成過程的第一步,NLG系統需要決定哪些資訊應該包含在正在建構的文本中,哪些不應該包含在其中。該部分最大的進步應該算是對齊機制的提出,解決了如何自動學習資料和文本之間的對齊關系的問題。

(2)文本結構

确定文本中呈現資訊的順序;在确定了要傳遞什麼消息之後,NLG系統需要決定它們向讀者呈現的順序。

(3)句子聚合

決定在單個句子中呈現哪些資訊;并非文本計劃中的每一資訊都需要用一個單獨的句子來表達;通過将多條消息組合成一個句子,使得生成的文本變得更流暢、更具可讀性。盡管也有一些情況認為應避免聚合,總的來說,聚合很難定義,也很難實作,我們可以用各種方式解釋,比如從備援消除到語言結構組合。這裡對上述語言進行“聚合”一下,就是如何用言簡意赅的話語準确表達想要表達的語言資訊。

(4)詞彙化

找到正确單詞或短語來表達資訊;即用什麼詞或短語來表達消息的建構塊。通常情況下,上下文限制在這裡也扮演着重要的角色,是以這一點在中文NLG任務中尤為突出。

(5)引用表達式生成

選擇單詞和短語以辨別域對象;這種特征表明與詞彙化有着密切的相似性,但本質上的差別在于,引用表達式生成是一項“識别任務,系統需要傳遞足夠的資訊來區分一個域實體和其他域實體”。這一個task好抽象,白話解釋一下,詞彙化階段主要是選用合适的詞或短語表達上下文相關的語義資訊,而引用表達式生成階段的任務首先是識别要表達的對象,然後用合适的詞或短語表示它。

(6)語言實作

将所有單詞和短語組合成格式良好的句子。這項任務涉及到對句子的成分進行排序,以及生成正确的形态形式,通常還需要插入功能詞(如助動詞和介詞)和标點符号等。

自然語言處理技術的運用

1、機器翻譯

機器翻譯,又稱為自動翻譯,是利用計算機将一種自然語言(源語言)轉換為另一種自然語言(目智語言)的過程。它是計算語言學的一個分支,是人工智能的終極目标之一,具有重要的科學研究價值。

2、打擊垃圾郵件

自然語言處理通過分析郵件中的文本内容,能夠相對準确地判斷郵件是否為垃圾郵件。目前,貝葉斯(Bayesian)垃圾郵件過濾是備受關注的技術之一,它通過學習大量的垃圾郵件和非垃圾郵件,收集郵件中的特征詞生成垃圾詞庫和非垃圾詞庫,然後根據這些詞庫的統計頻數計算郵件屬于垃圾郵件的機率,以此來進行判定。

3、資訊提取

從文本中擷取資訊意義的方法。資訊提取目前已經應用于很多領域,比如商業智能,履歷收獲,媒體分析,情感檢測,專利檢索及電子郵件掃描。目前研究的一個特别重要的領域是提取出電子科學文獻的結構化資料,特别是在生物和醫學領域。

4、文本情感分析

情感分析作為一種常見的自然語言處理方法的應用,可以讓我們能夠從大量資料中識别和吸收相關資訊,而且還可以了解更深層次的含義。比如,企業分析消費者對産品的回報資訊,或者檢測線上評論中的差評資訊等。

5、自動問答

自動問答是指利用計算機自動回答使用者所提出的問題以滿足使用者知識需求的任務,在回答使用者問題時,首先要正确了解使用者所提出的問題,抽取其中關鍵的資訊,在已有的語料庫或者知識庫中進行檢索、比對,将擷取的答案回報給使用者。

6、個性化推薦

自然語言處理可以依據大資料和曆史行為記錄,學習出使用者的興趣愛好,預測出使用者對給定物品的評分或偏好,實作對使用者意圖的精準了解,同時對語言進行比對計算,實作精準比對。

自然語言處理技術的難點

自然語言處理的困難有很多,但造成困難的根本原因無外乎是自然語言的文本和對話中廣泛存在的各種歧義性或多義性。因為歧義性,很多語言的翻譯就會很容易出錯,比如百度翻譯中的那些在人工翻譯的情況下很淺顯的一些錯誤,在百度翻譯中也比較普遍。

自然語言中充滿了大量的歧義,人類的活動和表達十分複雜,而語言中的詞彙和文法規則又是有限的,這就導緻了同一種語言形式可能表達了多種不同含義。以漢語為例,漢語一般由字組成詞,由詞組成句,由句子組成段落,其中含有多層意思的轉換。同樣形式的語句在不同的語境中可能含有不同的意義,反過來,同樣的意思也可以用不同形式的語句表示,這正是語言的魅力所在,卻也給自然語言處理帶來了困難。

在漢語中,分詞問題便屬于消歧任務之一。單詞是承載語義最小的單元,是以自然語言進行中分詞問題是急需解決的。在口語表述中,詞和詞之間是連貫的,在書寫中也是如此。由于漢語不像英語等語言具有天然分詞,中文的處理就多了一層障礙。在分詞過程中,計算機會在每個單詞後面加入分隔符,而有些時候語義有歧義,分隔符的插入就變得困難。比如說在漢語中的看就有

仰視 俯視

環視 窺視

凝視 斜視

掃視 眺望

等種。。。這為自然語言處理帶來了較多的麻煩。