Penguraian bahasa untuk menemukan kata-kata penting


9

Saya mencari beberapa masukan dan teori tentang cara mendekati topik leksikal.

Katakanlah saya memiliki koleksi string, yang mungkin hanya satu kalimat atau berpotensi beberapa kalimat. Saya ingin mengurai string ini dan merobek kata-kata yang paling penting, mungkin dengan skor yang menunjukkan seberapa besar kemungkinan kata itu penting.

Mari kita lihat beberapa contoh tentang apa yang saya maksud.

Contoh 1:

"Aku benar-benar menginginkan Keurig, tetapi aku tidak mampu membelinya!"

Ini adalah contoh yang sangat mendasar, hanya satu kalimat. Sebagai manusia, saya dapat dengan mudah melihat bahwa "Keurig" adalah kata yang paling penting di sini. Juga, "mampu" relatif penting, meskipun jelas bukan poin utama dari kalimat itu. Kata "Saya" muncul dua kali, tetapi tidak penting sama sekali karena tidak benar-benar memberi tahu kami informasi apa pun. Saya mungkin berharap melihat hash dari kata / skor sesuatu seperti ini:

"Keurig" => 0.9
"afford" => 0.4
"want"   => 0.2
"really" => 0.1
etc...

Contoh # 2:

"Baru saja memiliki salah satu praktik renang terbaik dalam hidupku. Mudah-mudahan aku bisa menjaga waktuku datang kompetisi. Kalau saja aku ingat untuk mengambil arloji non-tahan air saya."

Contoh ini memiliki banyak kalimat, sehingga akan ada kata-kata yang lebih penting. Tanpa mengulangi latihan poin dari contoh # 1, saya mungkin akan berharap untuk melihat dua atau tiga kata yang sangat penting keluar dari ini: "berenang" (atau "latihan berenang"), "kompetisi", & "menonton" (atau "tahan air" menonton "atau" arloji non-tahan air "tergantung pada bagaimana tanda hubung ditangani).

Dengan beberapa contoh seperti ini, bagaimana Anda akan melakukan sesuatu yang serupa? Apakah ada perpustakaan (algoritma open source) yang ada dalam pemrograman yang sudah melakukan ini?


Juga, ini adalah posting pertama saya di programmer.stackexchange.com. Permintaan maaf jika ini adalah tempat yang salah dan menjadi milik StackOverflow atau situs SE lainnya. Senang memindahkan pertanyaan jika perlu.
Matt Huggins

Saya tidak mengerti dari pertanyaan apa yang ingin Anda capai. Untuk contoh pertama khususnya, kata "Keurig" dan "mampu" dapat diidentifikasi dengan pemeriksaan statistik sederhana: di antara kata-kata kalimat, kedua kata ini kurang umum dalam bahasa Inggris daripada yang lain. Jadi jika Anda memiliki basis data frekuensi kata, Anda dapat mengidentifikasi kata-kata itu dengan mudah.
Qwertie

Jawaban:


5

Pasti ada orang yang berpikir tentang masalah yang Anda gambarkan. Peringkat dan Ekstraksi Kata-kata yang Relevan dalam Teks (pdf) João Ventura dan Joaquim Ferreira da Silva adalah pengantar yang bagus untuk teknik pemeringkatan yang ada serta saran untuk perbaikan. Semua teknik yang mereka gambarkan mengandalkan corpus (banyak teks) versus satu atau dua baris teks. Korpus Anda harus menjadi koleksi semua sampel atau mungkin banyak korpora sampel yang dikumpulkan dari sumber tertentu. Ingatlah bahwa relevansi satu kata (unigram) adalah masalah yang belum terselesaikan. Seperti yang dijelaskan dalam makalah ini:

"... menggunakan metode statistik murni, klasifikasi seperti ini tidak selalu langsung atau bahkan tepat karena, meskipun gagasan relevansi adalah konsep yang mudah dipahami, biasanya tidak ada konsensus tentang perbatasan yang memisahkan relevansi dari non-relevansi. Misalnya, kata-kata seperti "Republik" atau "London" memiliki relevansi yang signifikan dan kata-kata seperti "atau" dan "karena" tidak memiliki relevansi sama sekali, tetapi bagaimana dengan kata-kata seperti "baca", "hentikan" dan "selanjutnya"? Jenis seperti ini kata-kata bermasalah karena biasanya tidak ada konsensus tentang nilai semantik mereka. "

Ada banyak toolkit pengolah bahasa alami open source . (Hati-hati. Beberapa alat gratis untuk penelitian tetapi memerlukan lisensi komersial untuk penggunaan komersial.) Mereka akan membuat hidup Anda lebih mudah terlepas dari pendekatan yang Anda pilih.

Saya paling akrab dengan Natural Language Toolkit (NLTK) . Mudah digunakan, didokumentasikan dengan baik, dan ditampilkan dalam buku, Natural Language Processing with Python (tersedia online gratis). Sebagai contoh sederhana dari apa yang mungkin dilakukan NLTK untuk Anda, bayangkan menggunakan tag- part-of-speech-nya . Dengan setiap bagian kata-kata yang diidentifikasikan, Anda mungkin menganggap kata benda yang tepat sangat penting dan kata sifat kurang penting. Kata kerja mungkin penting dan kata keterangan kurang begitu. Ini sama sekali bukan peringkat yang canggih, tetapi Anda mendapatkan informasi yang berguna dengan sedikit usaha. Saat Anda siap untuk beralih ke analisis yang lebih canggih, kemampuan bawaan NLTK untuk memberi token, menandai, memotong, dan mengklasifikasikan akan membuat Anda fokus pada detail lain dari solusi Anda.


1

Pemrosesan bahasa alami adalah disiplinnya sendiri dengan cukup banyak penelitian formal yang dilakukan di sana. Saya akan mulai dengan melihat ke sana.

Saya juga akan mempertimbangkan kembali kebutuhan saya. Bahkan setelah lebih dari 50 tahun penelitian, ilmuwan komputer terbaik yang dapat memunculkannya adalah Siri. Saya tidak berharap komputer berhasil melakukan apa yang Anda bicarakan dengan keteraturan.

Jika ada batasan tertentu untuk pidato (seperti Siri dengan asumsi Anda memiliki perintah atau pertanyaan sederhana) itu bisa lebih baik. Mempertimbangkan kembali kebutuhan saya (dengan asumsi saya memang membutuhkan NLP) akan mencakup mendefinisikan keterbatasan saya. Setelah itu saya kemungkinan akan berburu banyak contoh. Sebagian untuk menguji apa pun yang saya hasilkan, tetapi banyak solusi modern melibatkan pembelajaran mesin. Saya membutuhkan contoh-contoh itu sebagai masukan untuk kurva pembelajaran.

Jadi, secara ringkas, saya benar-benar ragu apa pun akan dapat memberi Anda skor bagus dalam skenario bebas konteks semacam ini.


+1 untuk penggalian Siri ... atau promosi ...
Aaron McIver
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.