Text Classification
1.0.0
既存のタグでテキストをトレーニングすることにより、新しいテキストの分類が実現されます。
2019.3.25:プロジェクトはもともと会社の世論分析事業でしたが、後にいくつかの競技に参加し、いくつかの小さな機能を追加しました。当時、私は機械学習と深い学習のいくつかの単純なモデルを統合して、エンジニアリングスキルを行使したかっただけです。一部のネチズンと通信した後、私は一般的なモジュールを構築する必要がないと感じました(とにかく誰もそれを使用しません、ハハ〜)。私はたまたま最近かなりゆっくりとしていたので、よりシンプルであることを目的として、すべての役に立たない派手なパラメーターと機能を削除し、前処理と畳み込みネットワークのみが保持されました。
4,000を超えるシングルラベルeコマースデータと15,000を超えるマルチラベル司法犯罪データが作成されています。データは学術研究のみであり、商業的普及は禁止されています。
from TextClassification . load_data import load_data
# 单标签
data = load_data ( 'single' )
x = data [ 'evaluation' ]
y = [[ i ] for i in data [ 'label' ]]
# 多标签
data = load_data ( 'multiple' )
x = [ i [ 'fact' ] for i in data ]
y = [ i [ 'accusation' ] for i in data ]

単語のセグメンテーション、変換エンコード、長さの均一性、その他の方法を含む元のテキストデータを事前に処理するために使用されます。
preprocess = DataPreprocess ()
# 处理文本
texts_cut = preprocess . cut_texts ( texts , word_len )
preprocess . train_tokenizer ( texts_cut , num_words )
texts_seq = preprocess . text2seq ( texts_cut , sentence_len )
# 得到标签
preprocess . creat_label_set ( labels )
labels = preprocess . creat_labels ( labels )プリプロセシング、ネットワークトレーニング、およびネットワーク予測を統合します。デモの2つのデモスクリプトを参照してください
この方法は次のとおりです。
from TextClassification import TextClassification
clf = TextClassification ()
texts_seq , texts_labels = clf . get_preprocess ( x_train , y_train ,
word_len = 1 ,
num_words = 2000 ,
sentence_len = 50 )
clf . fit ( texts_seq = texts_seq ,
texts_labels = texts_labels ,
output_type = data_type ,
epochs = 10 ,
batch_size = 64 ,
model = None )
# 保存整个模块,包括预处理和神经网络
with open ( './%s.pkl' % data_type , 'wb' ) as f :
pickle . dump ( clf , f )
# 导入刚才保存的模型
with open ( './%s.pkl' % data_type , 'rb' ) as f :
clf = pickle . load ( f )
y_predict = clf . predict ( x_test )
y_predict = [[ clf . preprocess . label_set [ i . argmax ()]] for i in y_predict ]
score = sum ( y_predict == np . array ( y_test )) / len ( y_test )
print ( score ) # 0.9288