《機器學習算法原理與編程實踐》筆記

在這裏記錄一下看《機器學習算法原理與編程實踐》這本書的一些東東。

第一章    數學基礎

數學基礎.pdf


第二章    中文文本分類

    由於書上用的是Python2,而我安裝的Anaconda是Python3,所以在代碼方面有一些差異,有的甚至不能運行。

TypeError: a bytes-like object is required, not 'str'

就是byte和str的問題,這裏我推薦一篇博客,看完就基本可以知道byte<–>str是怎麼回事了(byte–>str:decode;str–>byte:encode)。下面是運行成功的代碼:

import jieba
import os

# 保存文件
def savefile(savepath, content):
    fp = open(savepath, "wb")
    fp.write(content.encode(encoding="utf-8"))
    fp.close()

# 讀取文件
def readfile(path):
    fp = open(path, "rb")
    content = fp.read()
    fp.close()
    return content

corpus_path = "train_corpus_small/" # 未分詞分類語料庫路徑
seg_path = "train_corpus_seg/" # 分詞後分類語料庫路徑

catelist = os.listdir(corpus_path) # 獲取catelist下所有子目錄

# 獲取每個目錄下的所有文件
for mydir in catelist:
    class_path = corpus_path + mydir + "/" # 拼出分類子目錄的路徑
    seg_dir = seg_path + mydir + "/" # 拼出分詞後的語料分類目錄
    if not os.path.exists(seg_dir): # 是否存在目錄,如果不存在就創建
        os.makedirs(seg_dir)
    file_list = os.listdir(class_path) # 獲取類別目錄下的所有文件
    for file_path in file_list: #遍歷類別目錄下的文件
        fullname = class_path + file_path # 拼出文件名全路徑
        content = readfile(fullname).strip() # 讀取文件內容
        content = content.replace("\r\n".encode(encoding="utf-8"),"".encode(encoding="utf-8")).strip() # 刪除換行和多餘的空格
        content_seg = jieba.cut(content) # 爲文件內容分詞
        #將處理後的文件保存到分詞後語料目錄
        savefile(seg_dir+file_path," ".join(content_seg))

print("-------END---------")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章