Author Archive

詞嵌入 | Word embedding

一文看懂 word embedding

想要了解更多 NLP 相關的內容,請訪問  NLP專題 ,免費提供59頁的NLP文檔下載。

訪問 NLP 專題,下載 59 頁免費 PDF

文本表示(Representation)

文本是一種非結構化的數據信息,是不可以直接被計算的。

文本表示的作用就是將這些非結構化的信息轉化為結構化的信息,這樣就可以針對文本信息做計算,來完成我們日常所能見到的文本分類,情感判斷等任務。

文本表示將非結構化數據轉化為結構化數據

文本表示的方法有很多種,下面只介紹 3 類方式:

  1. 獨熱編碼 | one-hot representation
  2. 整數編碼
  3. 詞嵌入 | word embedding

word embedding的關係

 

獨熱編碼 | one-hot representation

假如我們要計算的文本中一共出現了4個詞:貓、狗、牛、羊。向量里每一個位置都代表一個詞。所以用 one-hot 來表示就是:

貓:[1,0,0,0]

狗:[0,1,0,0]

牛:[0,0,1,0]

羊:[0,0,0,1]

one-hot編碼

但是在實際情況中,文本中很可能出現成千上萬個不同的詞,這時候向量就會非常長。其中99%以上都是 0。

one-hot 的缺點如下:

  1. 無法表達詞語之間的關係
  2. 這種過於稀疏的向量,導致計算和存儲的效率都不高

 

整數編碼

這種方式也非常好理解,用一種數字來代表一個詞,上面的例子則是:

貓:1

狗:2

牛:3

羊:4

整數編碼

將句子里的每個詞拼起來就是可以表示一句話的向量。

整數編碼的缺點如下:

  1. 無法表達詞語之間的關係
  2. 對於模型解釋而言,整數編碼可能具有挑戰性。

 

什麼是詞嵌入 | word embedding?

word embedding 是文本表示的一類方法。跟 one-hot 編碼和整數編碼的目的一樣,不過​他有更多的優點。

詞嵌入並不特指某個具體的算法,跟上面2種方式相比,這種方法有幾個明顯的優勢:

  1. 他可以將文本通過一個低維向量來表達,不像 one-hot 那麼長。
  2. 語意相似的詞在向量空間上也會比較相近。
  3. 通用性很強,可以用在不同的任務中。

再回顧上面的例子:

word embedding:語意相似的詞在向量空間上也會比較相近

 

2 種主流的 word embedding 算法

2 種主流的 word embedding 算法

Word2vec

這是一種基於統計方法來獲得詞向量的方法,他是 2013 年由谷歌的 Mikolov 提出了一套新的詞嵌入方法。

這種算法有2種訓練模式:

  1. 通過上下文來預測當前詞
  2. 通過當前詞來預測上下文

想要詳細了解 Word2vec,可以看看這篇文章:《一文看懂 Word2vec(基本概念+2種訓練模型+5個優缺點)

 

GloVe

GloVe 是對 Word2vec 方法的擴展,它將全局統計和 Word2vec 的基於上下文的學習結合了起來。

想要了解 GloVe 的 三步實現方式、訓練方法、和 w2c 的比較。可以看看這篇文章:《GloVe詳解

 

百度百科和維基百科

百度百科版本

詞向量(Word embedding),又叫Word嵌入式自然語言處理(NLP)中的一組語言建模和特徵學習技術的統稱,其中來自詞彙表的單詞或短語被映射到實數的向量。 從概念上講,它涉及從每個單詞一維的空間到具有更低維度的連續向量空間的數學嵌入。

生成這種映射的方法包括神經網絡,單詞共生矩陣的降維,概率模型,可解釋的知識庫方法,和術語的顯式表示 單詞出現的背景。

當用作底層輸入表示時,單詞和短語嵌入已經被證明可以提高NLP任務的性能,例如語法分析和情感分析。

查看詳情

維基百科版本

Word embedding 是自然語言處理中的重要環節,它是一些語言處理模型的統稱,並不具體指某種算法或模型。Word embedding 的任務是把詞轉換成可以計算的向量 。從概念上講,它涉及從每個單詞一維的空間到具有更低維度的連續向量空間的數學嵌入。

生成這種映射的方法包括神經網絡,單詞共生矩陣的降維,概率模型,可解釋的知識庫方法,和術語的顯式表示單詞出現的上下文。

當用作底層輸入表示時,單詞和短語嵌入已經被證明可以提高NLP任務的性能,例如句法分析和情感分析。

查看詳情

Word2vec

一文看懂Word2vec

Word2vec 是 Word Embedding 方式之一,屬於 NLP 領域。他是將詞轉化為「可計算」「結構化」的向量的過程。本文將講解 Word2vec 的原理和優缺點。

這種方式在 2018 年之前比較主流,但是隨着 BERT、GPT2.0 的出現,這種方式已經不算效果最好的方法了。

想要了解更多 NLP 相關的內容,請訪問  NLP專題 ,免費提供59頁的NLP文檔下載。

訪問 NLP 專題,下載 59 頁免費 PDF

 

什麼是 Word2vec ?

什麼是 Word Embedding ?

在說明 Word2vec 之前,需要先解釋一下 Word Embedding。 它就是將「不可計算」「非結構化」的詞轉化為「可計算」「結構化」的向量。

這一步解決的是」將現實問題轉化為數學問題「,是人工智能非常關鍵的一步。

了解更多,可以看這篇文章:《一文看懂詞嵌入 word embedding(與其他文本表示比較+2種主流算法)

word embedding:將非結構化數據轉化為結構化數據

將現實問題轉化為數學問題只是第一步,後面還需要求解這個數學問題。所以 Word Embedding 的模型本身並不重要,重要的是生成出來的結果——詞向量。因為在後續的任務中會直接用到這個詞向量。

 

什麼是 Word2vec ?

Word2vec 是 Word Embedding 的方法之一。他是 2013 年由谷歌的 Mikolov 提出了一套新的詞嵌入方法。

Word2vec 在整個 NLP 里的位置可以用下圖表示:

word2vec在nlp中的位置

在 Word2vec 出現之前,已經有一些 Word Embedding 的方法,但是之前的方法並不成熟,也沒有大規模的得到應用。

下面會詳細介紹 Word2vec 的訓練模型和用法。

 

Word2vec 的 2 種訓練模式

CBOW(Continuous Bag-of-Words Model)和Skip-gram (Continuous Skip-gram Model),是Word2vec 的兩種訓練模式。下面簡單做一下解釋:

CBOW

通過上下文來預測當前值。相當於一句話中扣掉一個詞,讓你猜這個詞是什麼。

CBOW通過上下文來預測當前值

Skip-gram

用當前詞來預測上下文。相當於給你一個詞,讓你猜前面和後面可能出現什麼詞。

Skip-gram用當前詞來預測上下文

 

優化方法

為了提高速度,Word2vec 經常採用 2 種加速方式:

  1. Negative Sample(負採樣)
  2. Hierarchical Softmax

具體加速方法就不詳細講解了,感興趣的可以自己查找資料。

 

Word2vec 的優缺點

需要說明的是:Word2vec 是上一代的產物(18 年之前), 18 年之後想要得到最好的效果,已經不使用 Word Embedding 的方法了,所以也不會用到 Word2vec。

優點:

  1. 由於 Word2vec 會考慮上下文,跟之前的 Embedding 方法相比,效果要更好(但不如 18 年之後的方法)
  2. 比之前的 Embedding方 法維度更少,所以速度更快
  3. 通用性很強,可以用在各種 NLP 任務中

Word2vec在相似度計算上效果不錯

缺點:

  1. 由於詞和向量是一對一的關係,所以多義詞的問題無法解決。
  2. Word2vec 是一種靜態的方式,雖然通用性強,但是無法針對特定任務做動態優化

Word2vec無法解決多義詞的問題

 

百度百科

百度百科版本

Word2vec,是一群用來產生詞向量的相關模型。這些模型為淺而雙層的神經網絡,用來訓練以重新建構語言學之詞文本。網絡以詞表現,並且需猜測相鄰位置的輸入詞,在word2vec中詞袋模型假設下,詞的順序是不重要的。訓練完成之後,word2vec模型可用來映射每個詞到一個向量,可用來表示詞對詞之間的關係,該向量為神經網絡之隱藏層。

查看詳情

語音合成標記語言-SSML丨Speech Synthesis Markup Language

小白版本

中學的時候參加朗誦比賽,老師教我在文字上「做記號」,把所有的停頓、重音、輕音、語速節奏等全都在文字上標記出來,這樣再讀就非常簡單了。

 

而語音合成(TTS)的過程其實也是朗讀的過程,機器若要實現擬人化的朗讀發音,其實也可以給它提前把文字做上標記,用到的就是語音合成標記語言(SSML)。

除了進行朗讀技巧的標記,SSML還可以對有歧義的文本進行標記,以確定讀法,例如:

表示時間時可讀為:

  1. 「二十三點二十四分」
  2. 「晚上十一點二十四分」

表示比分時則讀為:

  1. 「二十三比二十四」

如果還要在特定環境下需要在語句朗讀時加入BGM,也可通過SSML實現定製化的TTS。

 

百度百科版本

語音合成標記語言(SSML:Speech Synthesis Markup Language),它是W3C的語音接口框架的一部分,是關於語音應用和在萬維網上構建語音應用的一套規範,通過SSML,人們可以更多的通過流動電話、桌面計算機和其他設備來聆聽合成語音,把計算和信息傳輸延伸到全球每個角落。

SSML是另一種在構建基於語音瀏覽器技術的VUI時令人迷惑的一部分。SSML能通過語音合成引擎界面推動便攜性的發展,這個界面由不同供應商以統一方式提供。SSML是另一種W3C標準,它基於JSML(JSpeech Synthesis Markup Language,Java語音合成置標語言)。SSML根據它試圖解決的問題更易於理解。
查看詳情

 

維基百科版本

語音合成標記語言(SSML)是一種XML為基礎的標記語言用於語音合成應用中。這是一個推薦W3C的語音瀏覽器工作組。SSML通常嵌入在VoiceXML腳本中以驅動交互式電話系統。但是,它也可以單獨使用,例如用於創建有聲讀物。對於桌面應用程序,其他標記語言很受歡迎,包括Apple的嵌入式語音命令和Microsoft的SAPI Text to Speech(TTS)標記,也是一種XML語言。
查看詳情

 

依存句法分析-Constituency-based parse trees

想要了解更多 NLP 相關的內容,請訪問  NLP專題 ,免費提供59頁的NLP文檔下載。

訪問 NLP 專題,下載 59 頁免費 PDF

什麼是句法分析?

句法分析(syntactic parsing)是自然語言處理中的關鍵技術之一,它是對輸入的文本句子進行分析以得到句子的句法結構的處理過程。對句法結構進行分析,一方面是語言理解的自身需求,句法分析是語言理解的重要一環,另一方面也為其它自然語言處理任務提供支持。例如句法驅動的統計機器翻譯需要對源語言或目標語言(或者同時兩種語言)進行句法分析。

語義分析通常以句法分析的輸出結果作為輸入以便獲得更多的指示信息。根據句法結構的表示形式不同,最常見的句法分析任務可以分為以下三種:

句法結構分析(syntactic structure parsing),又稱短語結構分析(phrase structure parsing),也叫成分句法分析(constituent syntactic parsing)。作用是識別出句子中的短語結構以及短語之間的層次句法關係。

依存關係分析,又稱依存句法分析(dependency syntactic parsing),簡稱依存分析,作用是識別句子中詞彙與詞彙之間的相互依存關係。

深層文法句法分析,即利用深層文法,例如詞彙化樹鄰接文法(Lexicalized Tree Adjoining Grammar,LTAG)、詞彙功能文法(Lexical Functional Grammar,LFG)、組合範疇文法(Combinatory Categorial Grammar,CCG)等,對句子進行深層的句法以及語義分析。

 

什麼是依存句法分析?

依存句法分析

維基百科是這樣描述的:The dependency-based parse trees of dependency grammars see all nodes as terminal, which means they do not acknowledge the distinction between terminal and non-terminal categories. They are simpler on average than constituency-based parse trees because they contain fewer nodes.

依存句法是由法國語言學家L.Tesniere最先提出。它將句子分析成一顆依存句法樹,描述出各個詞語之間的依存關係。也即指出了詞語之間在句法上的搭配關係,這種搭配關係是和語義相關聯的。

在自然語言處理中,用詞與詞之間的依存關係來描述語言結構的框架稱為依存語法(dependence grammar),又稱從屬關係語法。利用依存句法進行句法分析是自然語言理解的重要技術之一。

 

相關重要概念

依存句法認為「謂語」中的動詞是一個句子的中心,其他成分與動詞直接或間接地產生聯繫。

依存句法理論中,「依存」指詞與詞之間支配與被支配的關係,這種關係不是對等的,這種關係具有方向。確切的說,處於支配地位的成分稱之為支配者(governor,regent,head),而處於被支配地位的成分稱之為從屬者(modifier,subordinate,dependency)。

依存語法本身沒有規定要對依存關係進行分類,但為了豐富依存結構傳達的句法信息,在實際應用中,一般會給依存樹的邊加上不同的標記。

依存語法存在一個共同的基本假設:句法結構本質上包含詞和詞之間的依存(修飾)關係。一個依存關係連接兩個詞,分別是核心詞(head)和依存詞(dependent)。依存關係可以細分為不同的類型,表示兩個詞之間的具體句法關係。

 

常見方法

基於規則的方法: 早期的基於依存語法的句法分析方法主要包括類似CYK的動態規划算法、基於約束滿足的方法和確定性分析策略等。

基於統計的方法:統計自然語言處理領域也湧現出了一大批優秀的研究工作,包括生成式依存分析方法、判別式依存分析方法和確定性依存分析方法,這幾類方法是數據驅動的統計依存分析中最為代表性的方法。

基於深度學習的方法:近年來,深度學習在句法分析課題上逐漸成為研究熱點,主要研究工作集中在特徵表示方面。傳統方法的特徵表示主要採用人工定義原子特徵和特徵組合,而深度學習則把原子特徵(詞、詞性、類別標籤)進行向量化,在利用多層神經元網絡提取特徵。

 

依存分析器的性能評價

通常使用的指標包括:無標記依存正確率(unlabeled attachment score,UAS)、帶標記依存正確率(labeled attachment score, LAS)、依存正確率(dependency accuracy,DA)、根正確率(root accuracy,RA)、完全匹配率(complete match,CM)等。這些指標的具體意思如下:

  • 無標記依存正確率(UAS):測試集中找到其正確支配詞的詞(包括沒有標註支配詞的根結點)所佔總詞數的百分比。
  • 帶標記依存正確率(LAS):測試集中找到其正確支配詞的詞,並且依存關係類型也標註正確的詞(包括沒有標註支配詞的根結點)佔總詞數的百分比。
  • 依存正確率(DA):測試集中找到正確支配詞非根結點詞占所有非根結點詞總數的百分比。
  • 根正確率(RA):有二種定義,一種是測試集中正確根結點的個數與句子個數的百分比。另一種是指測試集中找到正確根結點的句子數所佔句子總數的百分比。
  • 完全匹配率(CM):測試集中無標記依存結構完全正確的句子占句子總數的百分比。

 

相關數據集

Penn Treebank:Penn Treebank是一個項目的名稱,項目目的是對語料進行標註,標註內容包括詞性標註以及句法分析。

SemEval-2016 Task 9中文語義依存圖數據:http://ir.hit.edu.cn/2461.html

下載地址

CoNLL經常開放句法分析的學術評測,比如:

 

相關工具推薦

StanfordCoreNLP

斯坦福大學開發的,提供依存句法分析功能。

Github地址官網

HanLP

HanLP是一系列模型與算法組成的NLP工具包。提供了中文依存句法分析功能。

Github地址官網

SpaCy

工業級的自然語言處理工具,遺憾的是目前不支持中文。

Gihub地址官網

FudanNLP

復旦大學自然語言處理實驗室開發的中文自然語言處理工具包,包含信息檢索: 文本分類、新聞聚類;中文處理: 中文分詞、詞性標註、實體名識別、關鍵詞抽取、依存句法分析、時間短語識別;結構化學習: 在線學習、層次分類、聚類。

Github地址 | 代碼上傳地址

 

本文轉自公眾號 AI小白入門 ,原文地址