Cara Mencari Sematan untuk Kecocokan Terdekat

Cara Mencari Sematan Untuk Kecocokan Terdekat



Mencari penyematan untuk kecocokan terdekat berarti menemukan penyematan yang memiliki arti paling dekat satu sama lain. Penyematan adalah representasi vektor dari kalimat yang dimasukkan ke model bahasa sebagai input untuk tugas tertentu. Kami akan membahas di sini metode dan teknik yang dapat digunakan untuk menemukan embeddings serupa.

Sintaksis

Ada banyak teknik dan alat yang bisa kita manfaatkan untuk menemukan perbedaan antara embeddings berdasarkan perbedaannya dalam hal kesamaan. Berikut ini adalah metode dan sintaks yang terlibat yang akan kami gunakan untuk menemukan kesamaan penyisipan.







Dari poin-poin tersebut, kita mengetahui model-model yang dapat kita gunakan untuk menemukan kesamaan yang cocok untuk embeddings. Sekarang, kita akan belajar menggunakan masing-masing model ini dan mengimplementasikan masing-masing contoh pada masing-masing model ini.



Contoh 1: Menyematkan Kecocokan Terdekat melalui Penyematan Kata

Sebelum kita menerapkan kata embeddings untuk pencocokan kesamaan, kita perlu tahu tentang kata embeddings. Penyematan kata adalah proses mengubah teks menjadi bentuk vektor (nilai numerik) karena sistem kami hanya memahami input dalam bentuk angka numerik.



Ada beberapa cara lain untuk melakukan tugas ini yang mencakup one-hot encoding, tetapi kami akan menggunakan kata embeddings. Dengan cara ini, penyematan dipelajari oleh model jaringan saraf (mis. Word2vec atau Glove) dari teks. Kata-kata tersebut dipetakan ke ruang vektor berdimensi lebih tinggi. Semua kata yang serupa dalam konteksnya dipetakan ke titik terdekat. Dengan cara ini, penyematan dapat menangkap hubungan dan analogi antara kata-kata yang berbeda dalam teks.





Mari membuat kata yang disematkan untuk sebuah kalimat. Untuk membuat penyematan kata, Python menyediakan kerangka 'gensim'. Gensim adalah paket pustaka yang memungkinkan penggunaan model 'word2vec' yang membantu dalam membuat penyematan. Untuk mengimplementasikan embedding, pertama-tama kita pastikan untuk menginstal gensim pada kompiler Python kita. Kemudian dari gensim kita import model “word2vec”.

Model 'word2vec' adalah sejenis algoritma yang hanya menggunakan dua argumen input di mana argumen pertama membutuhkan teks atau kalimat yang ingin kita buat embedding-nya, dan argumen kedua menentukan jumlah minimum yang menentukan berapa kali minimum sebuah kata diperlukan untuk muncul atau dilihat.



Setelah mengimpor model 'word2vec', kami menentukan 'teks'. Setelah kami menentukan teks, kami kemudian melatih model 'word2vec' ini dengan meneruskannya bersama teks dan menyetel hitungan minimum sama dengan '1'. Sekarang, kami menyebut model 'word2vec.wv.most_similar('consume')' yang terlatih ini dan memberi makan kata yang embeddings terdekatnya ingin kami periksa di mana dalam contoh ini adalah 'consume'. Untuk memeriksa hasil penyematan, kami mencetak keluaran dari model:

dari sebagai bangsa model impor Word2Vec
teks = [ [ 'kelinci' , 'memiliki' , 'gigi' ] ]
model = Word2Vec ( teks , min_count = 1 )
similar_embedding = model. wv . most_similar ( 'kelinci' )
mencetak ( similar_embedding )

Dalam contoh ini, kami membuat penyematan kata untuk teks menggunakan model 'word2vec' untuk memeriksa kesamaannya dalam hal konteks dan itu dapat dilihat dalam cuplikan yang dilampirkan sebelumnya yang merupakan output dari kode yang memeriksa penyematan serupa dari kata “konsumsi”.

Contoh 2: Menyematkan Pencarian Terdekat melalui Model BERT

Terdapat model pemrosesan bahasa alami pra-terlatih yang dapat digunakan untuk menghitung kesamaan antara teks karena mereka dapat memahami dan mempelajari hubungan kontekstual antara kata-kata. BERT adalah salah satu model bahasa terlatih dari “sentence_transformers” dan dapat mempelajari kesamaan antar teks. Untuk menemukan kesamaan antara teks, pertama-tama kita harus menyesuaikan model ini dengan teks atau kalimat.

Setelah ini selesai, kita dapat menggunakan model ini untuk mempelajari penyematan. Kemudian, kita dapat menghitung kemiripan antar teks menggunakan fungsi “cosine similarity”. Kami menerapkan contoh ini pada platform Python online yaitu 'google colab'. Untuk menyempurnakan model, kami memuat model (BERT). Untuk tujuan itu, pertama-tama kita menginstal dan mengimpor 'SentenceTransformers'. Kemudian, kami memuat model dari model terlatihnya menggunakan SentenceTransformer. Untuk memuat model, kami memanggil SentenceTransformer dan model BERT sekaligus sebagai '$SentenceTransformer('bert-base-nli-mean-tokens')' di mana kami menentukan nama model BERT yang telah dilatih sebelumnya di parameter input dan lalu kita simpan ini di variabel “BERTmodel”.

Setelah kita selesai memuat model ini, sekarang kita menentukan empat teks yang masing-masing terdiri dari satu kalimat untuk memeriksa kesamaan di antara mereka. Setelah kami menentukan teks misalnya, kami sekarang membuat embeddings untuk teks ini. Kami secara individual membuat embeddings untuk setiap teks dengan menggunakan fungsi 'encode'.

Kami menyebut fungsi pengkodean dengan awalan model BERT sebagai 'BERTmodel.encoding ()'. Kami kemudian meneruskan 'teks' dan 'panjang maksimum' yang kami tetapkan sama dengan '512' ke parameter fungsi ini. Kami menyebut fungsi penyandian ini pada setiap teks, dan ini mengubah teks menjadi penyematan.

Sekarang, kami menggunakan masing-masing embeddings ini dan menggantinya ke dalam fungsi kesamaan cosinus untuk menemukan kesamaan antara embeddings ini. Fungsi kesamaan kosinus digunakan secara luas di semua tugas pemrosesan bahasa alami untuk klasifikasi dan pengelompokan teks/dokumen.

Untuk menemukan kesamaan antara penyematan ini, kami menggunakan fungsi kesamaan cosinus dan mengganti nilai kalimat yang disematkan dengan indeks '0' dan kalimat tertanam lainnya dengan indeks '1 hingga 3' untuk memeriksa kesamaan kalimat 0 dengan 3 lainnya kalimat. Nilai keluaran fungsi cosine similarity berkisar dari -1 hingga 1. Di sini, 1 menyatakan bahwa kedua embedding serupa dan -1 menyatakan bahwa kedua embedding tidak serupa. Kami lampirkan cuplikan kode yang menunjukkan metode untuk mengimplementasikan fungsi cosine similarity menggunakan embedding empat kalimat yang baru saja kami buat dalam contoh menggunakan model BERT yang telah dilatih sebelumnya.

!pip instal kalimat_transformer
kalimat = [
'empat tahun sebelumnya, botol itu bahkan penuh dan .',
'Anjing itu bermimpi melarikan diri dari kandang dan di jalan di mana dia melihat temannya pergi.',
'Orang itu bermain dengan ubur-ubur selama  bulan .',
'Dia menemukan siput di lemari pakaiannya.']
dari kalimat_transformer impor KalimatTransformer
Bertmodel = SentenceTransformer('bert-base-nli-mean-token')
kalimat_embeddings = Bertmodel.encode(kalimat)
kalimat_embeddings.shape
dari sklearn.metrics.pairwise import cosine_similarity
# menghitung=kemiripan kosinus untuk kalimat 0:
cosine_similarity(
[sematan_kalimat[0]],
kalimat_embeddings[1:])

Larik dalam keluaran menampilkan nilai kesamaan dari “kalimat 0” dengan tiga kalimat lainnya, mis. 1, 2, dan 3.

Kesimpulan

Kami membahas metode untuk menemukan kesamaan antara penyematan. Kami menunjukkan dua contoh berbeda untuk mencari kecocokan terdekat dari embedding menggunakan model gensim 'word2vec' dan model BERT yang telah dilatih sebelumnya.