İlk olarak, başlamadan önce ağdaki /datascience/25053/best-practical-algorithm-for-sentence-screteity ve https: // stackoverflow gibi benzer sorulara başvurmanızı öneririz . com / sorular / 62328 / is-orada-bir-algoritma-o-anlatır-semantik-benzerlik-of-iki-cümleleri
Cümlelerin benzerliğini belirlemek için ne tür verilere sahip olduğumuzu düşünmeliyiz. Örneğin, etiketlenmiş bir veri kümeniz varsa, örneğin benzer cümleler ve benzer cümleler varsa, doğrudan bir yaklaşım, cümleleri sınıflandırmak için denetimli bir algoritma kullanmak olabilirdi.
Cümlenin yapısal benzerliğini belirleyebilen bir yaklaşım, kelime gömme algoritmaları, yani word2vec tarafından üretilen kelime vektörlerinin ortalamasını almak olacaktı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. (Daniel L 2017)
Kelime vektörlerini kullanarak, kelimelerin benzerliğini belirlemek için aşağıdaki metrikleri kullanabiliriz.
- Kelimelerin kelime düğünleri arasındaki kosinüs mesafesi
- Kelimelerin kelime düğünleri arasında Öklid mesafesi
Kosinüs benzerliği, bir iç ürün boşluğunun sıfır olmayan iki vektörü arasındaki, aralarındaki açının kosinüsünü ölçen benzerliğin bir ölçüsüdür. Kosinüs açısı, cümle arasındaki içerik bakımından örtüşme ölçüsüdür.
İki sözcük vektörü arasındaki Öklid mesafesi, karşılık gelen kelimelerin dilbilimsel veya anlamsal benzerliğini ölçmek için etkili bir yöntem sağlar. (Frank D 2015)
Alternatif olarak, cümle benzerliğini belirlemek için cümlelerin özvektörünü hesaplayabilirsiniz.
Özvektörler doğrusal bir denklem sistemi (yani matris denklemi) ile ilişkili özel bir vektörler kümesidir. Burada her küme için bir cümle benzerlik matrisi oluşturulur ve matris için özvektör hesaplanır. Bu makalede cümle sıralamasına Özvektör tabanlı yaklaşım hakkında daha fazla bilgi edinebilirsiniz https://pdfs.semanticscholar.org/ca73/bbc99be157074d8aad17ca8535e2cd956815.pdf
Kaynak kodu için Siraj Rawal, bir dizi kelime vektörü oluşturmak için bir Python not defterine sahiptir. Kelime vektörleri daha sonra kelimeler arasındaki benzerliği bulmak için kullanılabilir. Kaynak kodu burada bulunabilir https://github.com/llSourcell/word_vectors_game_of_thrones-LIVE
Başka bir seçenek, Oreily'den, belgeler arasındaki benzerliği belirlemek için gensin Python kütüphanesini kullanan bir öğreticidir. Bu eğitici tokenize etmek için NLTK kullanır, sonra da şirketten bir tf-idf (terim frekansı ters belge frekansı) modeli oluşturur. Daha sonra tf-idf, belgelerin benzerliğini belirlemek için kullanılır. Eğiticiye buradan ulaşabilirsiniz https://www.oreilly.com/learning/how-do-i-compare-document-slikeity-using-python