日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

手把手教你搭建一個簡易的文本分類器

 

我是@老K玩代碼,專注分享實戰項目和最新行業資訊,已累計分享超1000實戰項目!


前言

所有的人工智能學習者,都是從一個個簡易的分類器開始的實踐之路,自然語言處理領域也不例外。雖然有著包括:分詞、詞性標注、關鍵詞提取、新聞摘要、機器翻譯等各種各樣的實際應用,但文本分類還是AI自然語言處理的基礎。

那么,我們應該如何構建起一個建議的文本分類器呢?老K就帶大家來實踐一下。


準備工作

首先,你需要有一個已經標記好分類的文本文件,當然也可以用老K準備的源數據,可以根據文末的方法獲取。

然后,開始安裝必要的第三方庫:pandas、sklearn

pip install pandas

pandas是最常用的數據處理的工具庫

pip install -U scikit-learn

sklearn是機器學習的一個常用庫


數據清洗

首先,我們把數據通過pandas導入到程序中來,然后對數據進行基礎的清洗

import pandas as pd

data = pd.read_csv('data.csv')

data = data.dropna(subset=['fearures'])
data = data[['features', 'targets']]

然后將數據轉為array格式,把特征和標簽分別提取出來

dataset = data.as_matrix()
features = dataset[:, 0]
targets = dataset[:, 1]

數據預處理

由于不論特征還是標簽,都是以文本形式表現的,所以我們首先需要把這些文本轉化為計算機能夠理解的形式,也就是把文本數字化。

對于特征部分,我們用sklearn自帶的詞向量化器模型轉化一下即可:

from sklearn.feature_extraction.text import TfidfVectorizer

tfidf = TfidfVectorizer()
X = tfidf.fit_transform(features)

通過上述代碼,就能一步實現文本的分詞和向量化;

然后我們對標簽部分,用encoder器進行數值化預處理:

from sklearn.preprocessing import LabelEncoder

encoder = LabelEncoder()
Y = encoder.fit_transform(targets)

說明一下: 模型中的fit_transform()方法相當于fit()后立刻進行transform(),是后兩者的合并,主要起到簡化代碼的效果。


抽取訓練集、測試集

sklearn有自帶的選擇器,可以按照設定的參數隨機生成訓練集和測試集

from sklearn.model_selection import train_test_split

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.5)

通過上述代碼,就可以將特征和標簽,按照50%測試集的比例,拆分為訓練集和測試集


訓練模型

接下來我們只需要選擇一個合適的模型,進行訓練就可以了。

這里我們選擇的是隨機森林模型,參數是默認的。大家也可以根據自己的任務本身,選擇各自認為合適的模型。

from sklearn.ensemble import RandomForestClassifier

cls = RandomForestClassifier()
cls.fit(X_train, Y_train)

訓練完成后,可以用score()查看模型的準確率,然后進一步調整模型

print(cls.score(X_test, Y_test))

模型預測

在訓練好合適的模型后,我們就可以用這個模型進行預測了。

我們把用來預測的特征文本輸入作為sents輸入模型。

sents = ["用于預測的語句"]
sents = tfidf.transform(sents)
labers = cls.predict(sents)

值得注意的是,此處輸入的sents需要是list格式的數據,而非str。


總結

以上就是實現一個簡易的文本分類器的步驟詳解,實際的分類器應用,寫法也與之大致相同。

由于選擇的是默認的模型,所以準確率并不能保證,需要不斷改進模型選擇和模型參數,才能提高模型的準確率,達到商業應用的水準。

以下是完整代碼:

import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder

# 數據清洗 ====
data = pd.read_csv('data.csv')

data = data.dropna(subset=['context'])
data = data[['features', 'targets']]

dataset = data.as_matrix()
features = dataset[:, 0]
targets = dataset[:, 1]

# 預處理 ====
tfidf = TfidfVectorizer()
X = tfidf.fit_transform(features)

encoder = LabelEncoder()
Y = encoder.fit_transform(targets)

# 抽取訓練集 ====
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.5)

# 訓練模型 ====
cls = RandomForestClassifier()
cls.fit(X_train, Y_train)

print(cls.score(X_test, Y_test))

分享到:
標簽:文本 分類
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定