問句識別 基於Xgboost的中文疑問句判斷模型

2021-08-18 17:54:34 字數 2263 閱讀 9967

關於xgboost:

xgboost是大規模並行boosted tree的工具,它是目前最快最好的開源boosted

tree工具包,比常見的工具包快10倍以上。在資料科學方面,有大量kaggle選手選用它進行資料探勘比賽,其中包括兩個以上kaggle比賽的奪冠方案。在工業界規模方面,xgboost的分布式版本有廣泛的可移植性,支援在yarn,

mpi, sungrid engine等各個平台上面執行,並且保留了單機並行版本的各種優化,使得它可以很好地解決於工業界規模的問題。

網上有不少介紹的文章,這裡就此略過,直奔主題,寫一篇煉丹文。

(1)語料格式

content,label

在麼,1

你好,0

...

左邊為文字,右邊為標籤,從這裡也可以看出來,疑問句判別問題可以簡單的作為乙個二分類問題來解決。

(2)語料預處理

tokenizer = jieba.tokenizer()
從本地讀取語料後,進行簡單的分詞處理

(3)特徵工程

vectorizer = tfidfvectorizer(smooth_idf=true,

analyzer=analyzer,

ngram_range=(1, 1),

min_df=1, norm='l1')

這裡對分詞後的語料進行tfidf特徵抽取,構造訓練矩陣。

(1)模型引數

模型引數使用k折交叉驗證進行對比,確定

for i, param in enumerate(param_grid):

cv_result = xgb.cv(param, self.train_matrix,

num_boost_round=self.num_boost_round, # max iter round

nfold=self.nfold,

stratified=self.stratified,

metrics=self.metrics, # metrics focus on

early_stopping_rounds=self.early_stopping_rounds) # stop when metrics not get better

最終得到表現最好的一組引數及相應的迭代次數等

(2)模型訓練

_, best_param, best_iter_round = self.model_param_select()

self.model = xgb.train(dtrain=self.train_matrix, params=best_param, num_boost_round=best_iter_round)

與交叉驗證尋找最佳引數不用,訓練模型時使用全部的資料進行訓練

(3)模型結果

param select 0, auc: 0.9793438, iter_round: 207, params: , now best auc: 0.9793438

param select 1, auc: 0.9799142, iter_round: 350, params: , now best auc: 0.9799142

param select 2, auc: 0.9802402, iter_round: 280, params: , now best auc: 0.9802402

...param select 24, auc: 0.97926, iter_round: 694, params: , now best auc: 0.980495

param select 25, auc: 0.9803058, iter_round: 824, params: , now best auc: 0.980495

param select 26, auc: 0.980129, iter_round: 880, params: , now best auc: 0.980495

最終可以看到,模型的auc在0.980495得到最佳的引數,儲存模型。

from interrogative.api import *

train()

tag = recognize(u'今天 來 點 兔子 嗎')

output = '是疑問句' if tag else '不是疑問句'

print(output)

1、xgboost引數解釋:

2、具體原始碼可以在我的github上找到:

GBDT與XGBoost 基於負梯度擬合 的說明

為了不讓自己在深度學習的網路裡迷失 嗝 回顧了一下機器學習 相信大家看到整合學習的時候,類似於adaboost等思路還是挺清晰的,bdt裡面的基於擬合殘差思想也好理解,但是碰到gbdt時候有點蒙蔽 只針對小白,大佬繞行 這怎麼就變成了根據損失函式的負梯度擬合呢,編輯公式有點煩,我就把pad筆記拿上來...

基於詞典的實體識別

ner 命名實體識別 一般是詞典和模型方式結合,詞典負責已有詞識別,模型負責未知詞識別。在不需發現未知詞的情況下基於詞典的實體識別已足夠 基於字典的ner也有兩種做法 字串多模匹配 和 切詞 詞典加入自定義詞庫 多模匹配有兩種基本演算法 trie樹 和 記錄長度集合的最長匹配 trie樹匹配效率更高...

基於Opencv的顏色識別

hsv模型中顏色的引數分別是 色調 h hue 飽和度 s saturation 亮度 v value 由a.r.smith在1978年建立的一種顏色空間,也稱六角錐體模型 hexcone model 1 色調 h hue 用角度度量,取值範圍為0 360 從紅色開始按逆時針方向計算,紅色為0 綠色...