Algoritma praktis terbaik untuk kesamaan kalimat


18

Saya memiliki dua kalimat, S1 dan S2, keduanya memiliki jumlah kata (biasanya) di bawah 15.

Apa algoritma (pembelajaran mesin) yang praktis dan paling berguna, yang mungkin mudah diimplementasikan (jaringan saraf ok, kecuali arsitekturnya serumit Google Inception, dll.).

Saya mencari algoritma yang akan bekerja dengan baik tanpa terlalu banyak waktu. Apakah ada algoritma yang Anda temukan berhasil dan mudah digunakan?

Ini bisa, tetapi tidak harus masuk dalam kategori pengelompokan. Latar belakang saya dari pembelajaran mesin, jadi ada saran dipersilahkan :)


Apa yang Anda terapkan? Saya juga menghadapi hal yang sama, harus datang dengan solusi untuk 'k' artikel terkait dalam sebuah korpus yang terus diperbarui.
Dileepa

Jawaban:


16

Cosine Similarity untuk Vector Space dapat Anda jawab: http://blog.christianperone.com/2013/09/machine-learning-cosine-similarity-for-vector-space-models-part-iii/

Atau Anda bisa menghitung vektor eigen dari setiap kalimat. Tapi Masalahnya adalah, apa persamaannya?

"Ini pohon", "Ini bukan pohon"

Jika Anda ingin memeriksa makna semantik dari kalimat tersebut, Anda memerlukan dataset wordvector. Dengan dataset wordvector Anda akan dapat memeriksa hubungan antara kata-kata. Contoh: (Raja - Laki-laki + perempuan = Ratu)

Siraj Raval memiliki notebook python yang bagus untuk membuat kumpulan data wordvector: https://github.com/llSourcell/word_vectors_game_of_thrones-LIVE


8

Salah satu pendekatan yang bisa Anda coba adalah rata-rata vektor kata yang dihasilkan oleh algoritma penyematan kata (word2vec, glove, dll). Algoritma ini membuat vektor untuk setiap kata dan persamaan cosinus di antara mereka mewakili kesamaan semantik di antara kata-kata. Dalam kasus vektor rata-rata di antara kalimat. Titik awal yang baik untuk mengetahui lebih banyak tentang metode ini adalah makalah ini: Seberapa Baik Kalimat Menanamkan Makna Makna . Ini membahas beberapa metode penyisipan kalimat. Saya juga menyarankan Anda melihat ke dalam Pembelajaran Tanpa Kalimat tentang Embeddings Kalimat menggunakan Fitur n-Gram Komposisi yang penulis klaim pendekatan mereka mengalahkan metode canggih. Mereka juga menyediakan kode dan beberapa petunjuk penggunaan dalam repo github ini .



2

Anda harus memeriksa https://github.com/seatgeek/fuzzywuzzy#usage . fuzzywuzzy adalah pustaka yang luar biasa untuk pencocokan string / teks yang memberikan angka antara 0 hingga 100 berdasarkan seberapa mirip dua kalimat tersebut. Ini menggunakan Levenshtein Distance untuk menghitung perbedaan antara urutan dalam paket yang mudah digunakan. Juga, lihat posting blog ini untuk penjelasan rinci tentang bagaimana fuzzywuzzy melakukan pekerjaan. Blog ini juga ditulis oleh penulis fuzzywuzzy


1

Blog ini memiliki solusi untuk kesamaan teks pendek. Mereka terutama menggunakan model jaringan saraf BERT untuk menemukan kesamaan antara kalimat. https://medium.com/@vimald8959/sentence-categorisation-short-text-similarity-61bb88fae15e


Hai, selamat datang di Pertukaran Data Science Stack! Saat mereferensikan solusi dari situs web luar, silakan pertimbangkan untuk menulis ringkasan dalam jawaban Anda. Memang, ini akan lebih mudah dibaca, dan mencegah jawaban Anda menjadi usang jika halaman target berubah atau tautan rusak.
Romain Reboulleau

Bagus, ini barang yang sangat bagus. Jadi mereka pada dasarnya menggunakan BERT? @RomainReboulleau jelas benar!
DaveTheAl
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.