Dengan melatih teks dengan tag yang ada, klasifikasi teks baru direalisasikan.
2019.3.25: Proyek ini awalnya adalah bisnis analisis opini publik perusahaan, tetapi kemudian berpartisipasi dalam beberapa kompetisi dan menambahkan beberapa fungsi kecil. Pada saat itu, saya hanya ingin mengintegrasikan beberapa model pembelajaran mesin dan pembelajaran yang mendalam untuk menggunakan keterampilan teknik saya. Setelah berkomunikasi dengan beberapa netizen, saya merasa tidak perlu membangun modul umum (tidak ada yang menggunakannya, haha ~). Saya kebetulan sangat santai baru -baru ini, jadi saya menghapus semua parameter dan fungsi mewah yang tidak berguna untuk tujuan menjadi lebih sederhana, dan hanya preprocessing dan jaringan konvolusional yang dipertahankan.
Lebih dari 4.000 data e-commerce label tunggal dan lebih dari 15.000 data kejahatan yudisial multi-label telah disiapkan. Data hanya untuk penelitian akademik dan diseminasi komersial dilarang.
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 ]

Digunakan untuk preprocess data teks asli, termasuk segmentasi kata, pengkodean konversi, keseragaman panjang dan metode lainnya, yang telah dienkapsulasi ke dalam textclassification.py
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 ) Integrasi preprocessing, pelatihan jaringan, dan prediksi jaringan. Silakan merujuk ke dua skrip demo untuk demo
Metode ini adalah sebagai berikut:
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