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 :)
nlp
clustering
word2vec
similarity
DaveTheAl
sumber
sumber
Jawaban:
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
sumber
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 .
sumber
bert-as-service ( https://github.com/hanxiao/bert-as-service#building-a-qa-semantic-search-engine-in-3-minutes ) hanya menawarkan solusi itu.
Untuk menjawab pertanyaan Anda, mengimplementasikannya sendiri dari nol akan cukup sulit karena BERT bukan NN yang sepele, tetapi dengan solusi ini Anda cukup memasukkannya ke dalam algo Anda yang menggunakan kesamaan kalimat.
sumber
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
sumber
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
sumber