- 中文文字的預處理
在處理文字時,由於存在各種不可預知的詞,所以只進行我們所關心字元的處理。
參考:
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...