1. 程式人生 > >[nlp-001] Speech and Language Processing (3rd ed. draft)讀書筆記(未完待續)

[nlp-001] Speech and Language Processing (3rd ed. draft)讀書筆記(未完待續)

0. 本書的官網主頁

##第1章 留白

##第2章 正則表示式、文字正則話、編輯距離

regular expression 正則表示式,從文件裡抽取指定的字串。比如,抽取“你是XXX”的姓名,或者 字串裡的價格資訊。

text normalization 文字標準化。把文字轉化成便於使用的標準格式。

標準化的第一種方式,也是常用的方式,是分詞 seprating out 或者 tokenizing,術語稱之為 tokenization詞節點計算。不同的語言tokenization是不同的,英文單詞用空格分割--其實只有空格是不夠的還需要其他處理,比如要把I'm 處理為 I am,把 :) 情感符號處理為smile。中文的詞節點計算要麻煩的多,這塊有非常多的研究。

第二種文字標準化方式lemmatization詞形還原,判斷兩個詞有同一個root,不管表面上有什麼不同,例如,sang,sung,sings都是動詞 sing的不同形態。詞形還原 多用於 處理形態複雜的語言,如阿拉伯文arabic。中文幾乎沒有這個問題。

第三種文字標準化方式Stemming詞幹提取。詞幹提取是更簡單的詞形還原--刪掉詞的字尾就行了。

第四種文字標準化方式sentence segmentation。把一個文字根據標籤符號切分成多個句子。

編輯距離edit distance。基於插入、刪除、替換等編輯操作,比較兩個字串的不相似度。

### 2.1 正則表示式

用正則替換,可以建立一個聊天機器人。ELIZA是基於正則的聊天機器人,它有一些系列的正則替換規則,把一行輸入 替換成回答。

### 2.2 詞word

不同的語言,詞是不同的。同一種語言,在不同的使用環境下也是不同的。比如,I do uh main- mainly business data processing,uh和main-是不是詞,需要根據實際用法進行確定。

英語裡有多少單詞?設Types是也文字集的不重複詞彙集,token是詞節點,那麼"They picnicked by the pool, then lay back on the grass and looked at the stars"有16個token,14個types,因為"the"重複了三次。設Types的數量是|V|,tokens的資料量是N,它們的關係是一個經驗公式 |V| = kN^{\beta},\beta通常是0.67~0.75,根據文集不同,這個公式叫 Herdan's law或者Heap's Law。

### 2.3 Corpora

不同範疇/領域的文字,特性是不一樣的。全球有7097種語言。在一個文字,也可能同時使用多種語言,這種行為叫code switching。文字可以反應出作者的年齡,性別,種族,社會經濟階層。

### 2.4 Text nomalization文字標準化

常規的text nomalization有三個步驟

1. 從文字切分出單詞word

2. 對單詞進行標準化格式變換

3. 從文本里切分出句子。

linux命令做粗的 詞節點 和 標準化:tr, sort, uniq。示例,處理莎士比亞的戲劇文字。

對文字做 節點化 有不少細節要處理。

比如, "m.p.h", "ph.D", "AT&T", "cap'n"有的特定含義,"$45.55"是價格,“01/02/06”是日期, "http://www.stanford.edu"是url,另外還有twitter帳號,email帳號等等。更可怕的是“555,500.50”,英文的五十五萬五千零五毛。

比如, 把 what're轉化成 what are。

比如,把"New York"作為一個token,而不是拆成兩個,這是地理專有名詞。"named entity detection"命名實體識別,就是 檢測 姓名、日期、組織機構的對應關係。

一個基線的詞節點標準,Penn Treebakn tokenization。tokenization需要處理各種細節問題。

case folding。大小寫。通常,都是轉化成小寫。有時候,大小寫資訊是有用的,比如語音識別 機器翻譯等等。

中文處理,最大匹配演算法。動態規劃。

lemmatization演算法 可以很複雜,處理很多情況。簡單版本的porter stemmer,非常簡單效果不太好。byte-pair encoding,也叫 bpe,是一種lemmazation,本書給出了bpe演算法的py程式碼。

### 2.5 最小編輯距離minimum edit distance

最小編輯距離:用插入刪除替換等方式把一個詞轉換成另一個次的步驟數。從例子看,尋找最小編輯距離可能是比較難的問題。這是一個最短路徑搜尋問題。可以用動態規劃解決。

## 3 N-gram language models

### 3.1 N-Grams

n-gram語言模型,最簡單的語言模型。

### 3.2 Evaluating language meodels 評估語言模型

extrinsic evaluation 外部評價,把語言模型代入實際應用,成本高,不太可行。

intrinsic evaluation 內部評價。訓練集,測試集。經驗表明,需要一個開發資料集。一個完整的資料集隨機拆成三份,80%訓練集,10%開發集,10%測試集。

perplexity,複雜度,也就是PP,可以寫成 PP(W)。對pp要有解釋。PP有多種解釋。跟資訊熵也有關係。

### 3.3 generalization and zeros 泛化和零值

詞彙表之外的詞,用<UNK>代替。

### 3.4 Smoothing

平滑,降低 一點 密集事件的概率,提升一點 看不到事件的概率,使之更接近真實情況。

laplace smoothing, add-k smoothing

### 3.5 kneser-ney smoothing

最常用。

## 4. Naive bayes and sentiment classification

情感分類。正面的,消極的。

垃圾郵件檢測。

### 4.1 簡單貝葉斯分類器

bag of words模型。

## 5 logistic regression

## 6 vector semantics 語義向量

語義向量:根據word在文本里的分佈,計算word的含義。

representation learning表徵學習:自動學習表徵特徵,非監督學習。以前的方式是特徵工程,監督學習。

### 6.1 lexical semantics 詞彙語義學

buy,sell, pay。

cat, dog

happy, sad

對詞的含義進行表達,解決questiong-answering 問答 問題。

以mouse為例進行解釋,mouse在詞典有兩個意思:老鼠,滑鼠。

同義詞。

詞相似度:cat和dog不是同義詞,是相似的詞。

sementic field 語義域,比如 restaurants (waiter, menu, plate, food, chef)就是一個restaurants語義域,括號裡的詞跟這個域都有關係。

sementic field和topic models相關。比如 LDA latent dirichlet allocation,從大的文字集裡以非監督學習方式尋找有關聯的詞。

How can we build a computational model that successfully deals with the different aspects of word meaning we saw in the previous section (word senses, word simi-larity and relatedness, lexical fields and frames, connotation)

--vector semanticc

構造一個詞的特徵,這個特徵是從詞的環境/語言分佈/context上下文 得到的。如果兩個詞具有相似的分佈,那麼它們就有相似的意思。

vector semantic,具體的,根據一個詞所在的文字的前後有什麼詞以及這些詞出現多少次,來定義這個詞的意思,同時,用一個向量表示詞的意思。

語義向量有很多種,都符合上面兩條,具體方式不同。