Bagaimana saya bisa mengekstrak kata-kata dari sebuah kalimat dan menentukan bagian dari masing-masing pidato? [Tutup]

19

Saya ingin menulis sesuatu yang mengambil kalimat dan mengidentifikasi setiap kata yang dikandungnya dan mendefinisikan bagian mana dari setiap kata.

Sebagai contoh

Halo Dunia, saya adalah kalimat

akan mengembalikan ini

verb noun, pronoun verb adjective noun

Idealnya, saya ingin mengambil satu langkah lebih jauh dan mengambil sebuah kalimat dan secara terprogram memahami apa yang ingin ditafsirkan dan mungkin melakukan sesuatu tentang hal itu.

Jadi pertanyaan saya adalah, pernahkah seseorang mendengar sesuatu seperti ini?

Vinny
sumber
2
"Halo" adalah kata kerja? Maksudku, aku tidak tahu apa lagi yang akan terjadi, tetapi sepertinya itu bukan kata kerja.
Dan Ray
@DanRay: Mungkin itu pertanyaan untuk english.stackexchange.com?
StriplingWarrior
1
@DanRay haha, Anda tahu? Itu sebabnya saya mencoba mencari tahu jika sesuatu dapat melakukan ini, karena tampaknya saya buruk dalam tata bahasa.
Vinny
@Vinny - Tentu saja mungkin. Masalahnya adalah ... ini adalah ide triliun dolar berikutnya, dan saat ini, masih belum dibuat menjadi produk.
Ramhound
1
@Vinny Ya, seseorang telah mendengar sesuatu seperti itu.
Tulains Córdova

Jawaban:

18

Ini disebut Pemrosesan Bahasa Alami dan ini adalah bidang yang sangat luas dan kompleks. Sesuatu seperti yang Anda gambarkan adalah pencapaian yang monumental, dan bahkan solusi terbaik, seperti Watson , sama sekali tidak sempurna.

Hal-hal seperti ini membuatnya menantang: "Kerbau kerbau Kerbau kerbau kerbau kerbau Kerbau"

kalimat yang benar secara tata bahasa dalam bahasa Inggris Amerika, digunakan sebagai contoh bagaimana homonim dan homofon dapat digunakan untuk membuat konstruksi linguistik yang rumit. Ini telah dibahas dalam literatur sejak tahun 1972 ... Itu juga ditampilkan dalam buku Steven Pinker 1994 The Language Instinct sebagai contoh kalimat yang "tampaknya tidak masuk akal" tetapi secara gramatikal ...

Makna kalimat menjadi lebih jelas ketika dipahami bahwa ia menggunakan kota Buffalo, New York dan kata kerja yang agak tidak umum "menjadi kerbau" (yang berarti "menggertak atau mengintimidasi"), dan ketika tanda baca dan tata bahasa diperluas sehingga kalimat tersebut berbunyi sebagai berikut: "Kerbau kerbau itu kerbau kerbau, kerbau kerbau." Makna menjadi lebih jelas ketika sinonim digunakan: "Buffalo bison bahwa pengganggu bison Buffalo lainnya, sendiri pengganggu bison Buffalo."

Ryathal
sumber
1
Ini yang saya cari! Adakah yang pernah mendengar ada yang mengadaptasi ini dalam skala yang lebih kecil? Sumber terbuka? Contoh ini digunakan dalam skala yang lebih kecil?
Vinny
@Vinny AFAIK tidak banyak tersedia di sumber terbuka karena menyelesaikan masalah ini sangat menguntungkan perusahaan, seperti deteksi tata bahasa MS Word. Ada beberapa program obrolan-bot yang tersedia saya percaya.
Ryathal
1
@Vinny Kesulitan tidak ada hubungannya dengan skala. Pemrosesan bahasa alami memiliki kompleksitas yang melekat yang tidak berkurang ketika Anda mengurangi "skala".
Tulains Córdova
6

Meskipun memecah kalimat dan menentukan kebenaran tata bahasa bersamaan dengan menyelesaikan masalah pertama Anda lebih mudah daripada masalah kedua Anda, banyak kerumitan seperti kata kerja-kata benda atau gerunds seperti berenang, pemrograman, dll dan seluk-beluk lainnya, masih merupakan tantangan - See Morons ' menjawab.

Tetapi masalah kedua Anda - orang-orang telah berupaya keras untuk menemukan solusi yang sempurna, tetapi algoritma "interpretasi" yang benar-benar sempurna tidak dapat direalisasikan secara praktis untuk bahasa alami seperti bahasa Inggris - ada variasi yang akan mengacaukan algoritme Anda. Bidang ini - hibrida antara AI, Ilmu Komputer dan Linguistik dikenal sebagai NLP . Pertimbangkan ini: Bahkan Google Terjemahan tidak sempurna ketika "menafsirkan" kalimat.

Namun demikian, ini adalah bidang yang sangat menarik untuk dicoba.

yati sagade
sumber
@ TriplingWarrior Saya hanya ingin kontras cukup antara dua masalah yang ditimbulkan oleh OP. Dicatat. Sunting dalam perjalanan
yati sagade
4

Saya pikir Anda harus mulai membaca artikel Wikipedia ini:

http://en.wikipedia.org/wiki/Part-of-speech_tagging

(ini adalah bidang penelitian, jangan mengharapkan solusi mudah untuk itu.)

Doc Brown
sumber
2
IT harus ditambahkan bahwa walaupun NLP sangat besar, keras dan mungkin tidak dapat diterapkan pada komputer saat ini, penandaan POS adalah bagian yang termudah darinya, dan dengan ukuran corpus yang cukup atau banyak dedikasi dan penulisan aturan manual dapat diselesaikan dengan hampir sempurna, tentu di atas 99% benar. Itu mungkin cukup untuk kebutuhan Anda.
Kilian Foth
terima kasih, ini persis apa yang saya cari.
Amc_rtty
sebenarnya berdasarkan pada deskripsi OP, ini harus menjadi jawaban yang diterima ketika Anda mengamati @KilianFoth dengan benar
Amc_rtty
-1

Cara murah untuk melakukan ini adalah dengan membuat database kamus (saya hampir yakin seseorang telah melakukan ini).

Perlu dua bidang dalam tabel: worddanusage

Ubah frasa menjadi array string, (setiap kata menjadi string) dan secara independen:

select 'usage' from Dictionary WHERE 'word' = $word; 

Ini solusi yang berat, tetapi yang saya gunakan di masa lalu.

mheinke
sumber
5
Ini mengasumsikan bahwa setiap kata hanya memiliki satu POS yang memungkinkan, dan saya jamin bukan itu masalahnya.
microtherion
Setuju - tidak mungkin ini bisa berhasil (setidaknya dalam bahasa Inggris) dengan semua kata yang dapat bertindak sebagai kata benda, kata kerja, dll., Tergantung pada konteksnya.
Derek