Ao treinar o texto com tags existentes, a classificação de novo texto é realizada.
2019.3.25: O projeto era originalmente um negócio de análise de opinião pública da empresa, mas depois participou de algumas competições e adicionou algumas pequenas funções. Naquela época, eu só queria integrar alguns modelos simples de aprendizado de máquina e aprendizado profundo para exercer minhas habilidades de engenharia. Depois de me comunicar com alguns internautas, senti que não havia necessidade de construir um módulo geral (ninguém o usa de qualquer maneira, haha ~). Por acaso, fui bastante tranquilo recentemente, então excluí todos os parâmetros e funções sofisticados sofisticados com o objetivo de ser mais simples, e apenas redes de pré -processamento e convolucional foram mantidas.
Mais de 4.000 dados de comércio eletrônico de marca única e mais de 15.000 dados de crimes judiciais de vários rótulos foram preparados. Os dados são apenas para pesquisa acadêmica e a disseminação comercial é proibida.
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 ]

Usado para pré -processar os dados originais de texto, incluindo segmentação de palavras, codificação de conversão, uniformidade de comprimento e outros métodos, que foram encapsulados em 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 ) Integrar pré -processamento, treinamento em rede e previsão de rede. Consulte dois scripts de demonstração para demonstração
O método é o seguinte:
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