Cümle benzerliği için en iyi pratik algoritma


18

İki cümleyim var, S1 ve S2.

Uygulanması muhtemelen kolay olan en pratik ve başarılı (makine öğrenimi) algoritmaları nelerdir (mimari Google Inception gibi karmaşık olmadığı sürece sinir ağı tamamdır).

Çok fazla zaman harcamadan iyi çalışacak bir algoritma arıyorum. Başarılı ve kullanımı kolay bulduğunuz herhangi bir algoritma var mı?

Bu, kümelenme kategorisine girebilir, ancak bu zorunlu değildir. Benim geçmişim makine öğreniminden, bu nedenle herhangi bir öneri bekliyoruz :)


Ne yaptın? Ben de aynı karşı karşıya, güncellemeye devam eden bir corpus 'k' ile ilgili makaleler için çözüm bulmak zorunda.
Dileepa

Yanıtlar:


16

Vector Space için kosinüs benzerliği size cevap olabilir: http://blog.christianperone.com/2013/09/makine-öğrenme- kosin- benzerliği-for-vector-space-models-part- iii/

Veya her bir cümlenin özvektörünü hesaplayabilirsiniz. Fakat Sorun şu ki, benzerlik nedir?

"Bu bir ağaç", "Bu bir ağaç değil"

Eğer cümlenin anlamsal anlamını kontrol etmek istiyorsanız, bir wordvector veri kümesine ihtiyacınız olacaktır. Kelime vektör veri seti ile kelimeler arasındaki ilişkiyi kontrol edebileceksiniz. Örnek: (Kral - Erkek + kadın = Kraliçe)

Siraj Raval, wordvector veri kümeleri oluşturmak için iyi bir python not defterine sahiptir: https://github.com/llSourcell/word_vectors_game_of_thrones-LIVE


8

Deneyebileceğiniz bir yaklaşım, kelime yerleştirme algoritmaları (word2vec, glove vb.) Tarafından üretilen kelime vektörlerinin ortalamasını almaktır. Bu algoritmalar her kelime için bir vektör oluşturur ve aralarındaki kosinüs benzerliği, kelimeler arasındaki anlamsal benzerliği temsil eder. Cümleler arasında ortalama vektörler olması durumunda. Bu yöntemler hakkında daha fazla bilgi edinmek için iyi bir başlangıç ​​noktası şu makaledir : Ne Kadar Cümle Gömme Anlamını Yakalar . Bazı cümle yerleştirme yöntemlerini tartışır. Ayrıca, Kompozisyon n-Gram Özelliklerini kullanarak Cümle Gömmelerinin Denetimsiz Öğrenimini incelemenizi öneririm . Ayrıca bu github deposundaki kodu ve bazı kullanım talimatlarını sağlarlar .



2

Https://github.com/seatgeek/fuzzywuzzy#usage adresini kontrol etmelisiniz . fuzzywuzzy, benzer iki cümlenin ne olduğuna bağlı olarak 0 ile 100 arasında bir sayı veren dize / metin eşleme için harika bir kütüphanedir. Kullanımı kolay bir paketteki diziler arasındaki farkları hesaplamak için Levenshtein Mesafesini kullanır. Ayrıca, fuzzywuzzy'nin işi nasıl yaptığına dair ayrıntılı bir açıklama için bu blog yayınına göz atın. Bu blog aynı zamanda bulanık yazar tarafından yazılmıştır


1

Bu blog kısa metin benzerliği için bir çözüme sahiptir. Cümleler arasında benzerlikler bulmak için çoğunlukla BERT sinir ağı modelini kullanırlar. https://medium.com/@vimald8959/sentence-categorisation-short-text-similarity-61bb88fae15e


Merhaba, Data Science Stack Exchange'e hoş geldiniz! Dış bir web sitesinden bir çözüme referans verirken, lütfen cevabınıza bir özet yazmayı düşünün. Aslında, bu okunması daha kolay olacaktır ve hedef sayfa değişirse veya bağlantı koparsa yanıtınızın eski haline gelmesini önler.
Romain Reboulleau

Güzel, bu gerçekten iyi şeyler. Yani temelde BERT mi kullanıyorlar? @RomainReboulleau kesinlikle doğru olsa!
DaveTheAl
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.