Обучив текст существующим тегам, классификация нового текста реализована.
2019 год. В то время я просто хотел интегрировать некоторые простые модели машинного обучения и глубокого обучения, чтобы проявлять свои инженерные навыки. После общения с некоторыми пользователями пользователей сети я почувствовал, что не нужно строить общий модуль (никто не использует его, ха -ха ~). В последнее время я оказался довольно неторопливым, поэтому я удалил все бесполезные причудливые параметры и функции с целью быть более простым, и были сохранены только предварительные обработки и сверточные сети.
Было подготовлено более 4000 данных электронной коммерции и более 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 ]

Используется для предварительной обработки исходных текстовых данных, включая сегментацию слов, кодирование конверсии, однородность длины и другие методы, которые были инкапсулированы в 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 ) Интеграция предварительной обработки, обучения сети и прогнозирования сети. Пожалуйста, обратитесь к двум демонстрационным сценариям для демонстрации
Метод заключается в следующем:
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