Memproses data parsing bahasa alami yang ada

12

Saya baru-baru ini mulai bereksperimen dengan pemrosesan bahasa alami (NLP) menggunakan CoreNLP dari Stanford , dan saya bertanya-tanya apa saja cara standar untuk menyimpan data parsing NLP untuk sesuatu seperti aplikasi penambangan teks?

Salah satu cara yang saya pikir mungkin menarik adalah untuk menyimpan anak-anak sebagai daftar adjacency dan memanfaatkan kueri rekursif (Postgres mendukung ini dan saya merasa ini bekerja dengan sangat baik).

Tapi saya berasumsi mungkin ada banyak cara standar untuk melakukan ini tergantung pada jenis analisis apa yang sedang dilakukan yang telah diadopsi oleh orang yang bekerja di lapangan selama bertahun-tahun. Jadi apa strategi persistensi standar untuk data parsing NLP dan bagaimana mereka digunakan?

Arseni Mourzenko
sumber

Jawaban:

3

Saya pernah bekerja dengan NLP toolkit dan mengalami masalah yang Anda jelaskan. Saya pikir ada (setidaknya) dua pendekatan:

  • (pendekatan implisit), gunakan memoisasi

    Dalam bahasa pemrograman di mana fungsi adalah objek kelas satu (seperti Lua, Python, atau Perl 1 ), memoisasi otomatis dapat diimplementasikan dengan mengganti (pada saat run-time) fungsi dengan nilai yang dihitung setelah nilai telah dihitung untuk diberikan mengatur parameter.

    Ini adalah pendekatan yang saya gunakan dan dapat diimplementasikan dengan cepat; kekurangannya adalah, bahwa struktur data yang lebih besar tertentu akan bertahan pada disk, dan sementara memuat adalah urutan besarnya lebih cepat dari perhitungan ulang, masih butuh waktu.

  • (eksplisit), gunakan beberapa database, baik itu relasional atau berorientasi dokumen, untuk menyimpan semua hasil yang mungkin Anda pedulikan di masa depan. Ini membutuhkan lebih banyak perhatian di awal, tetapi akan menghasilkan dalam jangka panjang.

Mungkin menarik:


Sunting: Hal lain yang telah saya gunakan akhir-akhir ini untuk komputasi berjalan lama multistep adalah kerangka kerja alur kerja, yang ada lusinan . Ini bukan tentang ketekunan, tetapi ketekunan adalah langkah dalam alur kerja. Saya mencoba luigi untuk itu dan itu datang, misalnya dengan Hadoop dan kelas pembantu Postgres, yang dapat menghilangkan banyak kode boilerplate.

miku
sumber
2

Strategi yang baik adalah dengan menggunakan database fitur Reduce / Map yang bagus, juga tahu seperti database NOSQL, seperti MongoDB atau CouchDB.
Basis data tesis ini memungkinkan untuk membuat aturan kode sederhana yang memetakan syarat dan kedekatan, dan aturan kode sederhana untuk mengurangi informasi (juga "grup").

Anda dapat mulai di sini:
http://www.mongodb.org/
http://wiki.apache.org/couchdb/

g.annunziata
sumber