أول BERT الخاص بك: دليل مصور

تصنيف الجملة


تسارع التقدم في تعلُم الآلة لمعالجة اللغات الطبيعية بشكل ملحوظ على مدار السنوات القليلة الماضية. تركت النماذج مختبرات الأبحاث وأصبحت أساسًا للمنتجات الرقمية الرائدة. من الأمثلة الجيدة على ذلك الإعلان الأخير بأن نموذج BERT أصبح المكون الرئيسي وراء بحث Google . تعتقد Google أن هذه الخطوة (أي إدخال نموذج متقدم لفهم اللغة الطبيعية في محرك البحث) تمثل "أكبر اختراق في السنوات الخمس الماضية وواحدة من أهمها في تاريخ محركات البحث".


هذه المقالة هي دليل بسيط لاستخدام أحد إصدارات BERT لتصنيف الجمل. المثال الذي فحصناه بسيط بما يكفي للتعرف على النموذج لأول مرة ومتقدم بدرجة كافية لإثبات المفاهيم الأساسية.


بالإضافة إلى هذه المقالة ، تم إعداد جهاز كمبيوتر محمول يمكن عرضه في المستودع أو تشغيله في Colab .


البيانات: SST2


في مثالنا ، سنستخدم مجموعة بيانات SST2 التي تحتوي على اقتراحات من مراجعات الأفلام ، كل منها له علامة موجبة (قيمة 1) أو سلبية (قيمة 0):


sst2


النماذج: تصنيف الجملة


– , ( , ) 1 ( ), 0 ( ). :


المشاعر-المصنف -1. png


:



, , 768. , .


distilbert-bert-sentiment-classifier.png


, BERT, ELMO ( NLP ): ( [CLS]).



, , . DistilBERT', . , , «» BERT', . , , BERT , [CLS] . , , . , , BERT .


transformers DistilBERT', .


التدريب على النماذج



, . DistilBERT' 2 .


تضمين برت - تعليمي - جملة - تضمين


DistilBERT'. Scikit Learn. , , :


بيرت - ديسلبرت - قطار - اختبار - انقسام - جملة - تضمين


distilBERT' ( #1) , ( #2). , sklearn , , 75% ,


:


تدريب بيرت - الانحدار اللوجستي



, , , .


«a visually stunning rumination on love». BERT' , . , ( [CLS] [SEP] ).


بيرت- Distilbert-tokenization-1


, . Word2vec .


bert-distilbert-tokenization-2-token-ids


:


tokenizer.encode("a visually stunning rumination on love", add_special_tokens=True)

DistilBERT'.


BERT, ELMO ( NLP ), :



DistilBERT


DistilBERT' , BERT'. , 768 .


bert-model-input-output-1


, , ( [CLS] ). .


bert-model-calssification-output-vector-cls


, , . :


مثال على تصنيف بيرت لتقطير الجمل


, .



. Colab github.


:


import numpy as np
import pandas as pd
import torch
import transformers as ppb # pytorch transformers
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import train_test_split

github, pandas:


df = pd.read_csv('https://github.com/clairett/pytorch-sentiment-classification/raw/master/data/SST2/train.tsv', delimiter='\t', header=None)

df.head() , 5 , :


df.head()

sst2-df-head


DistilBERT


model_class, tokenizer_class, pretrained_weights = (ppb.DistilBertModel, ppb.DistilBertTokenizer, 'distilbert-base-uncased')

##  BERT  distilBERT?   :
#model_class, tokenizer_class, pretrained_weights = (ppb.BertModel, ppb.BertTokenizer, 'bert-base-uncased')

#   / 
tokenizer = tokenizer_class.from_pretrained(pretrained_weights)
model = model_class.from_pretrained(pretrained_weights)

. , , . . ( , 2000).



tokenized = df[0].apply((lambda x: tokenizer.encode(x, add_special_tokens=True)))

.


sst2-text-to-tokenized-ids-bert-example


( Series/DataFrame pandas) . DistilBERT , 0 (padding). , ( , Python).


, /, BERT':


موتر بيرت المدخلات


DistilBERT'


DistilBERT.


input_ids = torch.tensor(np.array(padded))

with torch.no_grad():
    last_hidden_states = model(input_ids)

last_hidden_states DistilBERT', ( , , DistilBERT). , 2000 (.. 2000 ), 66 ( 2000 ), 278 ( DistilBERT).


تنبؤات بيرت-Distilbert-Tensor- تنبؤات


BERT'


3-d . :


موتر إخراج بيرت



. :


bert-input-to-output-tensor-recap



BERT' [CLS]. .


bert-output-tensor-selector


, 3d , 2d :


#        ,      
features = last_hidden_states[0][:,0,:].numpy()

features 2d numpy, .


bert-output-cls-senteence-embeddings


, BERT'



, BERT', , . 768 , .


تسميات الانحدار اللوجستي - مجموعة البيانات - الملصقات


, . BERT' [CLS] ( #0), (. ). , – , BERT/DistilBERT


, , .


labels = df[1]
train_features, test_features, train_labels, test_labels = train_test_split(features, labels)

:


بيرت - ديسلبرت - قطار - اختبار - انقسام - جملة - تضمين


.


lr_clf = LogisticRegression()
lr_clf.fit(train_features, train_labels)

, .


lr_clf.score(test_features, test_labels)

, (accuracy) – 81%.



: – 96.8. DistilBERT , – , . BERT , ( downstream task). DistilBERT' 90.7. BERT' 94.9.



Colab.


هذا كل شئ! حدث معرفة أولى جيدة. والخطوة التالية هي الرجوع إلى الوثائق ومحاولة الضبط بنفسك. يمكنك أيضًا الرجوع قليلاً والانتقال من distilBERT إلى BERT ومعرفة كيفية عملها.


بفضل Clément Delangue و Victor Sanh وفريق Huggingface الذين قدموا تعليقات حول الإصدارات السابقة من هذا الدليل.


المؤلفون



All Articles