文字特徵抽取與處理

2021-10-01 04:59:47 字數 2935 閱讀 5457

一、nlp的文字表示

既是語言模型(language model),是我們分析的入口。

1、統計語言模型的目的:

--  建立乙個能夠描述一句話、乙個詞的概率估計方法

2、語義模型的基礎模型:

--  p(w1w2w3...wi) = 累乘(p(w1)p(w2|w1)p(w2|w2w1)...)

3、語義模型的概率估計(一句話乙個片語在一起的概率,比如w1w2w3)

-- 基於對數似然

-- l = log(p(w1)p(w2|w1)p(w3|w1w2))

-- 既是log(p(w|w所有上下文))的累加和

4、語言模型的基礎模型為: p(w1w2...wt) = (1到n的累乘)p(w1)p(w2|w1)p(wi|w1w2...wi-1)

這樣既可以得到乙個片語或者句子 w1w2...wt 的條件概率

對後面每一項累乘的解釋:

p(wi|w1w2...wi-1) : 既是第i個詞出現在片語w1w2...wi-1中的概率

p(w1) : 是w1在整個文字中的概率

這樣累乘可以得到乙個片語或者句子的條件概率

5、語言模型的目標函式(基於對數似然)

l = (累加和)log(p(w|context(w)))

context(w)為詞w的上下文

p(w|context(w)):詞w在其上下文中的條件概率

l可以描述這個這個語言模型的合理程度

二、最基本的語言模型-詞袋模型

把文字看作無序的詞組合,利用統計語言模型來理解,每個詞出現的概率與自身有關,與上下文無關;

所謂詞袋模型: 

-- 既是tf-idf

-- 語義模型的極端情況

-- 只考慮單個詞的權重,放入詞袋

1、tf

詞彙f在文件d中的頻數

2、idf 

log(總文件數n/包含詞彙w的文件數nw)

3、tf-idf

tf*idf,作為該詞彙在該語料(文件集)中對於該文章的權重

4、作用

某個文件的某乙個詞的權重 = tf*idf

將詞在第幾個文件的第幾個,(i,j)作為索引 ,權重作為這個索引的值,完成文字到特徵向量的轉換,即是生成了乙個詞袋

5、具體實現

in [1]: from sklearn.feature_extraction.text import tfidfvectorizer

in [2]: vec = tfidfvectorizer()

in [3]: corpus = ['this is sample document.', 'another random document.', 'third sample document text']

in [4]: x = vec.fit_transform(corpus)

in [5]: print x #(#doc, #wordfeature) weight

(0, 7) 0.58448290102

(0, 2) 0.58448290102

(0, 4) 0.444514311537

(0, 1) 0.345205016865

(1, 1) 0.385371627466

(1, 0) 0.652490884513

(1, 3) 0.652490884513

(2, 4) 0.444514311537

(2, 1) 0.345205016865

(2, 6) 0.58448290102

(2, 5) 0.58448290102

in [6]: vec.get_feature_names() #wordfeature order

out[6]:

[u'another',

u'document',

u'is',

u'random',

u'sample',

u'text',

u'third',

u'this']

三、n-gram模型

1、基本思想:將文字裡面的內容按照位元組進行大小為n的滑動視窗操作,形成了長度為n的位元組片段子集;(既是n元素子集的集合,每乙個n元素子集稱為乙個gram)

3、n-gram總結

-- 是語義模型的特殊情況

-- 基於馬爾可夫假設:乙個詞將來的狀態,只和現在有關,跟過去無關

-- 比如3-gram模型w1w2w3

-- p(w3|w1w2)

-- 這個條件概率的計算,有點像貝葉斯的推導過程:

-- p(w3|w1w2) = p(w1w2w3)/p(w1w2)

-- 既是出現w1w2再出現w3的概率,等於同時出現w1w2w3的概率除以同時出現w1w2的概率

4、n-gram模型推導:

nlp的語言模型是:

p(w1w2...wt) = (1到n的累乘)p(w1)p(w2|w1)p(wt|w1w2...wt-1)

p(w1w2...wt) = p(wi|w1w2...wi-1)

i=1是就是 p(w1) ,表示預料庫**現w1的概率 -- 此即為1-gram模型

i = 2 時就是 p(w2|w1) , 表示預料庫中,出現w1後緊跟著w2的概率 -- 此即為2-gram模型

i = 3 時就是 p(w3|w2) , 表示預料庫中, 出現w2後,緊跟著出現w3的概率 -- 此即為2-gram模型

p(wi|wi-1wi-2) -- 此既是3-gram模型

利用貝葉斯定理,計算出條件概率:

比如p(wi|wi-1wi-2) = p(wi,wi-1,wi-2) / p(wi-1,wi-2) ,既是wi,wi-1.wi-2同時出現的概率 除以 wi-1,wi-2出現的概率

5、n的大小

n越大,矩陣越稀疏,但約束資訊越多辨別力更高;

文字特徵抽取

例項 文字特徵抽取 from sklearn.feature extraction import dictvectorizer from sklearn.feature extraction.text import countvectorizer import jieba defcountvec 對...

特徵提取 中文文字特徵抽取

jieba庫 ex 1 import jieba def cut word text text join list jieba.cut text return text def cut chinese demo2 data 每乙個公民的合法權利都值得守護 每乙個維權訴求都值得珍視。當且僅當舉報渠道暢...

字典特徵提取和文字特徵抽取

什麼叫字典特徵提取?字典內容轉化成計算機可以處理的數值 比如現在有個字典 data 分別是老三,老四,老五的個人基本資訊 我們想提取出來這幾個人的特徵值,也就是給我用乙個向量,表示某個獨一無二的人的特徵 我們先給出 coding utf 8 特徵提取 首先匯入轉換器類 from sklearn.fe...