国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

文本分類的研究與實現(xiàn)

2019-11-06 06:08:25
字體:
供稿:網(wǎng)友
主要任務(wù)對基本的文本分類算法進行研究,了解并掌握算法基本原理,設(shè)計程序?qū)崿F(xiàn)分類算法,并用數(shù)據(jù)集進行測試。數(shù)據(jù)集的獲取 本次研究以搜狗實驗室的搜狗新聞數(shù)據(jù)為基本語料,地址

1.格式轉(zhuǎn)換

原始數(shù)據(jù)集是只讀的xml格式文件(news_sohusite_xml.dat)。首先是編碼問題,需要將文件轉(zhuǎn)換為UTF-8編碼;然后是標簽問題,原始XML格式文件缺少根標簽,需要自行添加。本次格式轉(zhuǎn)換部分用java語言實現(xiàn),逐行讀取內(nèi)容,然后寫入目標文件,并在目標文件的首尾加上自定義的根標簽,最終得到格式轉(zhuǎn)換后的文件news_sohusite_xml.txt。格式轉(zhuǎn)換代碼如GBK2UTF8.java,實現(xiàn)了GBK向UTF-8格式的轉(zhuǎn)換

這里寫圖片描述

2.XML解析

搜狐新聞文件的格式為XML文件,需要對XML文件進行解析,格式如下: 這里寫圖片描述 本次需要解析出url地址,用于判斷新聞對應(yīng)的類別;需要解析出docno,作為存儲文件的名稱,需要解析出content,作文單個文本的內(nèi)容。

XML解析的三種方案

正則表達式:正則表達式可以解析任意格式的文本,但正則表達式適用于對滿足指定條件的文件內(nèi)容進行查找或搜索,而本次需要將url、docno、content同時解析出,正則表達式不擅長這種結(jié)構(gòu)化文本的解析;

BeautifulSoup:一個python的XML解析庫,beautifulsoup的容錯能力優(yōu)于正則表達式,但beautifulsoup需要一次性讀取全部文件才能夠解析出數(shù)據(jù),這種機制使得它的解析速度較慢,而且不能處理大文件;本次的原始文件比較大,beautifulsoup無法使用;

SAX:一個基于事件的XML解析庫,java、python均內(nèi)置這種庫。由于SAX基于事件,可以邊讀取邊解析,不需要一次性讀取全部文件,所以該方法能很好地支持大文件解析。本次選用該方法。

SAX解析XML文件的代碼在saxparser包中,解析完畢后,輸出文件在dataout路徑下: 這里寫圖片描述

3.數(shù)據(jù)集的挑選

本次按服務(wù)器主機名分類,類別比較多;同時,大部分類別中的文檔數(shù)目太少,樣本容量不足。所以,本次決定初步篩選出文檔數(shù)目排名前50的類別。

4.數(shù)據(jù)集的精選

為了使數(shù)據(jù)集的類別區(qū)分度明顯,本次從排名前50的數(shù)據(jù)集中選出有代表性的8個類別;為了使樣本類別均衡,每個類別中挑出1000個文檔;將每個類別的文檔分為兩份——600和400,分別用于訓練和測試。這樣,就得到了8*600的訓練集和8*400的測試集。

轉(zhuǎn)碼處理在python平臺分別對訓練集traindata和測試集testdata進行轉(zhuǎn)碼,從GBK轉(zhuǎn)為UTF-8編碼,得到轉(zhuǎn)碼后的訓練集train_raw和測試集test_raw。實現(xiàn)轉(zhuǎn)碼的代碼文件為CodeChange.py 注意:轉(zhuǎn)碼過程中要decode()函數(shù)要加上”ignore”選項,忽略非GBK字符 page = page.decode("GBK",'ignore').encode('utf-8') 分詞處理本次分詞采用python平臺的jieba分詞工具,將訓練集train_raw內(nèi)容分詞,分詞后的文檔存儲在train_seg目錄下;用同樣的方法對測試集test_raw進行分詞,保存在test_seg路徑下。實現(xiàn)分詞的代碼文件為WordSeg.py 這里寫圖片描述 注意:讀取文本時需要將換行符替換掉,并將空白字符替換掉;切分文本時,應(yīng)該使cut_all選項為False,不采用全切分模式。構(gòu)建文本的Bunch對象將分詞完畢的文本train_seg/train_seg生成Bunch對象,Bunch對象中將每個文檔的filelabel、filepath、content按對應(yīng)次序保存起來,并保存所有類別targetlabels。訓練集train_seg生成的Bunch對象序列化到磁盤文件train_seg_bunch.dat;用同樣的方法將測試集test_seg生成Bunch對象,并序列化到磁盤文件test_seg_bunch.dat。該部分的實現(xiàn)代碼為Seg2Bunch.py。 注意:在整合bunch_list過程中,需要把已經(jīng)使用完畢的bunch手動刪除,回收內(nèi)存。 這里寫圖片描述生成TF-IDF詞向量空間對象反序列化train_seg_bunch.dat,讀取停用詞文件得到停用詞列表stop_words,通過train_seg_bunch與stop_words構(gòu)建train_tfidfspace對象,并序列化到文件train_tfidfspace.dat;通過test_seg_bunch、stop_words、train_tfidfspace構(gòu)建test_tfidfspace對象,并序列化到文件test_tfidfspace.dat。該部分的實現(xiàn)代碼見文件filebunch2TFIDF.py執(zhí)行預(yù)測反序列化訓練集詞向量空間train_tfidfspace與測試集詞向量空間test_tfidfspace。用train_tfidfspace訓練分類器,然后用訓練好的分類器進行預(yù)測,最后計算錯誤率。該部分的實現(xiàn)代碼見文件bayes.py。相關(guān)地址搜狗實驗室新聞數(shù)據(jù)java語言數(shù)據(jù)集獲取部分python語言部分精選后的數(shù)據(jù)集
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 邹平县| 博乐市| 龙口市| 梨树县| 澄迈县| 阳高县| 长阳| 禄丰县| 五寨县| 阜阳市| 龙游县| 大洼县| 张北县| 安国市| 宁都县| 全椒县| 锡林郭勒盟| 邢台市| 萨迦县| 珲春市| 唐山市| 牟定县| 婺源县| 鱼台县| 伊吾县| 磴口县| 莒南县| 渝北区| 高陵县| 长丰县| 缙云县| 湘西| 台江县| 沙洋县| 连城县| 彰化县| 湖口县| 扬中市| 济源市| 靖西县| 德令哈市|