
Tidak ada sihir tentang sihir. Penyihir hanya memahami sesuatu yang sederhana yang tampaknya tidak sederhana atau alami bagi audiens yang tidak terlatih. Setelah Anda belajar cara memegang kartu sambil membuat tangan Anda terlihat kosong, Anda hanya perlu berlatih sebelum Anda juga dapat "melakukan sihir." - Jeffrey Friedl dalam buku menguasai ekspresi reguler
Catatan: Harap angkat masalah untuk saran, koreksi, dan umpan balik.
Sebagian besar sampel kode dilakukan dengan menggunakan buku catatan Jupyter (menggunakan Colab). Jadi setiap kode dapat dijalankan secara mandiri.
Topik berikut telah dieksplorasi:
Catatan: Tingkat kesulitan telah ditetapkan sesuai dengan pemahaman saya.
| Tokenisasi | Word Embeddings - Word2Vec | Kata embeddings - sarung tangan | Word Embeddings - Elmo |
| Rnn, lstm, gru | Mengemas urutan empuk | Mekanisme Perhatian - Luong | Mekanisme Perhatian - Bahdanau |
| Jaringan Pointer | Transformator | GPT-2 | Bert |
| Topic Modeling - LDA | Analisis Komponen Utama (PCA) | Bayes yang naif | Augmentasi data |
| Embeddings kalimat |
Proses mengkonversi data tekstual ke token, adalah salah satu langkah terpenting dalam NLP. Tokenisasi menggunakan metode berikut telah dieksplorasi:
Sebuah kata yang menanamkan adalah representasi yang dipelajari untuk teks di mana kata -kata yang memiliki makna yang sama memiliki representasi yang sama. Pendekatan inilah untuk mewakili kata -kata dan dokumen yang dapat dianggap sebagai salah satu terobosan utama pembelajaran mendalam pada masalah pemrosesan bahasa alami yang menantang.

Word2vec adalah salah satu embedding kata pretrain yang paling populer yang dikembangkan oleh Google. Bergantung pada cara embeddings dipelajari, Word2vec diklasifikasikan menjadi dua pendekatan:

Sarung tangan adalah metode lain yang umum digunakan untuk mendapatkan embeddings pra-terlatih. Sarung tangan bertujuan untuk mencapai dua tujuan:
Elmo adalah representasi kata yang dikontekstualisasikan dalam yang model:
Vektor kata ini adalah fungsi yang dipelajari dari keadaan internal model bahasa dua arah yang mendalam (BILM), yang pra-terlatih pada korpus teks besar.

Jaringan Berulang - RNN, LSTM, GRU telah terbukti menjadi salah satu unit terpenting dalam aplikasi NLP karena arsitekturnya. Ada banyak masalah di mana sifat urutan perlu diingat seperti untuk memprediksi emosi dalam adegan, adegan sebelumnya perlu diingat.

Saat melatih RNN (LSTM atau GRU atau Vanilla-RNN), sulit untuk batch urutan panjang variabel. Idealnya kita akan membawakan semua urutan ke panjang tetap dan akhirnya melakukan perhitungan yang tidak perlu. Bagaimana kita bisa mengatasi ini? Pytorch menyediakan fungsionalitas pack_padded_sequences .

Mekanisme perhatian lahir untuk membantu menghafal kalimat sumber panjang dalam Seural Machine Translation (NMT). Daripada membangun satu vektor konteks tunggal dari keadaan tersembunyi terakhir enkoder, perhatian digunakan untuk lebih fokus pada bagian -bagian yang relevan dari input sambil mendekodekan kalimat. Vektor konteks akan dibuat dengan mengambil output encoder dan current output dari decoder RNN.

Skor perhatian dapat dihitung dalam tiga cara. dot , general dan concat .

Perbedaan utama antara perhatian Bahdanau & Luong adalah cara vektor konteks dibuat. Vektor konteks akan dibuat dengan mengambil output encoder dan previous hidden state dari decoder RNN. Di mana dalam perhatian luong, vektor konteks akan dibuat dengan mengambil output encoder dan current hidden state dari decoder RNN.
Setelah konteks dihitung, ia dikombinasikan dengan embedding input decoder dan diberi makan sebagai input ke decoder RNN.

Perhatian Bahdanau juga disebut sebagai perhatian additive .

Transformer, sebuah model arsitektur menghindari kekambuhan dan sebaliknya mengandalkan sepenuhnya pada mekanisme perhatian untuk menarik ketergantungan global antara input dan output.

Tugas pemrosesan bahasa alami, seperti menjawab pertanyaan, terjemahan mesin, pemahaman membaca, dan peringkasan, biasanya didekati dengan pembelajaran yang diawasi pada dataset khusus. Kami menunjukkan bahwa model bahasa mulai mempelajari tugas -tugas ini tanpa pengawasan eksplisit ketika dilatih pada dataset baru jutaan halaman web yang disebut WebText. Model terbesar kami, GPT-2, adalah transformator parameter 1.5b yang mencapai hasil canggih pada 7 dari 8 set data pemodelan bahasa yang diuji dalam pengaturan nol-shot tetapi masih mengatasi webtext. Sampel dari model mencerminkan perbaikan ini dan berisi paragraf teks yang koheren. Temuan ini menunjukkan jalur yang menjanjikan menuju membangun sistem pemrosesan bahasa yang belajar melakukan tugas dari demonstrasi mereka yang terjadi secara alami.

GPT-2 menggunakan arsitektur transformator hanya 12-lapis.


Bert menggunakan arsitektur transformator untuk meng -pengkodean kalimat.

Output jaringan pointer adalah diskrit dan sesuai dengan posisi dalam urutan input
Jumlah kelas target di setiap langkah output tergantung pada panjang input, yang bervariasi.
Ini berbeda dari upaya perhatian sebelumnya dalam hal itu, alih -alih menggunakan perhatian untuk memadukan unit tersembunyi dari encoder ke vektor konteks pada setiap langkah decoder, ia menggunakan perhatian sebagai penunjuk untuk memilih anggota urutan input sebagai output.

Salah satu aplikasi utama pemrosesan bahasa alami adalah untuk secara otomatis mengekstrak topik apa yang dibahas orang dari volume teks yang besar. Beberapa contoh teks besar dapat menjadi feed dari media sosial, ulasan pelanggan tentang hotel, film, dll, umpan balik pengguna, berita, email keluhan pelanggan dll.
Mengetahui apa yang orang bicarakan dan memahami masalah dan pendapat mereka sangat berharga bagi bisnis, administrator, kampanye politik. Dan sangat sulit untuk membaca secara manual volume besar dan mengkompilasi topik.
Dengan demikian diperlukan algoritma otomatis yang dapat membaca dokumen teks dan secara otomatis menghasilkan topik yang dibahas.
Dalam buku catatan ini, kami akan mengambil contoh nyata dari 20 Newsgroups dan menggunakan LDA untuk mengekstrak topik yang dibahas secara alami.

Pendekatan LDA untuk pemodelan topik adalah menganggap setiap dokumen sebagai kumpulan topik dalam proporsi tertentu. Dan setiap topik sebagai kumpulan kata kunci, sekali lagi, dalam proporsi tertentu.
Setelah Anda memberikan algoritma dengan jumlah topik, semua yang dilakukannya untuk mengatur ulang distribusi topik dalam dokumen dan kata kunci distribusi dalam topik untuk mendapatkan komposisi yang baik dari distribusi kata-kata key-words.
PCA pada dasarnya adalah teknik pengurangan dimensi yang mengubah kolom dataset menjadi fitur set baru. Ini melakukan ini dengan menemukan serangkaian arah baru (seperti sumbu x dan y) yang menjelaskan variabilitas maksimum dalam data. Sistem koordinat sistem baru ini disebut komponen utama (PC).

Praktis PCA digunakan karena dua alasan:
Dimensionality Reduction : Informasi yang didistribusikan di sejumlah besar kolom diubah menjadi komponen utama (PC) sehingga beberapa PC pertama dapat menjelaskan potongan yang cukup besar dari total informasi (varians). PC ini dapat digunakan sebagai variabel penjelas dalam model pembelajaran mesin.
Visualize Data : Visualisasi pemisahan kelas (atau kelompok) sulit untuk data dengan lebih dari 3 dimensi (fitur). Dengan dua PC pertama itu sendiri, biasanya dimungkinkan untuk melihat pemisahan yang jelas.
Klasifikasi Bayes yang naif adalah model pembelajaran mesin probabilistik yang digunakan untuk tugas klasifikasi. Inti dari classifier didasarkan pada teorema Bayes.

Menggunakan Teorema Bayes, kita dapat menemukan probabilitas A yang terjadi, mengingat bahwa B telah terjadi. Di sini, B adalah bukti dan A adalah hipotesis. Asumsi yang dibuat di sini adalah bahwa prediktor/fitur independen. Itu adalah adanya satu fitur tertentu tidak mempengaruhi yang lain. Oleh karena itu disebut naif.
Jenis Klasifikasi Bayes Naif :
Multinomial Naive Bayes : Ini sebagian besar digunakan ketika variabel diskrit (seperti kata). Fitur/prediktor yang digunakan oleh classifier adalah frekuensi kata -kata yang ada dalam dokumen.
Gaussian Naive Bayes : Ketika prediktor mengambil nilai kontinu dan tidak diskrit, kami berasumsi bahwa nilai -nilai ini disampel dari distribusi Gaussian.
Bernoulli Naive Bayes : Ini mirip dengan Bayes naif multinomial tetapi prediktornya adalah variabel boolean. Parameter yang kami gunakan untuk memprediksi variabel kelas hanya mengambil nilai ya atau tidak, misalnya jika kata terjadi dalam teks atau tidak.
Menggunakan dataset 20NewSgroup, algoritma Naive Bayes dieksplorasi untuk melakukan klasifikasi.
Augmentasi data menggunakan teknik berikut dieksplorasi:

Arsitektur baru yang disebut Sbert dieksplorasi. Arsitektur jaringan Siam memungkinkan vektor berukuran tetap untuk kalimat input dapat diturunkan. Menggunakan ukuran kesamaan seperti cosinstinsimilaritas atau jarak manhatten / euclidean, kalimat yang sama secara semantik dapat ditemukan.

| Analisis Sentimen - IMDB | Klasifikasi Sentimen - Hinglish | Klasifikasi Dokumen |
| Duplikat Klasifikasi Pasangan Pertanyaan - Quora | POS Tagging | Inferensi Bahasa Alami - Snli |
| Klasifikasi Komentar Beracun | Kalimat yang benar secara tata bahasa - Cola | Ner Tagging |
Analisis sentimen mengacu pada penggunaan pemrosesan bahasa alami, analisis teks, linguistik komputasi, dan biometrik untuk secara sistematis mengidentifikasi, mengekstrak, mengukur, dan mempelajari keadaan afektif dan informasi subyektif.
Varien berikut telah dieksplorasi:
RNN digunakan untuk memproses dan mengidentifikasi sentimen.

Setelah mencoba RNN dasar yang memberikan test_accuracy kurang dari 50%, teknik berikut telah dieksperimen dan test_accuracy di atas 88% tercapai.
Teknik yang digunakan:

Perhatian membantu dalam fokus pada input yang relevan saat memprediksi sentimen input. Perhatian Bahdanau digunakan dengan mengambil output LSTM dan menggabungkan status tersembunyi ke depan & ke belakang. Tanpa menggunakan kata embeddings pra-terlatih, akurasi uji 88% tercapai.

Bert memperoleh hasil canggih baru pada sebelas tugas pemrosesan bahasa alami. Pembelajaran transfer di NLP telah dipicu setelah rilis Model Bert. Menggunakan Bert untuk melakukan analisis sentimen dieksplorasi.

Bahasa pencampuran, juga dikenal sebagai pencampuran kode, adalah norma dalam masyarakat multibahasa. Orang multibahasa, yang merupakan penutur bahasa Inggris non-pribumi, cenderung mencampur kode menggunakan pengetikan fonetik berbasis bahasa Inggris dan penyisipan Anglisisme dalam bahasa utama mereka.
Tugasnya adalah memprediksi sentimen dari tweet yang dicampur kode. Label sentimen positif, negatif, atau netral, dan bahasa yang dicampur kode adalah bahasa Inggris-Hindi. (Sentimix)
Varien berikut telah dieksplorasi:
Menggunakan model MLP sederhana, F1 score of 0.58 dicapai pada data uji

Setelah menjelajahi model MLP dasar, model LSTM digunakan untuk prediksi sentimen dan skor F1 0.57 tercapai.

Hasilnya sebenarnya kurang dibandingkan dengan model MLP dasar. Salah satu alasannya mungkin LSTM tidak dapat mempelajari hubungan di antara kata-kata dalam sebuah kalimat karena sifat data yang sangat beragam dari kode yang dicampur.
Karena LSTM tidak dapat mempelajari hubungan antara kata-kata dalam kalimat yang dicampur kode karena sifat data yang sangat beragam dari kode yang dicampur kode dan tidak ada embedding pra-terlatih yang digunakan, skor F1 lebih sedikit.
Untuk mengurangi masalah ini model XLM-Roberta (yang telah dilatih sebelumnya pada 100 bahasa) digunakan untuk menyandikan kalimat. Untuk menggunakan model XLM-Roberta, kalimat harus dalam bahasa yang tepat. Jadi pertama -tama kata -kata Hinglish perlu dikonversi ke bentuk Hindi (Devanagari).

Skor F1 0.59 tercapai. Metode untuk memperbaiki ini akan dieksplorasi nanti.
Output akhir dari model XLM-Roberta digunakan sebagai embeddings input ke model LSTM dua arah. Lapisan perhatian, yang mengambil output dari lapisan LSTM, menghasilkan representasi input tertimbang, yang kemudian dilewatkan melalui classifier untuk memprediksi sentimen kalimat.

Skor F1 0.64 tercapai.
Dengan cara yang sama bahwa filter 3x3 dapat melihat di atas tambalan gambar, filter 1x2 dapat melihat lebih dari 2 kata berurutan dalam sepotong teks, yaitu bi-gram. Dalam model CNN ini, kami sebaliknya akan menggunakan beberapa filter dari berbagai ukuran yang akan melihat bi-gram (filter 1x2), tri-gram (filter 1x3) dan/atau n-gram (filter 1xn) dalam teks.
Intuisi di sini adalah bahwa penampilan bi-gram, tri-gram, dan n-gram tertentu dalam ulasan akan menjadi indikasi yang baik dari sentimen akhir.

Skor F1 0.69 tercapai.
CNN menangkap ketergantungan lokal di mana sebagai RNN menangkap ketergantungan global. Dengan menggabungkan keduanya, kita bisa mendapatkan pemahaman yang lebih baik tentang data. Ensembling model CNN dan model-syair-gru-model out melakukan yang lain.

Skor F1 0.71 tercapai. (5 teratas di papan peringkat).
Klasifikasi dokumen atau kategorisasi dokumen adalah masalah dalam ilmu perpustakaan, ilmu informasi dan ilmu komputer. Tugasnya adalah menetapkan dokumen ke satu atau lebih kelas atau kategori.
Varien berikut telah dieksplorasi:
Jaringan perhatian hierarkis (HAN) mempertimbangkan struktur hierarkis dokumen (dokumen - kalimat - kata -kata) dan termasuk mekanisme perhatian yang dapat menemukan kata dan kalimat paling penting dalam dokumen sambil mempertimbangkan konteks.

Model HAN dasar berlebihan dengan cepat. Untuk mengatasi hal ini, teknik -teknik seperti Embedding Dropout , Locked Dropout dieksplorasi. Ada satu lagi teknik lain yang disebut Weight Dropout yang tidak diterapkan (beri tahu saya jika ada sumber daya yang baik untuk mengimplementasikan ini). Glove embeddings kata pra-terlatih juga digunakan sebagai pengganti inisialisasi acak. Karena perhatian dapat dilakukan pada tingkat kalimat dan tingkat kata, kita dapat memvisualisasikan kata -kata mana yang penting dalam kalimat dan kalimat mana yang penting dalam dokumen.



QQP berarti pasangan pertanyaan Quora. Tujuan dari tugas ini adalah untuk sepasang pertanyaan yang diberikan; Kita perlu menemukan apakah pertanyaan -pertanyaan itu secara semantik mirip satu sama lain atau tidak.
Varien berikut telah dieksplorasi:
Algoritma perlu mengambil sepasang pertanyaan sebagai input dan harus menghasilkan kesamaannya. Jaringan Siam digunakan. Siamese neural network (kadang -kadang disebut jaringan saraf kembar) adalah jaringan saraf buatan yang menggunakan same weights saat bekerja bersama -sama pada dua vektor input yang berbeda untuk menghitung vektor output yang sebanding.

Setelah mencoba model Siam, Bert dieksplorasi untuk melakukan deteksi pasangan pertanyaan Quora. Bert mengambil pertanyaan 1 dan pertanyaan 2 sebagai input yang dipisahkan oleh token [SEP] dan klasifikasi dilakukan dengan menggunakan representasi akhir token [CLS] .

Part-of-speech (POS) Tagging, adalah tugas memberi label setiap kata dalam kalimat dengan bagian pidato yang sesuai.
Varien berikut telah dieksplorasi:
Kode ini mencakup alur kerja dasar. Kami akan belajar cara: memuat data, membuat pemisahan kereta/tes/validasi, membangun kosakata, membuat iterator data, menentukan model dan mengimplementasikan penandaan kereta/evaluasi/uji waktu dan run time (inferensi).
Model yang digunakan adalah jaringan LSTM dua lapisan dua lapisan

Setelah mencoba pendekatan RNN, penandaan POS dengan arsitektur berbasis transformator dieksplorasi. Karena transformator berisi encoder dan decoder dan untuk tugas pelabelan urutan hanya Encoder yang cukup. Karena data kecil memiliki 6 lapisan encoder akan overfit data. Jadi model encoder transformator 3-lapis digunakan.

Setelah mencoba penandaan POS dengan encoder transformer, penandaan POS dengan model Bert terlatih dieksploitasi. Itu mencapai akurasi tes 91% .

Tujuan dari Natural Language Inference (NLI), tugas pemrosesan bahasa alami yang dipelajari secara luas, adalah untuk menentukan apakah satu pernyataan yang diberikan (suatu premis) secara semantik mensyaratkan pernyataan lain yang diberikan (hipotesis).
Varien berikut telah dieksplorasi:
Model dasar dengan jaringan bilstm siam diterapkan

Ini dapat diperlakukan sebagai pengaturan garis dasar. Akurasi tes 76.84% tercapai.
Dalam buku catatan sebelumnya, keadaan tersembunyi terakhir dari premis dan hipotesis sebagai representasi dari LSTM. Sekarang alih -alih mengambil status tersembunyi akhir, perhatian akan dihitung di semua token input dan vektor tertimbang akhir diambil sebagai representasi premis dan hipotesis.

Akurasi tes meningkat dari 76.84% menjadi 79.51% .
Transformer Encoder digunakan untuk menyandikan premis dan hipotesis. Setelah kalimat dijatuhkan melalui encoder, penjumlahan semua token dianggap sebagai representasi akhir (varian lain dapat dieksplorasi). Akurasi model kurang dibandingkan dengan varian RNN.

NLI dengan Model Pangkalan Bert dieksplorasi. Bert mengambil premis dan hipotesis sebagai input yang dipisahkan oleh token [SEP] dan klasifikasi dilakukan dengan menggunakan representasi akhir token [CLS] .

Distillation : Teknik yang dapat Anda gunakan untuk mengompres model besar, yang disebut teacher , menjadi model yang lebih kecil, yang disebut student . Siswa berikut, model guru digunakan untuk melakukan distilasi pada NLI.

Membahas hal -hal yang Anda sayangi bisa jadi sulit. Ancaman penyalahgunaan dan pelecehan online berarti bahwa banyak orang berhenti mengekspresikan diri dan menyerah mencari pendapat yang berbeda. Platform berjuang untuk secara efektif memfasilitasi percakapan, membuat banyak komunitas membatasi atau sepenuhnya mematikan komentar pengguna.
Anda diberikan sejumlah besar komentar Wikipedia yang telah diberi label oleh penilai manusia untuk perilaku beracun. Jenis toksisitasnya adalah:
Varien berikut telah dieksplorasi:
Model yang digunakan adalah jaringan GRU dua arah.

Akurasi tes 99.42% tercapai. Karena 90% dari data tidak diberi label ke salah satu toksisitas, hanya memprediksi semua data sebagai non-toksik memberikan model akurat 90%. Jadi akurasi bukan metrik yang dapat diandalkan. Metrik ROC AUC yang berbeda diimplementasikan.
Dengan Categorical Cross Entropy sebagai kerugian, skor ROC_AUC dari 0.5 tercapai. Dengan mengubah kerugian menjadi Binary Cross Entropy dan juga memodifikasi model sedikit dengan menambahkan lapisan pooling (maks, rata -rata), skor ROC_AUC meningkat menjadi 0.9873 .

Mengubah klasifikasi komentar beracun menjadi aplikasi menggunakan streamlit. Model pra-terlatih tersedia sekarang.

Dapatkah jaringan saraf buatan memiliki kemampuan untuk menilai penerimaan tata bahasa dari suatu hukuman? Untuk mengeksplorasi tugas ini, dataset corpus of linguistic acceptability (COLA) digunakan. Cola adalah satu set kalimat yang dilabeli secara tata bahasa atau salah.
Varien berikut telah dieksplorasi:
Bert memperoleh hasil canggih baru pada sebelas tugas pemrosesan bahasa alami. Pembelajaran transfer di NLP telah dipicu setelah rilis Model Bert. Dalam buku catatan ini, kami akan mengeksplorasi cara menggunakan Bert untuk mengklasifikasikan apakah suatu kalimat benar secara tata bahasa atau tidak menggunakan dataset cola.

Akurasi 85% dan koefisien korelasi Matthews (MCC) dari 64.1 tercapai.
Distillation : Teknik yang dapat Anda gunakan untuk mengompres model besar, yang disebut teacher , menjadi model yang lebih kecil, yang disebut student . Siswa berikut, model guru digunakan untuk melakukan distilasi pada cola.

Eksperimen berikut telah dicoba:
84.06 , MCC: 61.582.54 , MCC: 5782.92 , MCC: 57.9 Tagging named-entity-engah (NER), adalah tugas memberi label setiap kata dalam kalimat dengan entitas yang sesuai.
Varien berikut telah dieksplorasi:
Kode ini mencakup alur kerja dasar. Kita akan melihat cara: memuat data, membuat pemisahan kereta/pengujian/validasi, membangun kosakata, membuat iterator data, menentukan model dan mengimplementasikan loop kereta/evaluasi/uji dan kereta, uji model.
Model yang digunakan adalah jaringan LSTM dua arah

Dalam kasus penandaan urutan (NER) tag kata saat ini mungkin tergantung pada tag kata sebelumnya. (Mis: New York).
Tanpa CRF, kami hanya akan menggunakan lapisan linier tunggal untuk mengubah output LSTM dua arah menjadi skor untuk setiap tag. Ini dikenal sebagai emission scores , yang merupakan representasi dari kemungkinan kata menjadi tag tertentu.
CRF menghitung tidak hanya skor emisi tetapi juga transition scores , yang merupakan kemungkinan kata menjadi tag tertentu mengingat kata sebelumnya adalah tag tertentu. Oleh karena itu skor transisi mengukur seberapa besar kemungkinan transisi dari satu tag ke tag lainnya.

Untuk decoding, algoritma Viterbi digunakan.
Karena kami menggunakan CRF, kami tidak terlalu memprediksi label yang tepat pada setiap kata karena kami memprediksi urutan label yang tepat untuk urutan kata. Decoding Viterbi adalah cara untuk melakukan hal ini - temukan urutan tag paling optimal dari skor yang dihitung oleh bidang acak bersyarat.

Menggunakan informasi sub-kata dalam tugas penandaan kami karena dapat menjadi indikator tag yang kuat, apakah itu bagian dari ucapan atau entitas. Misalnya, dapat belajar bahwa kata sifat yang umumnya berakhir dengan "-y" atau "-ul", atau tempat-tempat itu sering berakhir dengan "-land" atau "-burg".
Oleh karena itu, model penandaan urutan kami menggunakan keduanya
word-level dalam bentuk kata embeddings.character-level hingga dan termasuk setiap kata di kedua arah. 
Mikro dan rata-rata makro (untuk metrik apa pun) akan menghitung hal-hal yang sedikit berbeda, dan dengan demikian interpretasinya berbeda. Rata-rata makro akan menghitung metrik secara independen untuk setiap kelas dan kemudian mengambil rata-rata (karenanya memperlakukan semua kelas secara setara), sedangkan rata-rata mikro akan mengumpulkan kontribusi semua kelas untuk menghitung metrik rata-rata. Dalam pengaturan klasifikasi multi-kelas, rata-rata mikro lebih disukai jika Anda curiga mungkin ada ketidakseimbangan kelas (yaitu Anda mungkin memiliki lebih banyak contoh satu kelas daripada kelas lain).


Mengubah penandaan NER menjadi aplikasi menggunakan streamlit. Model pra-terlatih (char-bilstm-crf) tersedia sekarang.

Setelah mencoba pendekatan RNN, penandaan NER dengan arsitektur berbasis transformer dieksplorasi. Karena transformator berisi encoder dan decoder dan untuk tugas pelabelan urutan hanya Encoder yang cukup. Model encoder transformator 3-lapis digunakan.

Setelah mencoba penandaan NER dengan encoder transformer, penandaan NER dengan model bert-base-cased pra-terlatih dieksplorasi.

Transformer sendiri tidak memberikan hasil yang baik dibandingkan dengan BILSTM dalam tugas penandaan NER. Menambah lapisan CRF di atas transformator diimplementasikan yang meningkatkan hasil dibandingkan dengan transformator mandiri.

Spacy menyediakan sistem statistik yang sangat efisien untuk NER di Python, yang dapat menetapkan label untuk kelompok token. Ini menyediakan model default yang dapat mengenali berbagai entitas bernama atau numerik, yang meliputi orang, organisasi, bahasa, acara, dll.

Terlepas dari entitas default ini, Spacy juga memberi kita kebebasan untuk menambahkan kelas sewenang -wenang ke model NER, dengan melatih model untuk memperbaruinya dengan contoh terlatih yang lebih baru.
2 Entitas baru yang disebut ACTIVITY dan SERVICE dalam data domain tertentu (Bank) dibuat dan dilatih dengan beberapa sampel pelatihan.

| Generasi Nama | Terjemahan mesin | Generasi ucapan |
| Captioning gambar | Captioning Gambar - Persamaan Lateks | Ringkasan berita |
| Pembuatan subjek email |
Model bahasa LSTM tingkat karakter digunakan. Artinya, kami akan memberikan LSTM sebagian besar nama dan memintanya untuk memodelkan distribusi probabilitas karakter berikutnya dalam urutan yang diberikan urutan karakter sebelumnya. Ini kemudian akan memungkinkan kita untuk menghasilkan nama baru satu karakter sekaligus

Machine Translation (MT) adalah tugas secara otomatis mengubah satu bahasa alami menjadi yang lain, menjaga makna teks input, dan menghasilkan teks yang lancar dalam bahasa output. Idealnya, urutan bahasa sumber diterjemahkan ke dalam urutan bahasa target. Tugasnya adalah mengonversi kalimat dari German to English .
Varien berikut telah dieksplorasi:
Model urutan-ke-urutan (SEQ2SEQ) yang paling umum adalah model encoder-decoder, yang biasanya menggunakan jaringan saraf berulang (RNN) untuk mengkodekan kalimat sumber (input) ke dalam vektor tunggal. Dalam buku catatan ini, kami akan merujuk vektor tunggal ini sebagai vektor konteks. Kita dapat menganggap vektor konteks sebagai representasi abstrak dari seluruh kalimat input. Vektor ini kemudian diterjemahkan oleh RNN kedua yang belajar untuk menghasilkan kalimat target (output) dengan menghasilkannya satu kata pada satu waktu.

Setelah mencoba terjemahan mesin dasar yang memiliki teks kebingungan 36.68 , teknik berikut telah dieksperimen dan uji kebingungan 7.041 .

Periksa kode di folder applications/generation
Mekanisme perhatian lahir untuk membantu menghafal kalimat sumber panjang dalam Seural Machine Translation (NMT). Daripada membangun satu vektor konteks tunggal dari keadaan tersembunyi terakhir enkoder, perhatian digunakan untuk lebih fokus pada bagian -bagian yang relevan dari input sambil mendekodekan kalimat. Vektor konteks akan dibuat dengan mengambil output encoder dan previous hidden state dari decoder RNN.

Peningkatan seperti masking (mengabaikan perhatian atas input empuk), pengemasan urutan empuk (untuk komputasi yang lebih baik), visualisasi perhatian dan metrik Bleu pada data uji diimplementasikan.

The Transformer, a model architecture eschewing recurrence and instead relying entirely on an attention mechanism to draw global dependencies between input and output is used to do Machine translation from German to English

Run time translation (Inference) and attention visualization are added for the transformer based machine translation model.

Utterance generation is an important problem in NLP, especially in question answering, information retrieval, information extraction, conversation systems, to name a few. It could also be used to create synthentic training data for many NLP problems.
Following varients have been explored:
The most common used model for this kind of application is sequence-to-sequence network. A basic 2 layer LSTM was used.

The attention mechanism will help in memorizing long sentences. Rather than building a single context vector out of the encoder's last hidden state, attention is used to focus more on the relevant parts of the input while decoding a sentence. The context vector will be created by taking encoder outputs and the hidden state of the decoder rnn.
After trying the basic LSTM apporach, Utterance generation with attention mechanism was implemented. Inference (run time generation) was also implemented.

While generating the a word in the utterance, decoder will attend over encoder inputs to find the most relevant word. This process can be visualized.

One of the ways to mitigate the repetition in the generation of utterances is to use Beam Search. By choosing the top-scored word at each step (greedy) may lead to a sub-optimal solution but by choosing a lower scored word that may reach an optimal solution.
Instead of greedily choosing the most likely next step as the sequence is constructed, the beam search expands all possible next steps and keeps the k most likely, where k is a user-specified parameter and controls the number of beams or parallel searches through the sequence of probabilities.

Repetition is a common problem for sequenceto-sequence models, and is especially pronounced when generating a multi-sentence text. In coverage model, we maintain a coverage vector c^t , which is the sum of attention distributions over all previous decoder timesteps

This ensures that the attention mechanism's current decision (choosing where to attend next) is informed by a reminder of its previous decisions (summarized in c^t). This should make it easier for the attention mechanism to avoid repeatedly attending to the same locations, and thus avoid generating repetitive text.
The Transformer, a model architecture eschewing recurrence and instead relying entirely on an attention mechanism to draw global dependencies between input and output is used to do generate utterance from a given sentence. The training time was also lot faster 4x times compared to RNN based architecture.

Added beam search to utterance generation with transformers. With beam search, the generated utterances are more diverse and can be more than 1 (which is the case of the greedy approach). This implemented was better than naive one implemented previously.

Utterance generation using BPE tokenization instead of Spacy is implemented.
Today, subword tokenization schemes inspired by BPE have become the norm in most advanced models including the very popular family of contextual language models like BERT, GPT-2,RoBERTa, etc.
BPE brings the perfect balance between character and word-level hybrid representations which makes it capable of managing large corpora. This behavior also enables the encoding of any rare words in the vocabulary with appropriate subword tokens without introducing any “unknown” tokens.

Converted the Utterance Generation into an app using streamlit. The pre-trained model trained on the Quora dataset is available now.

Till now the Utterance Generation is trained using the Quora Question Pairs dataset, which contains sentences in the form of questions. When given a normal sentence (which is not in a question format) the generated utterances are very poor. This is due the bias induced by the dataset. Since the model is only trained on question type sentences, it fails to generate utterances in case of normal sentences. In order to generate utterances for a normal sentence, COCO dataset is used to train the model. 

Image Captioning is the process of generating a textual description of an image. It uses both Natural Language Processing and Computer Vision techniques to generate the captions.
Flickr8K dataset is used. It contains 8092 images, each image having 5 captions.
Following varients have been explored:
The encoder-decoder framework is widely used for this task. The image encoder is a convolutional neural network (CNN). The decoder is a recurrent neural network(RNN) which takes in the encoded image and generates the caption.
In this notebook, the resnet-152 model pretrained on the ILSVRC-2012-CLS image classification dataset is used as the encoder. The decoder is a long short-term memory (LSTM) network.

In this notebook, the resnet-101 model pretrained on the ILSVRC-2012-CLS image classification dataset is used as the encoder. The decoder is a long short-term memory (LSTM) network. Attention is implemented. Instead of the simple average, we use the weighted average across all pixels, with the weights of the important pixels being greater. This weighted representation of the image can be concatenated with the previously generated word at each step to generate the next word of the caption.

Instead of greedily choosing the most likely next step as the caption is constructed, the beam search expands all possible next steps and keeps the k most likely, where k is a user-specified parameter and controls the number of beams or parallel searches through the sequence of probabilities.

Today, subword tokenization schemes inspired by BPE have become the norm in most advanced models including the very popular family of contextual language models like BERT, GPT-2,RoBERTa, etc.
BPE brings the perfect balance between character and word-level hybrid representations which makes it capable of managing large corpora. This behavior also enables the encoding of any rare words in the vocabulary with appropriate subword tokens without introducing any “unknown” tokens.
BPE was used in order to tokenize the captions instead of using nltk.

An application of image captioning is to convert the the equation present in the image to latex format.
Following varients have been explored:
An application of image captioning is to convert the the equation present in the image to latex format. Basic Sequence-to-Sequence models is used. CNN is used as encoder and RNN as decoder. Im2latex dataset is used. It contains 100K samples comprising of training, validation and test splits.

Generated formulas are not great. Following notebooks will explore techniques to improve it.
Latex code generation using the attention mechanism is implemented. Instead of the simple average, we use the weighted average across all pixels, with the weights of the important pixels being greater. This weighted representation of the image can be concatenated with the previously generated word at each step to generate the next word of the formula.

Added beam search in the decoding process. Also added Positional encoding to the input image and learning rate scheduler.
Converted the Latex formula generation into an app using streamlit.

Automatic text summarization is the task of producing a concise and fluent summary while preserving key information content and overall meaning. Have you come across the mobile app inshorts ? It's an innovative news app that converts news articles into a 60-word summary. And that is exactly what we are going to do in this notebook. The model used for this task is T5 .

Given the overwhelming number of emails, an effective subject line becomes essential to better inform the recipient of the email's content.
Email subject generation using T5 model was explored. AESLC dataset was used for this purpose.

| Topic Identification in News | Covid Article finding |
Topic Identification is a Natural Language Processing (NLP) is the task to automatically extract meaning from texts by identifying recurrent themes or topics.
Following varients have been explored:
LDA's approach to topic modeling is it considers each document as a collection of topics in a certain proportion. And each topic as a collection of keywords, again, in a certain proportion.
Once you provide the algorithm with the number of topics, all it does it to rearrange the topics distribution within the documents and keywords distribution within the topics to obtain a good composition of topic-keywords distribution.
20 Newsgroup dataset was used and only the articles are provided to identify the topics. Topic Modelling algorithms will provide for each topic what are the important words. It is upto us to infer the topic name.

Choosing the number of topics is a difficult job in Topic Modelling. In order to choose the optimal number of topics, grid search is performed on various hypermeters. In order to choose the best model the model having the best perplexity score is choosed.
A good topic model will have non-overlapping, fairly big sized blobs for each topic.

We would clearly expect that the words that appear most frequently in one topic would appear less frequently in the other - otherwise that word wouldn't make a good choice to separate out the two topics. Therefore, we expect the topics to be orthogonal .
Latent Semantic Analysis (LSA) uses SVD. You will sometimes hear topic modelling referred to as LSA.
The SVD algorithm factorizes a matrix into one matrix with orthogonal columns and one with orthogonal rows (along with a diagonal matrix, which contains the relative importance of each factor).

Notes:
Finding the relevant article from a covid-19 research article corpus of 50K+ documents using LDA is explored.
The documents are first clustered into different topics using LDA. For a given query, dominant topic will be found using the trained LDA. Once the topic is found, most relevant articles will be fetched using the jensenshannon distance.
Only abstracts are used for the LDA model training. LDA model was trained using 35 topics.

| Factual Question Answering | Visual Question Answering | Boolean Question Answering |
| Closed Question Answering |
Given a set of facts, question concering them needs to be answered. Dataset used is bAbI which has 20 tasks with an amalgamation of inputs, queries and answers. See the following figure for sample.

Following varients have been explored:
Dynamic Memory Network (DMN) is a neural network architecture which processes input sequences and questions, forms episodic memories, and generates relevant answers.

The main difference between DMN+ and DMN is the improved InputModule for calculating the facts from input sentences keeping in mind the exchange of information between input sentences using a Bidirectional GRU and a improved version of MemoryModule using Attention based GRU model.

Visual Question Answering (VQA) is the task of given an image and a natural language question about the image, the task is to provide an accurate natural language answer.
Following varients have been explored:

The model uses a two layer LSTM to encode the questions and the last hidden layer of VGGNet to encode the images. The image features are then l_2 normalized. Both the question and image features are transformed to a common space and fused via element-wise multiplication, which is then passed through a fully connected layer followed by a softmax layer to obtain a distribution over answers.
To apply the DMN to visual question answering, input module is modified for images. The module splits an image into small local regions and considers each region equivalent to a sentence in the input module for text.
The input module for VQA is composed of three parts, illustrated in below fig:

Boolean question answering is to answer whether the question has answer present in the given context or not. The BoolQ dataset contains the queries for complex, non-factoid information, and require difficult entailment-like inference to solve.

Stanford Question Answering Dataset (SQuAD) is a reading comprehension dataset, consisting of questions posed by crowdworkers on a set of Wikipedia articles, where the answer to every question is a segment of text, or span, from the corresponding reading passage
Following varients have been explored:
The DCN first fuses co-dependent representations of the question and the document in order to focus on relevant parts of both. Then a dynamic pointing decoder iterates over potential answer spans. This iterative procedure enables the model to recover from initial local maxima corresponding to incorrect answers.
The Dynamic Coattention Network has two major parts: a coattention encoder and a dynamic decoder.
CoAttention Encoder : The model first encodes the given document and question separately via the document and question encoder. The document and question encoders are essentially a one-directional LSTM network with one layer. Then it passes both the document and question encodings to another encoder which computes the coattention via matrix multiplications and outputs the coattention encoding from another bidirectional LSTM network.
Dynamic Decoder : Dynamic decoder is also a one-directional LSTM network with one layer. The model runs the LSTM network through several iterations . In each iteration, the LSTM takes in the final hidden state of the LSTM and the start and end word embeddings of the answer in the last iteration and outputs a new hidden state. Then, the model uses a Highway Maxout Network (HMN) to compute the new start and end word embeddings of the answer in each iteration.

Double Cross Attention (DCA) seems to provide better results compared to both BiDAF and Dynamic Co-Attention Network (DCN). The motivation behind this approach is that first we pay attention to each context and question and then we attend those attentions with respect to each other in a slightly similar way as DCN. The intuition is that if iteratively read/attend both context and question, it should help us to search for answers easily.
I have augmented the Dynamic Decoder part from DCN model in-order to have iterative decoding process which helps finding better answer.

| Covid-19 Browser |
There was a kaggle problem on covid-19 research challenge which has over 1,00,000 + documents. This freely available dataset is provided to the global research community to apply recent advances in natural language processing and other AI techniques to generate new insights in support of the ongoing fight against this infectious disease. There is a growing urgency for these approaches because of the rapid acceleration in new coronavirus literature, making it difficult for the medical research community to keep up.
The procedure I have taken is to convert the abstracts into a embedding representation using sentence-transformers . When a query is asked, it will converted into an embedding and then ranked across the abstracts using cosine similarity.

| Song Recommendation |
By taking user's listening queue as a sentence, with each word in that sentence being a song that the user has listened to, training the Word2vec model on those sentences essentially means that for each song the user has listened to in the past, we're using the songs they have listened to before and after to teach our model that those songs somehow belong to the same context.

What's interesting about those vectors is that similar songs will have weights that are closer together than songs that are unrelated.