文字預處理 詞頻計算 ngram

2021-09-22 16:44:29 字數 1939 閱讀 4570

- 中文文字的預處理

在處理文字時,由於存在各種不可預知的詞,所以只進行我們所關心字元的處理。

參考: 

def filter_word(sentence):

for uchar in sentence:

if(uchar>=u'\u4e00' and uchar<=u'\u9fa5'):

continue

if(uchar >= u'\u0030' and uchar<=u'\u0039'):

continue

if (uchar >= u'\u0041' and uchar <= u'\u005a') or (uchar >= u'\u0061' and uchar <= u'\u007a'):

continue

else:

sentence=sentence.replace(uchar,"")

return sentence

- 分詞後進行詞頻統計

很多庫有詞頻統計的功能,當然也可以自己寫,但是用countvectorizer更為方便。

#該**沒有驗證

dict_all=dict()

for sentence in text:

for one in sentence:

if one in dict_all:

dict_all[one] += 1

else:

dict_all[one] = 1

vectorizer=countvectorizer(min_df=2) 

corpus=["我們 是 好人 大大 他們 壞人 真的","他們 是 壞人 真的","aa aa cc"]

對於字元長度為1的詞,countvectorizer過濾掉了..如果不想被過濾掉,需要使用chars的level。

輸出格式為: (文件序號, 詞序) 詞頻,其中詞序為整個文件的情況下。

- ngram

由相鄰詞不同個數的組合,就分為了1gram,2gram,3gram等。

通過如下**,可以看出countvectorizer的ngram工作方式,結果中會包含小於n的詞彙。

bigram_vectorizer=countvectorizer(ngram_range=(1,2),min_df=1)

analyze=bigram_vectorizer.build_analyzer()

print(analyze("我們 是 好人 真的 壞人"))

對於分詞好的句子list,做bigram,將結果儲存下來。

沒有做刪減..使用了cnews的資料集。

參考:

文字預處理

常見預處理步驟,預處理通常包括四個步驟 讀入文字 分詞建立字典,將每個詞對映到乙個唯一的索引 index 將文字從詞的序列轉換為索引的序列,方便輸入模型 現有的工具可以很好地進行分詞,我們在這裡簡單介紹其中的兩個 spacy和nltk。text mr.chen doesn t agree with ...

文字預處理

本文章內容主要學習文字預處理的基本步驟及實現。1 讀入文字 2 分詞 3 建立詞典,將每乙個詞對映到乙個唯一的索引 4 將文字從詞的序列轉換為索引的序列,方便輸入模型 此處用一部英文 即h.g.well的time machine,作為示例,展示文字預處理的具體過程。def read time mac...

綜合練習 詞頻統計預處理

將所有,等分隔符全部替換為空格 將所有大寫轉換為小寫 生成單詞列表 生成詞頻統計 排序排除語法型詞彙,代詞 冠詞 連詞 輸出詞頻最大top20 將分析物件存為utf 8編碼的檔案,通過檔案讀取的方式獲得詞頻分析內容。fo open news.txt r news fo.read fo.close s...