自然語言處理入門之路 task04 文字表示

2021-09-18 04:05:27 字數 1910 閱讀 6553

tf-idf原理。

文字矩陣化,使用詞袋模型,以tf-idf特徵值為權重。(可以使用python中tfidftransformer庫)

互資訊的原理。

使用第二步生成的特徵矩陣,利用互資訊進行特徵篩選。

tf-idf原理(wiki百科)

逆向檔案頻率(inverse document frequency, idf)是乙個詞語普遍重要性的度量。某一特定詞語的idf,可以由總檔案數目除以包含該詞語之檔案的數目,再將得到的商取對數得到。

詞頻(term frequency,tf)指的是某乙個給定的詞語在該檔案**現的頻率。這個數字是對詞數(term count)的歸一化,以防止它偏向長的檔案。

逆向檔案頻率(inverse document frequency,idf)是乙個詞語普遍重要性的度量。某一特定詞語的idf,可以由總檔案數目除以包含該詞語之檔案的數目,再將得到的商取以10為底的對數得到:

其中|d|:語料庫中的檔案總數

\in d_}|} |}\in d_}}|:包含詞語 } t_}的檔案數目(即 \neq 0} n_}\neq 0的檔案數目)如果詞語不在資料中,就導致分母為零,因此一般情況下使用 \in d_}|} 1+|}\in d_}}|

然後

def

tf_idf

(path, dic)

: tf_idf =

fold_list = os.listdir(path)

count =

0 idf =

for key in dic.keys():

idf[key]=1

tf_idf[key]=0

for flod i fold_list:

file_list = os.listdir(

'path+'

/'+flod)

count +=

len(file_list)

forfile

in file_list:

with

open

(path+

'/'+flod+

'/'+

file

)as f:

text = f.read(

)for key in dic.keys():

if key in text:

idf[key]+=1

for key, value in idf.items():

idf[key]

= log(count/value+1)

for key,value in tf_idf.items():

tf_idf[key]

= dic[key]

* idf[key]

return tf_idf

sklearn 中有直接可以呼叫的tf-idf工具:

from sklearn.feature_extraction.text import tfidftransformer
文字矩陣化文字矩陣化又稱文字向量化,直接利用sklearn中方法

from sklearn.feature_extraction.text import countvectorizer

count_vect = countvectorizer(

)x_train_counts = count_vect.fit_transform(train_data)

互資訊互資訊(mutual information)是用來評價乙個事件的出現對於另乙個事件的出現所貢獻的資訊量

自然語言處理入門

1 首先,將原文本拆分為句子,在每個句子中過濾掉停用詞 可以不選 並只保留指定詞性的單詞,由此可以得到句子和單詞的集合。2 每個單詞作為pagerank中的乙個節點。設視窗大小為k,假設乙個句子所組成的單詞可以表示為w1,w2,w3,wn.則w1,w2,wk w2,w3,wk 1 w3,w4,wk ...

自然語言處理入門之路 task01 環境搭建

以下步驟環境 windows10 64位系統 1 anaconda 安裝 官網 根據需要按照python3 或者python2 安裝過程 2 conda 學習 常用命令 安裝包 conda install 設定國內映象源 conda config add channels conda config ...

自然語言處理入門 中文分詞原理

1.中文分詞原理介紹 1.1 中文分詞概述 中文分詞 chinese word segmentation 指的是將乙個漢字序列切分成乙個乙個單獨的詞。分詞就是將連續的字序列按照一定的規範重新組合成詞序列的過程。1.2 中文分詞方法介紹 現有的分詞方法可分為三大類 基於字串匹配的分詞方法 基於理解的分...