“達觀杯”文本分類--baseline


結合tfidf權重,對“達觀杯”提供的文本,進行文本分類,作為baseline,后續改進均基於此。

1.比賽地址及數據來源

"達觀杯"文本智能挑戰賽

2.代碼及解析

# -*- coding: utf-8 -*-

"""
@簡介:tfidf特征/ SVM模型
@成績: 0.77
"""
#導入所需要的軟件包
import pandas as pd
from sklearn.svm import LinearSVC
from sklearn.feature_extraction.text import TfidfVectorizer

print("開始...............")

#====================================================================================================================
# @代碼功能簡介:從硬盤上讀取已下載好的數據,並進行簡單處理
# @知識點定位:數據預處理
#====================================================================================================================
df_train = pd.read_csv('./data/train_set.csv')  # 數據讀取
df_test = pd.read_csv('./data/test_set.csv')

# 觀察數據,原始數據包含id、article(原文)列、word_seg(分詞列)、class(類別標簽)
df_train.drop(columns=['article', 'id'], inplace=True) # drop刪除列
df_test.drop(columns=['article'], inplace=True)

#==========================================================
# @代碼功能簡介:將數據集中的字符文本轉換成數字向量,以便計算機能夠進行處理(一段文字 ---> 一個向量)
# @知識點定位:特征工程
#==========================================================
vectorizer = TfidfVectorizer(ngram_range=(1, 2), min_df=3, max_df=0.9)
'''
    ngram_range=(1, 2) : 詞組長度為1和2
    min_df : 忽略出現頻率小於3的詞
    max_df : 忽略在百分之九十以上的文本中出現過的詞
'''
vectorizer.fit(df_train['word_seg'])  # 構造tfidf矩陣
x_train = vectorizer.transform(df_train['word_seg'])  # 構造訓練集的tfidf矩陣
x_test = vectorizer.transform(df_test['word_seg'])  # 構造測試的tfidf矩陣

y_train = df_train['class']-1 #訓練集的類別標簽(減1方便計算)

#==========================================================
# @代碼功能簡介:訓練一個分類器
# @知識點定位:傳統監督學習算法之線性邏輯回歸模型
#==========================================================

classifier = LinearSVC()  # 實例化邏輯回歸模型
classifier.fit(x_train, y_train)  # 模型訓練,傳入訓練集及其標簽

#根據上面訓練好的分類器對測試集的每個樣本進行預測
y_test = classifier.predict(x_test)

#將測試集的預測結果保存至本地
df_test['class'] = y_test.tolist()
df_test['class'] = df_test['class'] + 1
df_result = df_test.loc[:, ['id', 'class']]
df_result.to_csv('./results/beginner.csv', index=False)

print("完成...............")

3.問題修復

由於提供的數據集較大,一般運行時間再10到15分鍾之間,基礎電腦配置在4核8G的樣子(越消耗內存在6.2G),因此,一般可能會遇到內存溢出的錯誤。

 

可限制每次讀取的數據量,具體解決辦法如下:

 

 當然,你也可以換一個配置更高的電腦。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM