Bagaimana cara memproses pertanyaan bahasa alami?

11

Saya ingin tahu tentang permintaan bahasa alami. Stanford memiliki perangkat lunak yang kuat untuk memproses bahasa alami . Saya juga melihat perpustakaan Apache OpenNLP , dan Arsitektur Umum untuk Rekayasa Teks .

Ada sejumlah besar kegunaan untuk pemrosesan bahasa alami dan yang membuat dokumentasi proyek-proyek ini sulit untuk diserap dengan cepat.

Bisakah Anda menyederhanakan hal-hal untuk saya sedikit dan pada tingkat tinggi menguraikan tugas-tugas yang diperlukan untuk melakukan terjemahan dasar pertanyaan sederhana ke dalam SQL?

Persegi panjang pertama pada diagram alir saya sedikit misteri.

masukkan deskripsi gambar di sini

Misalnya, saya mungkin ingin tahu:

How many books were sold last month?

Dan saya ingin itu diterjemahkan

Select count(*) 
  from sales 
  where 
   item_type='book' and 
   sales_date >= '5/1/2014' and 
   sales_date <= '5/31/2014'
Steve Kallestad
sumber

Jawaban:

6

Permintaan bahasa alami menimbulkan banyak seluk-beluk yang bisa sangat sulit untuk digeneralisasi. Dari level tinggi, saya akan mulai dengan mencoba memikirkan hal-hal dalam hal kata benda dan kata kerja.

Jadi untuk kalimat: Berapa banyak buku yang terjual bulan lalu?

Anda akan mulai dengan memecah kalimat ke bawah dengan parser yang akan mengembalikan format pohon yang mirip dengan ini:

masukkan deskripsi gambar di sini

Anda dapat melihat bahwa ada buku pelajaran, frasa verbal majemuk yang menunjukkan tindakan penjualan di masa lalu, dan kemudian frasa kata benda di mana Anda memiliki fokus waktu sebulan.

Kami lebih lanjut dapat memecah subjek untuk pengubah: "berapa banyak" untuk buku, dan "terakhir" untuk bulan.

Setelah Anda memecah kalimat ke bawah, Anda perlu memetakan elemen-elemen itu ke bahasa sql misalnya: berapa banyak => jumlah, buku => buku, penjualan => penjualan, bulan => sales_date (interval), dan sebagainya.

Akhirnya, setelah Anda memiliki unsur-unsur bahasa Anda hanya perlu membuat seperangkat aturan untuk bagaimana entitas yang berbeda berinteraksi satu sama lain, yang membuat Anda:

Pilih hitungan (*) dari penjualan di mana item_type = 'book' dan sales_date> = '5/1/2014' dan sales_date <= '5/31/2014'

Ini adalah tingkat tinggi bagaimana saya akan memulai, sementara hampir setiap langkah yang saya sebutkan adalah non-sepele dan benar-benar lubang kelinci bisa tidak ada habisnya, ini akan memberi Anda banyak titik untuk terhubung.

neone4373
sumber
1

Mengubah pertanyaan sederhana menjadi jawaban bukanlah hal yang sederhana .

Teknologi pertama yang melakukan ini sebagai teknologi yang luas dan akurat akan menjadi pemenang besar.

Namun, ada beberapa di luar sana, mengisi kekosongan dengan "menjawab pertanyaan" dengan Kecerdasan Buatan (misalnya IBM Watson, dan Amazon Alexa). Ini membutuhkan pemecahan kompleksitas bahasa yang terkait dengan data yang dipertanyakan, apa yang ada di penyimpanan data, dan apa itu kata benda, kata kerja, dan kata ganti.

Microsoft memberanikan diri di sini dengan Pertanyaan Bahasa Inggris tetapi, kemudian berhenti. Kueri.me adalah platform berbasis Python yang melakukan hal yang sama.

Bahasa Query Terstruktur (SQL) dan sejenisnya, SOQL, MDX, Hive, Impala dan yang lebih baru menggunakan SQL kuno. Belum banyak menggantikan apa pun, semua bagian ini adalah perbaikan kecil untuk "Tujuan Akhir" yang lebih besar dan yang terletak pada Kecerdasan Buatan (AI), khususnya, Pembelajaran Mesin.

Pertanyaannya adalah:

"Bisakah komputer, mencari tahu apa yang kamu inginkan."

Belum. Dibutuhkan Ahli Bahasa, Matematikawan, Insinyur, dan lainnya untuk berkontribusi semua bagian pai mereka sehingga kita dapat menikmati beberapa kue buatan Intelligent Intelligent dan Machine Learned.

ratchet
sumber
0

Ada beberapa pendekatan untuk membuat parser yang akan mem-parsing pesan teks menjadi SQL. Misalnya, Anda bisa membuat parser berbasis tata bahasa dan menggunakan algoritma NLP untuk membangun kueri terstruktur. Jika Anda sudah memiliki banyak pesan yang diuraikan dari satu domain (seperti e-commerce) - Anda dapat mencoba pendekatan Machine Learning dan menggunakannya untuk penguraian lebih lanjut.

Namun, saya pikir pendekatan terbaik adalah menggabungkan parser berbasis tata bahasa untuk terjemahan teks-ke-SQL, dan ML untuk melengkapi tata bahasa berbasis aturan dengan memperbaiki sintaksis, menghapus kesalahan ketik, dll.

Pelajari lebih lanjut tentang berbagai pendekatan di sini .

MicRum
sumber