摘要:是一個開源的短文本包括標題短信問題句子等分類工具包。又比如,選擇被誤分的樣本,調用輸出和的混淆表格,以了解哪些類別的特征界限比較模糊。終端輸出如下第一行表示預測類別,第一列表示真實類別完整請見。
LibShortText是一個開源的Python短文本(包括標題、短信、問題、句子等)分類工具包。它在LibLinear的基礎上針對短文本進一步優化,主要特性有:
- 支持多分類
- 直接輸入文本,無需做特征向量化的預處理
- 二元分詞(Bigram),不去停頓詞,不做詞性過濾
- 基于線性核SVM分類器(參見SVM原理簡介:最大間隔分類器),訓練和測試的效率極高
- 提供了完整的API,用于特征分析和Bad Case檢驗
下載并在解壓后的目錄下make就OK了。
注意:不支持Windows系統;Mac OS和Linux之間的庫不通用
關于LibShortText的性能,我們可以拿scikit-learn的樸素貝葉斯(參見用scikit-learn實現樸素貝葉斯分類器)和SVM(也是基于LibLinear)就前文提到的網頁標題分類問題進行橫向對比:
分類器 | 準確率 | 計算時間(秒) |
---|---|---|
scikit-learn(nb) | 76.8% | 134 |
scikit-learn(svm) | 76.9% | 121 |
libshorttext | 79.6% | 49 |
測試環境為低配版MBA2013
顯然LibShortText無論在準確率和效率上都要更勝一籌。
API說明雖然LibShortText提供了訓練和測試的類命令行操作方式,但直接從Python腳本調用更加靈活和強大,了解和訓練、預測和分析相關的API是有幫助的。
預處理
Converter模塊負責將文本轉化為數值化的數據集(數據格式與LibSVM相同),由于內置的分詞器僅支持英文,如果要用于中文短文本的分類,就必須替換分詞器(如下代碼所示)。分詞器是一個將文本轉化為單詞列表的函數,值得注意的是:分詞器不會和模型一起保存,當重載模型時也必須重載分詞器。
pythonfrom libshorttext.libshorttext.converter import * text_converter = Text2svmConverter() text_converter.text_prep.tokenizer = comma_tokenizer convert_text(train_file, text_converter, svm_file)
訓練文本的格式如下:
娛樂 組圖:劉亦菲短裙秀腿 濃妝變冷艷時髦女
模型
LibShortText提供兩組參數供訓練時使用:
- train_arguments實際上是LibLinear的訓練參數,可設定松弛參數C等
- feature_arguments是特征的表現形式,如詞數、詞頻、TF-IDF等
預測
獲得模型后,我們可以預測新文本的類別,LibShortText提供了兩個API:
predict_text(text_file, model) -- 針對以行分隔的測試文本
predict_single_text(single_text, model) -- 針對單條文本
類別預測將返回一個PredictResult的對象,包含下列屬性:
predicted_y -- 預測的類別(對單條文本預測時是字符串對象,對測試文本預測時是列表對象)
decvals -- 被預測文本對所有類別的決策變量,與文本到分類超平面的距離有關。它是一個列表而非字典對象,如果你希望和類別關聯起來,可借助model的get_labels():
pythondecvals = zip(model.get_labels(), predict_result.decvals)
true_y -- 真實的類別(僅對測試文本預測時存在)
get_accuracy() -- 獲得測試的準確率(僅對測試文本預測時存在)
分析
analyzer的作用是分析LibShortText的預測結果,通過它我們可以了解哪些特征更為關鍵、哪些類別容易被混淆。
比如分析一條體育新聞的標題:
pythonanalyzer = Analyzer(model) analyzer.analyze_single("國青錯失絕殺0-0韓國 下輪平越南就出線")
終端輸出如下:
sports | news | game | food | porn | |
---|---|---|---|---|---|
…… | |||||
國 青 | 4.600e-01 | -1.349e-01 | -4.283e-03 | 0.000e+00 | 0.000e+00 |
…… | |||||
decval | 1.192e+00 | 3.396e-01 | 3.132e-01 | 2.196e-01 | 1.910e-01 |
可見「國」和「青」一起促成最關鍵的sports類特征。
又比如,選擇被誤分的樣本,調用gen_confusion_table()輸出sports、star和movie的混淆表格,以了解哪些類別的特征界限比較模糊。
pythonanalyzer = Analyzer(model) insts = InstanceSet(predict_result).select(wrong, with_labels(["sports", "movie", "star"])) analyzer.gen_confusion_table(insts)
終端輸出如下(第一行表示預測類別,第一列表示真實類別):
star | movie | sports | |
---|---|---|---|
star | 0 | 19 | 5 |
movie | 21 | 0 | 1 |
sports | 15 | 4 | 0 |
完整demo請見lst_classifier.py。
來自:建造者說
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37481.html
摘要:古龍說,無論什么東西,最好的都只有一種。經歷半年的文本分類實踐,我們基本已斷定,最好的文本分類算法就是支持向量機。有沒有可能把最好的文本分類算法,包裝成一個超級簡單的工具提供給大家這是我開發的初衷。 古龍說,無論什么東西,最好的都只有一種。經歷半年的文本分類實踐,我們基本已斷定,最好的文本分類算法就是SVM -- 支持向量機。 但是縱然知道了天機,新手做文本分類仍然需要學習不少東西,例...
摘要:在線挑戰,還沒用過,貌似現在對英文資料心里還有種抵觸,必須克服實驗樓研發工程師包含了等學習課程。書的作者就是開發了用于數據分析的著名開源庫的作者英文資料,對數據分析中要用到的一些庫,等等做了簡要介紹。形式的資料,示例代碼都很全。 showImg(https://segmentfault.com/img/remote/1460000004852849); 一、說明 面對網絡上紛繁復雜的資...
摘要:購買登錄官網查看云服務器購買列表,購買時選擇地區操作系統鏡像等,購買云服務器后會發送短信通知,這里只列出一個阿里云尊敬的用戶您的云服務器創建成功實例名稱,公網。1.購買 登錄官網查看云服務器購買列表,購買時選擇地區、操作系統鏡像等,購買云服務器后會發送短信通知,這里只列出一個: 【阿里云】尊敬的用戶:您的云服務器ECS創建成功(實例名稱:xxxxxxxxxx,公網IP:xxx.xxx.xxx...
摘要:購買登錄官網查看云服務器購買列表,購買時選擇地區操作系統鏡像等,購買云服務器后會發送短信通知,這里只列出一個阿里云尊敬的用戶您的云服務器創建成功實例名稱,公網。1.購買 登錄官網查看云服務器購買列表,購買時選擇地區、操作系統鏡像等,購買云服務器后會發送短信通知,這里只列出一個: 【阿里云】尊敬的用戶:您的云服務器ECS創建成功(實例名稱:xxxxxxxxxx,公網IP:xxx.xxx.xxx...
摘要:更多相關介紹請看這特點僅僅只是虛擬最大限度減少與的交互類似于使用操作單向數據流很大程度減少了重復代碼的使用組件化可組合一個組件易于和其它組件一起使用,或者嵌套在另一個組件內部。在使用后,就變得很容易維護,而且數據流非常清晰,容易解決遇到的。 歡迎移步我的博客閱讀:《React 入門實踐》 在寫這篇文章之前,我已經接觸 React 有大半年了。在初步學習 React 之后就正式應用到項...
閱讀 2291·2021-11-24 10:18
閱讀 2721·2021-11-19 09:59
閱讀 1712·2019-08-30 15:53
閱讀 1188·2019-08-30 15:53
閱讀 1071·2019-08-30 14:19
閱讀 2482·2019-08-30 13:14
閱讀 3005·2019-08-30 13:00
閱讀 1938·2019-08-30 11:11