Java atau Python untuk Pemrosesan Bahasa Alami [tutup]

112

Saya ingin tahu bahasa pemrograman mana yang lebih baik untuk pemrosesan bahasa alami. Java atau Python ? Saya telah menemukan banyak pertanyaan dan jawaban tentang hal itu. Tapi saya masih bingung memilih mana yang akan digunakan.

Dan saya ingin tahu library NLP mana yang akan digunakan untuk Java karena ada banyak library (LingPipe, GATE, OpenNLP, StandfordNLP). Untuk Python, kebanyakan programmer merekomendasikan NLTK.

Tetapi jika saya akan melakukan pemrosesan teks atau ekstraksi informasi dari data tidak terstruktur (hanya teks bahasa Inggris biasa yang dibentuk bebas) untuk mendapatkan beberapa informasi yang berguna, apa pilihan terbaik? Java atau Python? Perpustakaan yang cocok?

Diperbarui

Yang ingin saya lakukan adalah mengekstrak informasi produk yang berguna dari data tidak terstruktur (Misalnya, pengguna membuat berbagai bentuk iklan tentang ponsel atau laptop dengan bahasa Inggris yang tidak terlalu standar)

Jin Ling
sumber
47
Saya benci bahwa pertanyaan semacam ini tidak diterima di sini di SO. Saya pikir tujuannya adalah untuk mencegah perang suci, tetapi ini berkontribusi pada konten IMO.
L0j1k
2
Jika ada kata yang mengatakan "Apa pustaka Java dan Python NLP terkemuka dan kekuatan relatifnya?" mungkin itu menyelesaikannya? Jawabannya berubah seiring waktu, tetapi saya juga menemukan pertanyaan seperti ini sangat berguna.
Scott Smith
5
Saya juga berharap pertanyaan semacam ini disambut baik di SO. Saya baru-baru ini mencoba untuk mensurvei kekuatan NLP di Python vs R, dan itu langsung ditembak jatuh. Bukan bueno bagi mereka yang mencoba membingkai proyek mereka dalam bahasa yang tepat.
Ksofiac

Jawaban:

133

Java vs Python untuk NLP adalah preferensi atau kebutuhan. Bergantung pada perusahaan / proyek, Anda harus menggunakan satu atau yang lain dan seringkali tidak banyak pilihan kecuali Anda sedang menuju proyek.

Selain NLTK(www.nltk.org), sebenarnya ada perpustakaan lain untuk pemrosesan teks di python:

(untuk lebih lanjut, lihat https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search )

Karena Java, ada banyak sekali lainnya, tetapi inilah daftar lainnya:

Ini adalah perbandingan yang bagus untuk pemrosesan string dasar, lihat http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html

Perbandingan berguna antara GATE vs UIMA vs OpenNLP, lihat https://www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version=4

Jika Anda tidak yakin, bahasa mana yang akan digunakan untuk NLP, secara pribadi saya katakan, "bahasa apa pun yang akan memberi Anda analisis / keluaran yang diinginkan", lihat Bahasa atau alat apa yang harus dipelajari untuk pemrosesan bahasa alami?

Berikut ini (2017) alat NLP yang cukup baru: https://github.com/alvations/awesome-community-curated-nlp

Daftar alat NLP yang lama (2013): http://web.archive.org/web/20130703190201/http://yauhenklimovich.wordpress.com/2013/05/20/tools-nlp


Selain alat pengolah bahasa, Anda akan sangat membutuhkan machine learningalat untuk dimasukkan ke dalam NLPpipeline.

Ada keseluruhan rentang dalam Pythondan Java, dan sekali lagi terserah preferensi dan apakah pustaka cukup ramah pengguna:

Library Machine Learning di python:

(untuk lebih lanjut, lihat https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search )


Dengan tsunami deep learning (2015) baru-baru ini di NLP , Anda mungkin dapat mempertimbangkan: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

Saya akan menghindari mencantumkan alat pembelajaran mendalam dari non-favoritisme / netralitas.


Pertanyaan Stackoverflow lain yang juga menanyakan fitur NLP / ML:

alva
sumber
1
Terima kasih telah memberikan banyak informasi tentang alat NLP dan ML
Jin Ling
42

Pertanyaannya sangat terbuka. Oleh karena itu, daripada memilih satu, di bawah ini adalah perbandingan bergantung pada bahasa yang ingin Anda gunakan (karena ada pustaka bagus yang tersedia di kedua bahasa).

Python

Dalam hal Python, tempat pertama yang harus Anda lihat adalah Python Natural Language Toolkit . Seperti yang mereka catat dalam deskripsinya, NLTK adalah platform terdepan untuk membangun program Python untuk bekerja dengan data bahasa manusia. Ini menyediakan antarmuka yang mudah digunakan ke lebih dari 50 korpora dan sumber daya leksikal seperti WordNet, bersama dengan rangkaian pustaka pemrosesan teks untuk klasifikasi, tokenisasi, stemming, penandaan, parsing, dan penalaran semantik.

Ada juga beberapa kode bagus yang dapat Anda cari yang berasal dari proyek Toolkit Bahasa Alami Google yang berbasis Python. Anda dapat menemukan tautan ke kode itu di sini di GitHub .

Jawa

Tempat pertama untuk melihat adalah Grup Pemrosesan Bahasa Alami Stanford . Semua perangkat lunak yang didistribusikan di sana ditulis dalam Java. Semua distribusi terbaru membutuhkan Oracle Java 6+ atau OpenJDK 7+. Paket distribusi mencakup komponen untuk pemanggilan baris perintah, file jar, Java API, dan kode sumber.

Opsi hebat lainnya yang Anda lihat di banyak lingkungan pembelajaran mesin di sini (opsi umum), adalah Weka . Weka adalah kumpulan algoritma pembelajaran mesin untuk tugas-tugas penambangan data. Algoritme dapat diterapkan secara langsung ke kumpulan data atau dipanggil dari kode Java Anda sendiri. Weka berisi alat untuk pemrosesan awal data, klasifikasi, regresi, pengelompokan, aturan asosiasi, dan visualisasi. Ini juga cocok untuk mengembangkan skema pembelajaran mesin baru.

Nathaniel Payne
sumber
9
Jawaban yang luar biasa. Saya benar-benar tidak mengerti mengapa pertanyaan semacam ini dipandang rendah di sini. +1
L0j1k
8
Aku sangat setuju. Pertanyaan yang diajukan bersifat umum. Bisa dikatakan, inilah jenis pertanyaan yang sering saya hadapi, terutama ketika saya baru mengenal suatu daerah.
Nathaniel Payne
1
Dalam hal pustaka dan alat berbasis Java, yang hebat lainnya yang mungkin Anda lihat adalah LingPipe. alias-i.com/lingpipe
Nathaniel Payne
2
@NathanielPayne: Terima kasih banyak atas saran Anda. Itu memberi saya beberapa panduan untuk memulai NLP.
Jin Ling