Rumah >Peranti teknologi >AI >Meningkatkan Analisis Sentimen dengan Modernbert
Sejak pengenalannya pada tahun 2018, Bert telah mengubah pemprosesan bahasa semulajadi. Ia berfungsi dengan baik dalam tugas -tugas seperti analisis sentimen, menjawab soalan, dan kesimpulan bahasa. Menggunakan latihan dua arah dan penangkapan diri berasaskan pengubah, Bert memperkenalkan cara baru untuk memahami hubungan antara kata-kata dalam teks. Walau bagaimanapun, walaupun kejayaannya, Bert mempunyai batasan. Ia berjuang dengan kecekapan pengiraan, mengendalikan teks yang lebih panjang, dan memberikan tafsiran. Ini membawa kepada pembangunan Modernbert, model yang direka untuk menangani cabaran -cabaran ini. Modernbert meningkatkan kelajuan pemprosesan, mengendalikan teks yang lebih lama, dan menawarkan lebih banyak ketelusan untuk pemaju. Dalam artikel ini, kami akan meneroka cara menggunakan Modernbert untuk analisis sentimen, menonjolkan ciri -ciri dan penambahbaikannya ke atas Bert.
Jadual Kandungan Apa itu Bert? Soalan
Modernbert menangani batasan-batasan ini dengan menggabungkan algoritma yang lebih efisien seperti Perhatian Flash dan Perhatian berganti lokal-global , yang mengoptimumkan penggunaan memori dan meningkatkan kelajuan pemprosesan. Di samping itu, Modernbert memperkenalkan peningkatan untuk mengendalikan panjang konteks yang lebih lama dengan lebih berkesan dengan mengintegrasikan teknik -teknik seperti embeddings posisional berputar (tali) untuk menyokong panjang konteks yang lebih panjang. Ia meningkatkan tafsiran dengan bertujuan untuk menjadi lebih telus dan mesra pengguna, menjadikannya lebih mudah bagi pemaju untuk menyahpepijat dan menyesuaikan model kepada tugas-tugas tertentu. Tambahan pula, Modernbert menggabungkan kemajuan dalam pemikiran akal sehat, membolehkan ia lebih memahami konteks, nuansa, dan hubungan logik di luar maklumat eksplisit yang disediakan. Ia sesuai untuk GPU biasa seperti Nvidia T4, A100, dan RTX 4090.
Modernbert dilatih dalam data dari pelbagai sumber bahasa Inggeris, termasuk dokumen web, kod, dan artikel saintifik. Ia dilatih pada 2 trilion token unik, tidak seperti pengulangan standard 20-40 yang popular dalam pengekod sebelumnya.
ia dikeluarkan dalam saiz berikut:
modenbert-base yang mempunyai 22 lapisan dan 149 juta parameter
Perhatian Flash
Perhatian bergantian tempatan-global
Input penuh dihadiri hanya selepas setiap lapisan ketiga. Ini adalah perhatian global.
Embeddings Posisional Rotary (Tali) adalah teknik model pengubah yang mengkodekan kedudukan token dalam urutan menggunakan matriks putaran. Ia menggabungkan maklumat kedudukan mutlak dan relatif, menyesuaikan mekanisme perhatian untuk memahami perintah dan jarak antara token. Tali mengkodekan kedudukan mutlak token menggunakan matriks putaran dan juga mencatat maklumat kedudukan relatif atau perintah dan jarak antara token.
pembungkusan yang tidak berpengalaman dan urutan adalah teknik yang direka untuk mengoptimumkan memori dan kecekapan pengiraan.
mari kita melaksanakan analisis sentimen menggunakan Modernbert secara praktikal. Kami akan melakukan tugas analisis sentimen menggunakan Modernbert. Analisis sentimen adalah jenis tugas klasifikasi teks tertentu yang bertujuan untuk mengklasifikasikan teks (contohnya ulasan) menjadi positif atau negatif.
dataset yang kami gunakan ialah dataset ulasan filem IMDB untuk mengklasifikasikan ulasan sama ada sentimen positif atau negatif.
nota:
#install libraries !pip install git+https://github.com/huggingface/transformers.git datasets accelerate scikit-learn -Uqq !pip install -U transformers>=4.48.0 import torch from transformers import AutoTokenizer, AutoModelForSequenceClassification, TrainingArguments, Trainer,AutoModelForMaskedLM,AutoConfig from datasets import load_dataset
Langkah 2: Muatkan dataset IMDB menggunakan fungsi LOAD_DATASET
#Load the dataset from datasets import load_dataset imdb = load_dataset("imdb") #print the first test sample imdb["test"][0]Langkah 3: Tokenisasi
okenize dataset menggunakan tokenizer modenbert-base pra-terlatih. Proses ini menukarkan teks ke dalam input berangka yang sesuai untuk model. Perintah "tokenized_test_dataset [0]" akan mencetak sampel pertama dataset ujian tokenized termasuk input tokenized seperti ID input dan label.
#install libraries !pip install git+https://github.com/huggingface/transformers.git datasets accelerate scikit-learn -Uqq !pip install -U transformers>=4.48.0 import torch from transformers import AutoTokenizer, AutoModelForSequenceClassification, TrainingArguments, Trainer,AutoModelForMaskedLM,AutoConfig from datasets import load_dataset
Sediakan dataset dengan menamakan semula lajur label sentimen (label) ke 'label' dan mengeluarkan lajur yang tidak perlu.
#Load the dataset from datasets import load_dataset imdb = load_dataset("imdb") #print the first test sample imdb["test"][0]
mari kita gunakan f1_score sebagai metrik untuk menilai model kami. Kami akan menentukan fungsi untuk memproses ramalan penilaian, dan mengira skor F1 mereka. Ini membolehkan kita membandingkan ramalan model berbanding label yang benar.
#initialize the tokenizer and the model tokenizer = AutoTokenizer.from_pretrained("answerdotai/ModernBERT-base") model = AutoModelForMaskedLM.from_pretrained("answerdotai/ModernBERT-base") #define the tokenizer function def tokenizer_function(example): return tokenizer( example["text"], padding="max_length", truncation=True, max_length=512, ## max length can be modified return_tensors="pt" ) #tokenize training and testing data set based on above defined tokenizer function tokenized_train_dataset = imdb["train"].map(tokenizer_function, batched=True) tokenized_test_dataset = imdb["test"].map(tokenizer_function, batched=True) #print the tokenized output of first test sample print(tokenized_test_dataset[0])
Tentukan hyperparameter dan konfigurasi lain untuk penalaan yang baik model menggunakan Latihan Latihan Face Hugging. Marilah kita memahami beberapa hujah:
#initialize the model config = AutoConfig.from_pretrained("answerdotai/ModernBERT-base") model = AutoModelForSequenceClassification.from_config(config)
Gunakan kelas jurulatih untuk melaksanakan proses latihan dan penilaian model.
#data preparation step - train_dataset = tokenized_train_dataset.remove_columns(['text']).rename_column('label', 'labels') test_dataset = tokenized_test_dataset.remove_columns(['text']).rename_column('label', 'labels')
import numpy as np from sklearn.metrics import f1_score # Metric helper method def compute_metrics(eval_pred): predictions, labels = eval_pred predictions = np.argmax(predictions, axis=1) score = f1_score( labels, predictions, labels=labels, pos_label=1, average="weighted" ) return {"f1": float(score) if score == 1 else score}
Langkah 10: Simpan model yang disesuaikan dengan baik
Langkah 11: Ramalkan sentimen ulasan
#define training arguments train_bsz, val_bsz = 32, 32 lr = 8e-5 betas = (0.9, 0.98) n_epochs = 2 eps = 1e-6 wd = 8e-6 training_args = TrainingArguments( output_dir=f"fine_tuned_modern_bert", learning_rate=lr, per_device_train_batch_size=train_bsz, per_device_eval_batch_size=val_bsz, num_train_epochs=n_epochs, lr_scheduler_type="linear", optim="adamw_torch", adam_beta1=betas[0], adam_beta2=betas[1], adam_epsilon=eps, logging_strategy="epoch", eval_strategy="epoch", save_strategy="epoch", load_best_model_at_end=True, bf16=True, bf16_full_eval=True, push_to_hub=False, )di sini: 0 Menunjukkan semakan negatif dan 1 menunjukkan kajian positif. Untuk contoh baru saya, output harus [0,1] kerana membosankan menunjukkan kajian negatif (0) dan spektakuler menunjukkan pendapat positif sehingga 1 akan diberikan sebagai output.
#Create a Trainer instance trainer = Trainer( model=model, # The pre-trained model args=training_args, # Training arguments train_dataset=train_dataset, # Tokenized training dataset eval_dataset=test_dataset, # Tokenized test dataset compute_metrics=compute_metrics, # Personally, I missed this step, my output won't show F1 score )Batasan Modernbert
Walaupun Modernbert membawa beberapa penambahbaikan ke atas Bert tradisional, ia masih mempunyai beberapa batasan:
Modernbert mengambil asas Bert dan memperbaikinya dengan pemprosesan yang lebih cepat, pengendalian teks panjang yang lebih baik, dan tafsiran yang dipertingkatkan. Walaupun ia masih menghadapi cabaran seperti kecenderungan data latihan dan kerumitan, ia merupakan lonjakan yang ketara dalam NLP. Modernbert membuka kemungkinan baru untuk tugas -tugas seperti analisis sentimen dan klasifikasi teks, menjadikan pemahaman bahasa maju lebih efisien dan boleh diakses.
Rujukan:
Media yang ditunjukkan dalam artikel ini tidak dimiliki oleh Analytics Vidhya dan digunakan pada budi bicara penulis. Soalan Lazim
Q1. Apakah arkitek encoder sahaja?Q3. Apakah Mekanisme Perhatian?
Q4. Apakah perhatian bergantian?
Ans. Mekanisme ini bergantian antara memberi tumpuan kepada konteks tempatan dan global dalam urutan teks. Perhatian tempatan menyoroti perkataan atau frasa bersebelahan, mengumpul maklumat halus, sedangkan perhatian global mengiktiraf corak dan hubungan keseluruhan di seluruh teks. Q5. Apakah embeddings berpotensi berpotensi? Bagaimanakah mereka berbeza daripada embeddings kedudukan tetap?Q6. Apakah aplikasi yang berpotensi Modernbert? Ans. Sesetengah aplikasi Modernbert boleh berada dalam bidang klasifikasi teks, analisis sentimen, menjawab soalan, pengiktirafan entiti bernama, analisis teks undang-undang, pemahaman kod dan lain-lain
Q7. Apa dan mengapa Wandb API diperlukan? Ans. Weights & Biases (W & B) adalah platform untuk menjejaki, menggambarkan, dan berkongsi eksperimen ML. Ia membantu dalam mengesan metrik model, menggambarkan data eksperimen, hasil berkongsi dan banyak lagi. Ia membantu memantau metrik seperti ketepatan, menggambarkan kemajuan, menyesuaikan hiperparameter, menjejaki versi model dan lain -lain
Atas ialah kandungan terperinci Meningkatkan Analisis Sentimen dengan Modernbert. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!