Cara Mencari Pembenaman untuk Padanan Terdekat

Cara Mencari Pembenaman Untuk Padanan Terdekat



Mencari benam untuk padanan terdekat bermakna mencari benam yang mempunyai makna yang paling hampir antara satu sama lain. Pembenaman ialah perwakilan vektor bagi ayat yang disalurkan kepada model bahasa sebagai input untuk tugasan tertentu. Kami akan membincangkan di sini kaedah dan teknik yang boleh digunakan untuk mencari benam yang serupa.

Sintaks

Terdapat banyak teknik dan alat yang boleh kita gunakan untuk mencari perbezaan antara benam berdasarkan perbezaannya dari segi persamaan. Berikut ialah kaedah dan sintaks yang terlibat yang akan kami gunakan untuk mencari persamaan pembenaman.







Daripada perkara yang disebutkan itu, kami mengetahui model yang boleh kami gunakan untuk mencari padanan persamaan untuk benam. Sekarang, kita akan belajar untuk menggunakan setiap model ini dan melaksanakan contoh individu pada setiap model ini.



Contoh 1: Membenamkan Padanan Terhampir melalui Pembenaman Perkataan

Sebelum kita melaksanakan perkataan benam untuk padanan persamaan, kita perlu mengetahui tentang perkataan benam. Pembenaman perkataan ialah proses menukar teks ke dalam bentuk vektor (nilai berangka) kerana sistem kami hanya memahami input dalam bentuk digit berangka.



Terdapat beberapa cara lain untuk melakukan tugas ini termasuk pengekodan satu panas, tetapi kami akan menggunakan perkataan pembenaman. Dengan cara ini, pembenaman sedang dipelajari oleh model rangkaian saraf (cth. word2vec atau Glove) daripada teks. Perkataan dipetakan ke ruang vektor berdimensi lebih tinggi. Semua perkataan yang serupa dalam konteks dipetakan ke titik terdekat. Dengan cara ini, benam boleh menangkap perhubungan dan analogi antara perkataan yang berbeza dalam teks.





Mari kita buat pembenaman perkataan untuk ayat. Untuk mencipta perkataan pembenaman, Python menyediakan rangka kerja 'gensim'. Gensim ialah pakej perpustakaan yang membenarkan penggunaan model 'word2vec' yang membantu dalam mencipta pembenaman. Untuk melaksanakan pembenaman, kami terlebih dahulu memastikan untuk memasang gensim pada penyusun Python kami. Kemudian, daripada gensim, kami mengimport model 'word2vec'.

Model 'word2vec' ialah sejenis algoritma yang hanya menggunakan dua argumen input di mana argumen pertama memerlukan teks atau ayat yang pembenamannya ingin kita buat, dan argumen kedua menentukan kiraan minimum yang menentukan bilangan kali minimum sesuatu perkataan diperlukan untuk muncul atau dilihat.



Selepas mengimport model 'word2vec', kami menentukan 'teks'. Sebaik sahaja kami menentukan teks, kami kemudian melatih model 'word2vec' ini dengan menghantarnya dengan teks dan menetapkan kiraan minimum sama dengan '1'. Sekarang, kami memanggil model 'word2vec.wv.most_similar('consume')' terlatih ini dan suapan perkataan yang benam paling hampir yang ingin kami semak dalam contoh ini ialah 'consume'. Untuk menyemak hasil pembenaman, kami mencetak output daripada model:

daripada sebagai sebuah bangsa model import Word2Vec
teks = [ [ 'arnab' , 'mempunyai' , 'gigi' ] ]
model = Word2Vec ( teks , kiraan_min = 1 )
similar_embedding = model. wv . paling_serupa ( 'arnab' )
cetak ( similar_embedding )

Dalam contoh ini, kami mencipta perkataan pembenaman untuk teks menggunakan model 'word2vec' untuk menyemak persamaannya dari segi konteks dan yang boleh dilihat dalam coretan yang dilampirkan sebelum ini yang merupakan output kod yang menyemak pembenaman serupa daripada perkataan 'makan'.

Contoh 2: Membenamkan Carian Terdekat melalui Model BERT

Terdapat model pemprosesan bahasa semula jadi yang telah terlatih yang boleh digunakan untuk mengira persamaan antara teks kerana mereka boleh memahami dan mempelajari hubungan kontekstual antara perkataan. BERT ialah salah satu model bahasa yang telah dilatih daripada 'pengubah_ayat' dan ia boleh mempelajari persamaan antara teks. Untuk mencari persamaan antara teks, kita perlu menyesuaikan model ini dengan teks atau ayat terlebih dahulu.

Setelah ini selesai, kita boleh menggunakan model ini untuk mempelajari benam. Kemudian, kita boleh mengira persamaan antara teks menggunakan fungsi 'kesamaan kosinus'. Kami melaksanakan contoh ini pada platform Python dalam talian iaitu 'google colab'. Untuk memperhalusi model, kami memuatkan model (BERT). Untuk tujuan itu, kami mula-mula memasang dan mengimport 'SentenceTransformers'. Kemudian, kami memuatkan model daripada model pra-latihannya menggunakan SentenceTransformer. Untuk memuatkan model, kami memanggil SentenceTransformer dan model BERT sama sekali sebagai '$SentenceTransformer('bert-base-nli-mean-tokens')' di mana kami menentukan nama model BERT pra-latihan dalam parameter input dan kemudian kita simpan ini dalam pembolehubah 'BERTmodel'.

Selepas kami selesai memuatkan model ini, kami kini menentukan empat teks, setiap satu terdiri daripada satu ayat untuk menyemak persamaan antara mereka. Sebaik sahaja kami menentukan teks sebagai contoh, kami kini mencipta benam untuk teks ini. Kami membuat pembenaman secara individu untuk setiap teks dengan menggunakan fungsi 'enkod'.

Kami memanggil fungsi pengekodan dengan awalan model BERT sebagai 'BERTmodel.encoding ()'. Kami kemudian menghantar 'teks' dan 'panjang maksimum' yang kami tetapkan bersamaan dengan '512' kepada parameter fungsi ini. Kami memanggil fungsi pengekodan ini pada setiap teks, dan ia menukar teks kepada pembenaman.

Sekarang, kami menggunakan setiap benam ini dan menggantikannya ke dalam fungsi persamaan kosinus untuk mencari persamaan antara benam ini. Fungsi persamaan kosinus digunakan secara meluas dalam semua tugas pemprosesan bahasa semula jadi untuk pengelasan dan pengelompokan teks/dokumen.

Untuk mencari persamaan antara benam ini, kami menggunakan fungsi kesamaan kosinus dan menggantikan nilai ayat terbenam dengan indeks “0” dan ayat terbenam lain dengan indeks “1 hingga 3” untuk menyemak persamaan ayat 0 dengan 3 yang lain. ayat. Nilai keluaran fungsi kesamaan kosinus berjulat dari -1 hingga 1. Di sini, 1 memberitahu bahawa kedua-dua benam adalah serupa dan -1 mengatakan bahawa kedua-dua benam tidak serupa. Kami melampirkan coretan kod yang menunjukkan kaedah untuk melaksanakan fungsi kesamaan kosinus menggunakan empat benam ayat yang baru kami buat dalam contoh menggunakan model BERT terlatih.

!pip pasang sentence_transformers
ayat = [
'empat tahun sebelum ini, botol itu penuh dan .',
'Anjing itu bermimpi melarikan diri dari sangkar dan di jalan di mana dia melihat rakannya pergi.',
'Orang itu bermain dengan obor-obor selama  bulan lamanya.',
'Dia menemui seekor siput di dalam almari pakaiannya.']
daripada sentence_transformers import SentenceTransformer
Bertmodel = SentenceTransformer('bert-base-nli-mean-token')
sentence_embeddings = Bertmodel.encode(ayat)
ayat_benam.bentuk
daripada sklearn.metrics.pairwise import cosine_similarity
# calculate=ing cosine similarity untuk ayat 0:
kosinus_similarity(
[sentence_embeddings[0]],
sentence_embeddings[1:])

Tatasusunan dalam output memaparkan nilai persamaan 'ayat 0' dengan tiga ayat lain, mis. 1, 2, dan 3.

Kesimpulan

Kami membincangkan kaedah untuk mencari persamaan antara benam. Kami menunjukkan dua contoh berbeza untuk mencari padanan terdekat pembenaman menggunakan model gensim 'word2vec' dan model BERT pralatihan.