Text Classification
1.0.0
기존 태그로 텍스트를 훈련시킴으로써 새 텍스트의 분류가 실현됩니다.
2019.3.25 :이 프로젝트는 원래 회사의 여론 분석 사업 이었지만 나중에 일부 경쟁에 참여하여 일부 작은 기능을 추가했습니다. 당시 나는 단지 엔지니어링 기술을 운동하기 위해 단순한 기계 학습 및 딥 러닝 모델을 통합하고 싶었습니다. 일부 네티즌과 의사 소통 한 후, 나는 일반 모듈을 만들 필요가 없다고 생각했습니다 (어쨌든 아무도 그것을 사용하지 않습니다, haha ~). 나는 최근에 상당히 여유가 있었기 때문에 더 간단한 목적으로 쓸모없는 멋진 매개 변수와 기능을 삭제했으며, 전처리 및 컨볼 루션 네트워크 만 유지되었습니다.
4,000 개가 넘는 단일 라벨 전자 상거래 데이터와 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 ]

단어 세분화, 변환 인코딩, 길이 균일 성 및 기타 방법을 포함하여 원본 텍스트 데이터를 전처리하는 데 사용됩니다.
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