En formant le texte avec les balises existantes, la classification du nouveau texte est réalisée.
2019.3.25: Le projet était à l'origine une entreprise d'analyse d'opinion publique de l'entreprise, mais elle a ensuite participé à certaines compétitions et ajouté quelques petites fonctions. À cette époque, je voulais juste intégrer des modèles simples d'apprentissage automatique et d'apprentissage en profondeur pour exercer mes compétences en ingénierie. Après avoir communiqué avec certains internautes, je pensais qu'il n'y avait pas besoin de construire un module général (personne ne l'utilise de toute façon, haha ~). Il se trouvait que j'étais assez tranquille récemment, j'ai donc supprimé tous les paramètres et fonctions de fantaisie inutiles dans le but d'être plus simple, et seuls les réseaux de prétraitement et de convolution ont été conservés.
Plus de 4 000 données sur le commerce électronique unique et plus de 15 000 données sur le crime judiciaire multi-étiquettes ont été préparées. Les données concernent uniquement la recherche académique et la diffusion commerciale est interdite.
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 ]

Utilisé pour prétraiter les données de texte d'origine, y compris la segmentation des mots, le codage de conversion, l'uniformité de longueur et d'autres méthodes, qui ont été encapsulées dans 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 ) Intégrez le prétraitement, la formation en réseau et la prédiction du réseau. Veuillez vous référer à deux scripts de démonstration pour démo
La méthode est la suivante:
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