Bagaimana cara mengembangkan daftar kata-kata terkait berdasarkan kata kunci awal?

19

Baru-baru ini saya melihat fitur keren yang pernah tersedia di Google Sheets: Anda mulai dengan menulis beberapa kata kunci terkait dalam sel berturut-turut, katakan: "biru", "hijau", "kuning", dan secara otomatis menghasilkan kata kunci yang serupa (dalam hal ini , warna lainnya). Lihat lebih banyak contoh di video YouTube ini .

Saya ingin mereproduksi ini dalam program saya sendiri. Saya sedang berpikir untuk menggunakan Freebase, dan itu akan berfungsi seperti ini secara intuitif:

  1. Ambil kembali daftar kata yang diberikan di Freebase;
  2. Temukan "common denominator (s)" dan buat metrik jarak berdasarkan ini;
  3. Beri peringkat konsep lain berdasarkan "jarak" mereka dengan kata kunci asli;
  4. Tampilkan konsep terdekat berikutnya.

Karena saya tidak terbiasa dengan bidang ini, pertanyaan saya adalah:

  • Apakah ada cara yang lebih baik untuk melakukan ini?
  • Alat apa yang tersedia untuk setiap langkah?
nassimhddd
sumber
Dugaan saya adalah bahwa ini didasarkan pada topik pembelajaran di sebuah perusahaan besar.
tchakravarty
Jika Anda ingin menemukan penjelasan mereka, saya yakin ada makalah tentang metode dasar yang disebut Google Sets.
jamesmf
1
Masalah ini disebut "ekspansi permintaan".
Emre

Jawaban:

15

The algoritma word2vec mungkin menjadi cara yang baik untuk mengambil elemen lebih untuk daftar kata-kata serupa. Ini adalah algoritma "pembelajaran dalam" tanpa pengawasan yang sebelumnya telah didemonstrasikan dengan data pelatihan berbasis Wikipedia (skrip pembantu disediakan pada halaman kode Google).

Saat ini ada implementasi C dan Python . Tutorial ini oleh Radim Řehůřek , penulis perpustakaan pemodelan topik Gensim , adalah tempat yang bagus untuk memulai.

The "topik tunggal" demonstrasi pada tutorial adalah contoh yang baik dari retreiving kata-kata yang mirip dengan istilah tunggal (coba cari di 'merah' atau 'kuning'). Seharusnya dimungkinkan untuk memperluas teknik ini untuk menemukan kata-kata yang memiliki kemiripan keseluruhan terbesar dengan serangkaian kata-kata input.

joews
sumber
5

Sudahkah Anda mempertimbangkan pendekatan berbasis frekuensi yang mengeksploitasi kata kebetulan bersama di korpora? Setidaknya, itulah yang saya lihat kebanyakan orang gunakan untuk ini. Saya pikir itu mungkin dibahas secara singkat dalam buku Manning dan Schütze, dan saya sepertinya mengingat sesuatu seperti ini sebagai tugas pekerjaan rumah di sekolah pascasarjana ...

Lebih banyak latar belakang di sini: http://nlp.stanford.edu/IR-book/html/htmledition/automatic-thesaurus-generation-1.html

Untuk langkah ini:

Beri peringkat konsep lain berdasarkan "jarak" mereka dengan kata kunci asli;

Ada beberapa metrik kesamaan semantik yang bisa Anda lihat. Berikut ini tautan ke beberapa slide yang saya kumpulkan untuk proyek kelas menggunakan beberapa metrik kesamaan ini di WordNet: http://www.eecis.udel.edu/~trnka/CISC889-11S/lectures/greenbacker-WordNet-Similarity. pdf

Charlie Greenbacker
sumber
3

Ini adalah salah satu masalah yang menyenangkan di mana ruang lingkup mungkin bervariasi dari tugas pekerjaan rumah ke proyek ukuran Google.

Memang, Anda bisa mulai dengan kata-kata yang muncul bersamaan (misalnya, probabilitas kondisional). Anda akan menemukan dengan cepat bahwa Anda mendapatkan daftar kata - kata berhenti sebagai yang terkait sebagian besar kata-kata hanya karena mereka sangat populer. Menggunakan pengangkatan probabilitas bersyarat akan menangani kata-kata penghentian tetapi akan membuat relasi rentan terhadap kesalahan dalam jumlah kecil (sebagian besar kasus Anda). Anda dapat mencoba Jacard tetapi karena simetris akan ada banyak hubungan yang tidak akan ditemukan.

Maka Anda dapat mempertimbangkan hubungan yang muncul hanya dalam jarak pendek dari kata dasar. Anda dapat (dan harus) mempertimbangkan hubungan berdasarkan pada corpus umum (misalnya, Wikipedia) dan khusus pengguna (misalnya, emailnya).

Sangat singkat Anda akan memiliki banyak langkah-langkah keterkaitan, ketika semua langkah itu baik dan memiliki beberapa keunggulan dibandingkan yang lain.

Untuk menggabungkan langkah-langkah tersebut, saya ingin mengurangi masalah menjadi masalah klasifikasi.

Anda harus membuat kumpulan data kata kata dan memberi labelnya sebagai "terkait". Untuk membangun dataset berlabel besar, Anda dapat:

  • Gunakan sumber kata-kata terkait yang diketahui (misalnya, kategori Wikipedia lama yang bagus) untuk hal-hal positif
  • Sebagian besar kata yang tidak dikenal sebagai terkait tidak terkait.

Kemudian gunakan semua ukuran yang Anda miliki sebagai fitur pasangan. Sekarang Anda berada dalam domain masalah klasifikasi terawasi. Buat classifier pada kumpulan data, dievaluasi sesuai dengan kebutuhan Anda dan dapatkan ukuran kesamaan yang sesuai dengan kebutuhan Anda.

Dl
sumber