Al capacitar el texto con etiquetas existentes, se realiza la clasificación del nuevo texto.
2019.3.25: El proyecto fue originalmente un negocio de análisis de opinión pública de la compañía, pero luego participó en algunas competiciones y agregó algunas funciones pequeñas. En ese momento, solo quería integrar algunos modelos simples de aprendizaje automático y aprendizaje profundo para ejercer mis habilidades de ingeniería. Después de comunicarme con algunos internautas, sentí que no había necesidad de construir un módulo general (nadie lo usa de todos modos, jaja). Me resultaron bastante pausado recientemente, así que eliminé todos los parámetros y funciones de fantasía inútiles con el propósito de ser más simple, y solo se conservaron las redes de preprocesamiento y convolucionales.
Se han preparado más de 4,000 datos de comercio electrónico de una sola etiqueta y más de 15,000 datos de delitos judiciales multiclabel. Los datos son solo para investigación académica y la difusión comercial está prohibida.
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 ]

Se utiliza para preprocesar los datos de texto originales, incluida la segmentación de palabras, la codificación de conversión, la uniformidad de longitud y otros métodos, que se han encapsulado en 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 ) Integre el preprocesamiento, la capacitación en red y la predicción de la red. Consulte dos scripts de demostración para la demostración
El método es el siguiente:
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