من خلال تدريب النص مع العلامات الحالية ، يتم تحقيق تصنيف النص الجديد.
2019.3.25: كان المشروع في الأصل أعمالًا في تحليل الرأي العام للشركة ، ولكنه شارك لاحقًا في بعض المسابقات وأضاف بعض الوظائف الصغيرة. في ذلك الوقت ، أردت فقط دمج بعض النماذج البسيطة للتعلم الآلي والتعلم العميق لممارسة مهاراتي الهندسية. بعد التواصل مع بعض مستخدمي الإنترنت ، شعرت أنه لا توجد حاجة لبناء وحدة عامة (لا أحد يستخدمها على أي حال ، هاها ~). صادفت أن أكون على مهل تمامًا مؤخرًا ، لذلك قمت بحذف جميع المعلمات والوظائف الفاخرة غير المجدية لغرض أن تكون أبسط ، وتم الاحتفاظ فقط بالمعالجة المسبقة والشبكات التلافيفية.
تم إعداد أكثر من 4000 من بيانات التجارة الإلكترونية ذات التسمية الواحدة وأكثر من 15000 من بيانات الجريمة القضائية متعددة العلامات. البيانات هي للبحث الأكاديمي فقط ويحظر النشر التجاري.
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