自然語言處理 Task 3 基於機器學習的文字分類

2021-10-08 12:43:31 字數 2092 閱讀 1042

文字表示方法 part1

在機器學習演算法的訓練過程中,假設給定n

nn個樣本,每個樣本有m

mm個特徵,這樣組成了n×m

n×mn×

m的樣本矩陣,然後完成演算法的訓練和**。同樣的在計算機視覺中可以將的畫素看作特徵,每張看作hight×width×3的特徵圖,乙個三維的矩陣來進入計算機進行計算。

但是在自然語言領域,上述方法卻不可行:文字是不定長度的。文字表示成計算機能夠運算的數字或向量的方法一般稱為詞嵌入(word embedding)方法。詞嵌入將不定長的文字轉換到定長的空間內,是文字分類的第一步。

one-hot

這裡的one-hot與資料探勘任務中的操作是一致的,即將每乙個單詞使用乙個離散的向量表示。具體將每個字/詞編碼乙個索引,然後根據索引進行賦值。

one-hot表示方法的例子如下:

句子1:我 愛 北 京 天 安 門

句子2:我 喜 歡 上 海

首先對所有句子的字進行索引,即將每個字確定乙個編號:

在這裡共包括11個字,因此每個字可以轉換為乙個11維度稀疏向量:

我:[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

愛:[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]

...海:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]

bag of wordsbag of words(詞袋表示),也稱為count vectors,每個文件的字/詞可以使用其出現次數來進行表示。

句子1:我 愛 北 京 天 安 門

句子2:我 喜 歡 上 海

直接統計每個字出現的次數,並進行賦值:

句子1:我 愛 北 京 天 安 門

轉換為 [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0]

句子2:我 喜 歡 上 海

轉換為 [1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1]

在sklearn中可以直接countvectorizer來實現這一步驟:

n-gramn-gram與count vectors類似,不過加入了相鄰單詞組合成為新的單詞,並進行計數。

如果n取值為2,則句子1和句子2就變為:

句子1:我愛 愛北 北京 京天 天安 安門

句子2:我喜 喜歡 歡上 上海

tf-idftf-idf 分數由兩部分組成:第一部分是詞語頻率(term frequency),第二部分是逆文件頻率(inverse document frequency)。其中計算語料庫中文件總數除以含有該詞語的文件數量,然後再取對數就是逆文件頻率。

tf(t)

= 該詞語在當前文件出現的次數 / 當前文件中詞語的總數

idf(t)

= log_e(文件總數 / 出現該詞語的文件總數)

TASK3 異常處理

try 檢測範圍 except exception as reason 出現異常後的處理 首先執行try語句,若沒有異常發生則執行完try語句後結束,若發生異常,try語句中的其他語句將被忽略,異常型別與except中相符則執行except後的語句,不相符則上傳給上層的try語句。try 檢測範圍 ...

Task 3 異常處理

練習題 猜數字遊戲 題目描述 電腦產生乙個零到100之間的隨機數字,然後讓使用者來猜,如果使用者猜的數字比這個數字大,提示太大,否則提示太小,當使用者正好猜中電腦會提示,恭喜你猜到了這個數是 在使用者每次猜測之前程式會輸出使用者是第幾次猜測,如果使用者輸入的根本不是乙個數字,程式會告訴使用者 輸入無...

自然語言處理實踐Task2

sep設定分割符 nrows設定讀取的行數 train df pd.read csv data train set.csv sep t nrows 100 train df.head 第一列label為新聞的類別,第二列text為新聞的字元。計算句子的長度 train df text len tra...