En Yakın Eşleşme İçin Yerleştirmeler Nasıl Aranır?

En Yakin Eslesme Icin Yerlestirmeler Nasil Aranir



En yakın eşleşme için yerleştirmeleri aramak, birbirine en yakın anlama sahip olan yerleştirmeleri bulmak anlamına gelir. Gömmeler, belirli görevler için girdi olarak dil modellerine beslenen bir cümlenin vektörel temsilidir. Burada benzer yerleştirmeleri bulmak için kullanılabilecek yöntem ve teknikleri tartışacağız.

Sözdizimi

Benzerlik açısından farklılıklarından yola çıkarak gömmeler arasındaki farkı bulmak için kullanabileceğimiz birçok teknik ve araç mevcuttur. Aşağıdakiler, gömme benzerliklerini bulmak için kullanacağımız yöntemler ve ilgili sözdizimleridir.







Bahsedilen noktalardan, yerleştirmeler için benzerlik eşleşmesini bulmak için kullanabileceğimiz modelleri biliyoruz. Şimdi, bu modellerin her birini kullanmayı öğreneceğiz ve bu modellerin her birine ayrı ayrı örnekler uygulayacağız.



Örnek 1: En Yakın Eşleşmeyi Kelime Gömmeleri Yoluyla Gömme

Benzerlik eşleşmesi için gömme kelimesini uygulamadan önce, gömme kelimesini bilmemiz gerekir. Sözcük yerleştirme, metni bir vektör biçimine (sayısal değerler) dönüştürme işlemidir, çünkü sistemlerimiz girişi yalnızca sayısal basamak biçiminde anlar.



Bu görevi gerçekleştirmenin tek sıcak kodlamayı içeren birkaç başka yolu vardır, ancak biz yerleştirme kelimesini kullanacağız. Bu şekilde, gömme sinir ağının modelleri (örneğin word2vec veya Glove) tarafından metinlerden öğrenilmektedir. Sözcükler, daha yüksek boyutlu vektör uzayına eşlenir. Bağlamda benzer olan tüm bu kelimeler en yakın noktalara eşlenir. Bu şekilde, yerleştirmeler metindeki farklı kelimeler arasındaki ilişkileri ve analojileri yakalayabilir.





Bir cümle için gömülü bir kelime oluşturalım. Gömme kelimesini oluşturmak için Python 'gensim' çerçevesini sağlar. Gensim, gömmelerin oluşturulmasına yardımcı olan “word2vec” modelinin kullanımına izin veren bir kütüphane paketidir. Gömmeyi uygulamak için öncelikle Python derleyicilerimize gensim kurduğumuzdan emin oluyoruz. Ardından gensim'den “word2vec” modelini import ediyoruz.

'Word2vec' modeli, yalnızca iki girdi argümanı kullanan bir algoritma türüdür; burada ilk argüman, gömülmesini oluşturmak istediğimiz metni veya cümleyi gerektirir ve ikinci argüman, minimum sayıyı belirten minimum sayıyı belirtir. sözün görünmesi veya görülmesi gerekir.



“word2vec” modelini import ettikten sonra “text”i belirliyoruz. Metni belirledikten sonra, bu 'word2vec' modelini metinle geçirerek ve minimum sayımı '1' olarak ayarlayarak eğitiyoruz. Şimdi, bu eğitimli “word2vec.wv.most_similar('consume')” modelini çağırıyoruz ve bu örnekte en yakın yerleşimlerini kontrol etmek istediğimiz kelimeyi “consume” olarak besliyoruz. Gömme sonuçlarını kontrol etmek için modelden çıktı yazdırıyoruz:

itibaren ulus olarak modeller içe aktarmak Word2Vec
metin = [ [ 'tavşan' , 'sahip olmak' , 'dişler' ] ]
modeli = Word2Vec ( metin , min_sayım = 1 )
benzer_gömme = modeli. wv . En benzer ( 'tavşan' )
Yazdır ( benzer_gömme )

Bu örnekte, bağlam açısından benzerliklerini kontrol etmek için 'word2vec' modelini kullanarak bir metin için gömme kelimesini oluşturuyoruz ve bu, benzer yerleştirmeleri kontrol eden kodun çıktısı olan önceden eklenmiş snippet'te görülebilir. 'tüketmek' kelimesinin anlamı.

Örnek 2: En Yakın Aramayı BERT Modeli ile Gömme

Kelimeler arasındaki bağlamsal ilişkiyi anlayabildikleri ve öğrenebildikleri için metinler arasındaki benzerliği hesaplamak için kullanılabilecek önceden eğitilmiş doğal dil işleme modelleri mevcuttur. BERT, “sentence_transformers” tarafından önceden eğitilmiş dil modellerinden biridir ve metinler arasındaki benzerlikleri öğrenebilir. Metinler arasındaki benzerliği bulmak için öncelikle bu modelde metin veya cümlelere ince ayar yapmalıyız.

Bu yapıldıktan sonra, yerleştirmeleri öğrenmek için bu modeli kullanabiliriz. Daha sonra “kosinüs benzerlik” fonksiyonunu kullanarak metinler arasındaki benzerliği hesaplayabiliriz. Bu örneği “google colab” olan çevrimiçi Python platformunda uyguluyoruz. Modelde ince ayar yapmak için (BERT) modelini yüklüyoruz. Bunun için öncelikle “SentenceTransformers”ı kurup import ediyoruz. Ardından, SentenceTransformer kullanarak modeli önceden eğitilmiş modelinden yüklüyoruz. Modeli yüklemek için, giriş parametresinde önceden eğitilmiş BERT modelinin adını belirttiğimiz SentenceTransformer ve BERT modelini birlikte “$SentenceTransformer('bert-base-nli-mean-tokens')” olarak adlandırıyoruz ve daha sonra bunu “BERTmodel” değişkenine kaydediyoruz.

Bu modeli yüklemeyi bitirdikten sonra, aralarındaki benzerliği kontrol etmek için her biri birer cümleden oluşan dört metni belirliyoruz. Örneğin metinleri belirledikten sonra, şimdi bu metin için gömmeler oluşturuyoruz. “Kodlama” işlevini kullanarak metnin her biri için ayrı ayrı yerleştirmeler oluşturuyoruz.

BERT modelinin öneki ile kodlama fonksiyonunu “BERTmodel.encoding()” olarak adlandırıyoruz. Ardından “512” olarak sabitlediğimiz “text” ve “maksimum uzunluk”u bu fonksiyonun parametrelerine aktarıyoruz. Metinlerin her birine bu kodlama işlevini diyoruz ve metni gömmelere dönüştürüyor.

Şimdi, bu yerleştirmelerin her birini kullanıyoruz ve bu yerleştirmeler arasındaki benzerliği bulmak için bunları kosinüs benzerlik fonksiyonunda değiştiriyoruz. Kosinüs benzerlik fonksiyonu, metinlerin/belgelerin sınıflandırılması ve kümelenmesi için tüm doğal dil işleme görevlerinde yaygın olarak kullanılmaktadır.

Bu yerleştirmeler arasındaki benzerliği bulmak için, kosinüs benzerlik fonksiyonunu kullanırız ve gömülü cümlenin değerini '0' indeksiyle ve diğer gömülü cümlenin değerini '1 ila 3' indeksi ile değiştirerek cümle 0'ın diğer 3 ile benzerliğini kontrol ederiz. cümleler. Kosinüs benzerlik fonksiyonu çıkış değerleri -1 ile 1 arasındadır. Burada 1, iki yerleştirmenin benzer olduğunu ve -1, iki yerleştirmenin benzer olmadığını söyler. Önceden eğitilmiş BERT modelini kullanarak örneklerde az önce oluşturduğumuz dört cümle yerleştirmeyi kullanarak kosinüs benzerlik fonksiyonunu uygulama yöntemini gösteren kod parçacığını ekledik.

!pip cümle_transformers'ı kurun
cümleler = [
'Dört yıl önce şişe bile doluydu ve .',
'Köpek, arkadaşının gittiğini gördüğü sokakta ve kafesten kaçtığını hayal etti.',
'Kişi aylardır denizanasıyla oynuyordu.',
'Gardırobunda bir salyangoz buldu.']
cümle_transformers'tan SentenceTransformer'ı içe aktar
Bertmodel = SentenceTransformer('bert-base-nli-mean-tokens')
cümle_gömme = Bertmodel.encode(cümleler)
cümle_gömme.şekil
sklearn.metrics.pairwise'dan cosine_similarity'yi içe aktar
# 0 cümlesi için hesapla=kosinüs benzerliği:
kosinüs benzerliği(
[sentence_embeddings[0]],
cümle_gömme[1:])

Çıktıdaki dizi, 'cümle 0'ın diğer üç cümleye benzerlik değerini gösterir, örn. 1, 2 ve 3.

Çözüm

Gömmeler arasındaki benzerliği bulma yöntemlerini tartıştık. “word2vec” gensim modelini ve önceden eğitilmiş BERT modelini kullanarak gömmenin en yakın eşleşmesini aramak için iki farklı örnek gösterdik.