Rumah >Peranti teknologi >AI >Meningkatkan Analisis Sentimen dengan Modernbert

Meningkatkan Analisis Sentimen dengan Modernbert

Joseph Gordon-Levitt
Joseph Gordon-Levittasal
2025-03-09 09:46:11945semak imbas

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.

Objektif Pembelajaran

  • Pengenalan ringkas kepada Bert dan mengapa Modernbert wujud
  • memahami ciri -ciri modenbert
  • bagaimana praktikal melaksanakan modenbert melalui contoh analisis sentimen
  • Batasan Modernbert
Artikel ini diterbitkan sebagai sebahagian daripada Blogathon Sains Data

Jadual Kandungan Apa itu Bert? Soalan

Apa itu Bert?

    Bert, yang bermaksud perwakilan encoder bidirectional dari Transformers, telah menjadi penukar permainan sejak pengenalannya oleh Google pada tahun 2018. Bert memperkenalkan konsep latihan bidirectional yang membolehkan model memahami konteksnya dengan melihat kata-kata sekitar dalam semua arah. Ini membawa kepada prestasi model yang lebih baik untuk beberapa tugas NLP, termasuk menjawab soalan, analisis sentimen, dan kesimpulan bahasa. Senibina Bert didasarkan pada transformer enkoder sahaja, yang menggunakan mekanisme perhatian diri untuk menimbang pengaruh kata-kata yang berbeza dalam ayat dan hanya mempunyai encoder. Ini bermakna mereka hanya memahami dan mengodkan input, dan tidak membina semula atau menjana output. Oleh itu, Bert sangat baik untuk menangkap hubungan kontekstual dalam teks, menjadikannya salah satu model NLP yang paling berkuasa dan meluas dalam beberapa tahun kebelakangan ini.
  • Apa itu Modernbert?
  • Walaupun kejayaan Bert, ia mempunyai batasan tertentu. Sebahagian daripada mereka adalah:
    • Sumber-sumber pengiraan: Bertis Model yang intensif, intensif memori yang mahal, yang mana tidak dapat digunakan untuk aplikasi masa nyata atau untuk persediaan yang tidak mempunyai infrastruktur pengkomputeran yang dapat diakses.
    • Panjang konteks: Bert mempunyai tetingkap konteks panjang tetap yang menjadi batasan dalam mengendalikan input jarak jauh seperti dokumen yang panjang.
    • Interpretabiliti: Kerumitan model menjadikannya kurang ditafsirkan daripada model yang lebih mudah, yang membawa kepada cabaran dalam debugging dan melakukan pengubahsuaian kepada model.
    • Pencegahan akal: Bert tidak mempunyai pemikiran akal sehat dan berjuang untuk memahami konteks, nuansa, dan penalaran logik di luar maklumat yang diberikan.
    Bert vs Modernbert

    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
    • Modernbert-Large yang mempunyai 28 lapisan dan 395 juta parameter
    • Memahami ciri -ciri Modernbert

    Beberapa ciri unik Modernbert adalah:

    Perhatian Flash

    Ini adalah algoritma baru yang dibangunkan untuk mempercepat mekanisme perhatian model pengubah dari segi masa dan penggunaan memori. Pengiraan perhatian dapat disediakan dengan menyusun semula operasi dan menggunakan jubin dan rekomputer. Jubin membantu memecahkan data besar ke dalam ketulan yang boleh diurus, dan recomputation mengurangkan penggunaan memori dengan mengira semula keputusan pertengahan seperti yang diperlukan. Ini mengurangkan penggunaan memori kuadratik ke linear, menjadikannya lebih efisien untuk urutan yang panjang. Overhead pengiraan mengurangkan. Ia adalah 2-4x lebih cepat daripada mekanisme perhatian tradisional. Perhatian kilat digunakan untuk mempercepatkan latihan dan kesimpulan model pengubah.

    Perhatian bergantian tempatan-global

    Salah satu ciri yang paling novel dari Modernbert adalah perhatian bergantian, bukannya perhatian global yang penuh.

    Input penuh dihadiri hanya selepas setiap lapisan ketiga. Ini adalah perhatian global.
      Sementara itu, semua lapisan lain mempunyai tetingkap gelongsor. Dalam tetingkap gelongsor ini, setiap token hanya menghadiri 128 token terdekat. Ini adalah perhatian tempatan.
    • Embeddings Posisi Rotary (Tali)

      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.

      Unpadding and Sequencing

      pembungkusan yang tidak berpengalaman dan urutan adalah teknik yang direka untuk mengoptimumkan memori dan kecekapan pengiraan.

      • Biasanya padding digunakan untuk mencari token terpanjang, tambahkan token padding yang tidak bermakna untuk mengisi urutan yang lebih pendek untuk menyamai panjangnya. Ini meningkatkan pengiraan pada token yang tidak bermakna. Unpadding menghilangkan token padding yang tidak perlu dari urutan, mengurangkan pengiraan sia -sia.
      • pembungkusan urutan menyusun semula kumpulan teks ke dalam bentuk padat, mengumpulkan urutan yang lebih pendek bersama -sama untuk memaksimumkan penggunaan perkakasan.

      Analisis sentimen menggunakan Modernbert

      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:

      • Saya telah menggunakan A100 GPU untuk pemprosesan lebih cepat di Google Colab. Untuk maklumat lanjut rujuk: .
      • Proses latihan akan memerlukan kunci API WANDB. Anda boleh membuat satu melalui:
      • berat dan bias.
      • Langkah 1: Pasang perpustakaan yang diperlukan

      Pasang perpustakaan yang diperlukan untuk bekerja dengan memeluk transformer muka.

    #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 Meningkatkan Analisis Sentimen dengan Modernbert

    perintah IMDB ["Ujian"] [0] akan mencetak sampel pertama dalam perpecahan ujian Dataset Kajian Filem IMDB i.e Kajian Ujian Pertama bersama -sama dengan label yang berkaitan.

    #Load the dataset
    from datasets import load_dataset
    imdb = load_dataset("imdb")
    #print the first test sample
    imdb["test"][0]
    
    Langkah 3: Tokenisasi

    Meningkatkan Analisis Sentimen dengan Modernbert 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.

    Langkah 4: Inisialisasi model modenbert-asas untuk klasifikasi sentimen

    #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 5: Sediakan 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]
    

    Langkah 6: Tentukan metrik pengiraan

    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])

    Langkah 7: Tetapkan Argumen Latihan

    Tentukan hyperparameter dan konfigurasi lain untuk penalaan yang baik model menggunakan Latihan Latihan Face Hugging. Marilah kita memahami beberapa hujah:

    • train_bsz, val_bsz : Menunjukkan saiz batch untuk latihan dan pengesahan. Saiz batch menentukan bilangan sampel yang diproses sebelum parameter dalaman model dikemas kini.
    • lr : Kadar pembelajaran mengawal pelarasan berat model berkenaan dengan kecerunan kerugian.
    • betas : Ini adalah parameter beta untuk pengoptimuman Adam.
    • n_epochs : bilangan zaman, menunjukkan lulus lengkap melalui keseluruhan dataset latihan.
    • eps : pemalar kecil ditambah kepada penyebut untuk meningkatkan kestabilan berangka dalam pengoptimuman Adam.
    • wd : Berdiri untuk kerosakan berat badan, teknik regularization untuk mengelakkan overfitting dengan menghukum berat besar.
    #initialize the model
    config = AutoConfig.from_pretrained("answerdotai/ModernBERT-base")
    
    model = AutoModelForSequenceClassification.from_config(config)

    Langkah 8: Latihan Model

    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')

    Meningkatkan Analisis Sentimen dengan Modernbert

    Langkah 9: Penilaian

    Menilai model terlatih pada dataset ujian.

    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}

    Meningkatkan Analisis Sentimen dengan Modernbert

    Langkah 10: Simpan model yang disesuaikan dengan baik Meningkatkan Analisis Sentimen dengan Modernbert

    Simpan model dan tokenizer yang disesuaikan untuk digunakan semula.

    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

    Meningkatkan Analisis Sentimen dengan Modernbert Walaupun Modernbert membawa beberapa penambahbaikan ke atas Bert tradisional, ia masih mempunyai beberapa batasan:

    1. Bias data latihan: Ia diterjemahkan pada bahasa Inggeris dan data kod, oleh itu ia tidak dapat dilakukan secara effeciently pada bahasa lain atau teks bukan kod.
    2. Kompleksiti : Peningkatan seni bina dan teknik baru seperti Perhatian Flash dan Rotary Positional Enddings menambah kerumitan kepada model, yang boleh menjadikannya lebih sukar untuk dilaksanakan dan menyesuaikan diri untuk tugas-tugas tertentu.
    3. kelajuan inferensi : manakala perhatian flash meningkatkan kelajuan kesimpulan, menggunakan tetingkap token 8,192 penuh mungkin masih lebih perlahan.

    Kesimpulan

    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.

    Takeaways Key

    • Modernbert meningkatkan Bert dengan menetapkan isu -isu seperti ketidakcekapan dan pengendalian konteks terhad.
    • Ia menggunakan perhatian kilat dan embeddings posisi berputar untuk pemprosesan yang lebih cepat dan sokongan teks yang lebih panjang.
    • Modernbert sangat bagus untuk tugas seperti analisis sentimen dan klasifikasi teks.
    • Ia masih mempunyai beberapa batasan, seperti bias ke arah bahasa Inggeris dan data kod.
    • alat seperti memeluk muka dan wandb memudahkan untuk dilaksanakan dan digunakan.

    Rujukan:

    • Modernbert Blog
    • Dokumentasi Moderbert

    Media yang ditunjukkan dalam artikel ini tidak dimiliki oleh Analytics Vidhya dan digunakan pada budi bicara penulis. Soalan Lazim

    Q1. Apakah arkitek encoder sahaja?

    Ans. Ans. Senibina encoder-only memproses urutan input tanpa menghasilkan urutan output, memberi tumpuan kepada pemahaman dan pengekodan input.

    Q2. Apakah batasan bert? ans. Beberapa batasan Bert termasuk sumber pengiraan yang tinggi, panjang konteks tetap, ketidakcekapan, kerumitan, dan kekurangan pemikiran akal.

    Q3. Apakah Mekanisme Perhatian? Ans. Mekanisme perhatian adalah teknik yang membolehkan model memberi tumpuan kepada bahagian -bahagian tertentu input untuk menentukan bahagian mana yang lebih atau kurang penting.

    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? Ans. Berbeza dengan embeddings kedudukan tetap, yang hanya menangkap kedudukan mutlak, embeddings posisional berputar (tali) menggunakan matriks putaran untuk menyandarkan kedua -dua kedudukan mutlak dan relatif. Tali lebih baik dengan urutan lanjutan.

    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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn