Pertama, sebelum kami mulai, saya sarankan Anda merujuk ke pertanyaan serupa di jaringan seperti /datascience/25053/best-practical-algorithm-for-entent-similarity dan https: // stackoverflow. com / pertanyaan / 62328 / apakah-ada-sebuah-algoritma-yang-mengatakan-semantik-kesamaan-dari-dua-frase
Untuk menentukan kesamaan kalimat, kita perlu mempertimbangkan data apa yang kita miliki. Sebagai contoh jika Anda memiliki dataset berlabel yaitu kalimat yang sama dan kalimat yang berbeda maka pendekatan langsung bisa saja menggunakan algoritma yang diawasi untuk mengklasifikasikan kalimat.
Suatu pendekatan yang dapat menentukan kesamaan struktural kalimat adalah dengan rata-rata vektor kata yang dihasilkan oleh algoritma embedding kata yaitu word2vec. Algoritma ini membuat vektor untuk setiap kata dan persamaan cosinus di antara mereka mewakili kesamaan semantik di antara kata-kata. (Daniel L 2017)
Dengan menggunakan vektor kata, kita dapat menggunakan metrik berikut untuk menentukan kesamaan kata.
- Jarak cosine antara embeddings kata dari kata
- Jarak Euclidean antara embeddings kata dari kata-kata
Kesamaan cosine adalah ukuran kesamaan antara dua vektor bukan-nol dari ruang produk dalam yang mengukur cosinus dari sudut di antara mereka. Sudut cosinus adalah ukuran tumpang tindih antara kalimat dalam hal kontennya.
Jarak Euclidean antara dua vektor kata memberikan metode yang efektif untuk mengukur kesamaan linguistik atau semantik dari kata-kata yang sesuai. (Frank D 2015)
Atau Anda dapat menghitung vektor eigen dari kalimat untuk menentukan kesamaan kalimat.
Vektor eigen adalah seperangkat vektor khusus yang terkait dengan sistem persamaan linear (yaitu persamaan matriks). Di sini matriks kesamaan kalimat dihasilkan untuk setiap cluster dan vektor eigen untuk matriks dihitung. Anda dapat membaca lebih lanjut tentang pendekatan Eigenvector berdasarkan peringkat kalimat di makalah ini https://pdfs.semanticscholar.org/ca73/bbc99be157074d8aad17ca8535e2cd956815.pdf
Untuk kode sumber, Siraj Rawal memiliki notebook Python untuk membuat satu set vektor kata. Kata vektor kemudian dapat digunakan untuk menemukan kesamaan antara kata-kata. Kode sumber tersedia di sini https://github.com/llSourcell/word_vectors_game_of_thrones-LIVE
Pilihan lain adalah tutorial dari Oreily yang memanfaatkan pustaka gensin Python untuk menentukan kesamaan antar dokumen. Tutorial ini menggunakan NLTK untuk menandai lalu membuat model tf-idf (istilah frekuensi-invers dokumen frekuensi) dari corpus. Tf-idf kemudian digunakan untuk menentukan kesamaan dokumen. Tutorialnya tersedia di sini https://www.oreilly.com/learning/how-do-i-compare-document-similarity-using-python