Doğal Dil İşleme için Java veya Python [kapalı]


112

Doğal dil işleme için hangi programlama dilinin daha iyi olduğunu bilmek istiyorum. JavaPython mu? Bununla ilgili birçok soru ve cevap buldum. Ama yine de hangisini kullanacağımı seçmekte kayboldum.

Ve çok sayıda kitaplık (LingPipe, GATE, OpenNLP, StandfordNLP) olduğundan Java için hangi NLP kitaplığını kullanacağımı bilmek istiyorum. Python için çoğu programcı NLTK'yi önerir.

Ancak, bazı yararlı bilgiler elde etmek için yapılandırılmamış verilerden (sadece serbest biçimlendirilmiş düz İngilizce metin) metin işleme veya bilgi çıkarma işlemi yapacaksam , en iyi seçenek nedir? Java mı Python mu? Uygun kütüphane?

Güncellenmiş

Yapmak istediğim şey, yapılandırılmamış verilerden faydalı ürün bilgilerini çıkarmaktır (örneğin, kullanıcılar çok standart olmayan İngilizce dili ile mobil veya dizüstü bilgisayarlar hakkında farklı reklam biçimleri yaparlar)


47
Bu tür soruların burada SO'da hoş karşılanmamasından nefret ediyorum. Sanırım amaç kutsal savaşları önlemekti, ancak bu IMO'nun içeriğine katkıda bulunuyor.
L0j1k

2
"Önde gelen Java ve Python NLP kitaplıkları ve bunların göreceli güçlü yönleri nelerdir?" belki bu onu çözer? Cevap zamanla değişir, ancak bunun gibi soruları da çok yararlı buluyorum.
Scott Smith

5
Ayrıca bu tür soruların SO'da memnuniyetle karşılanmasını diliyorum. Geçenlerde Python ile R arasındaki NLP güçlerini araştırmaya çalıştım ve hemen düşürüldü. Projelerini doğru dilde çerçevelemeye çalışanlar için bueno değil.
Ksofiac

Yanıtlar:


133

NLP için Java vs Python, büyük ölçüde bir tercih veya gerekliliktir. Şirkete / projelere bağlı olarak, birini veya diğerini kullanmanız gerekecek ve genellikle bir projeye başkanlık etmediğiniz sürece çok fazla seçenek yoktur.

Dışında NLTK(www.nltk.org), metin işleme için diğer kütüphaneler aslında vardır python:

(daha fazla bilgi için bkz. https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search )

Çünkü Javatonlarca başkası var ama işte başka bir liste:

Bu, temel dize işleme için güzel bir karşılaştırmadır, bkz. Http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html

GATE ile UIMA ile OpenNLP arasında faydalı bir karşılaştırma için bkz. Https://www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version=4

NLP için hangi dilin seçileceğinden emin değilseniz, kişisel olarak "size istenen analizi / çıktıyı verecek herhangi bir dil" diyorum, bkz . Doğal dil işleme için hangi dil veya araçlar öğrenilmelidir?

İşte oldukça yeni (2017) NLP araçları: https://github.com/alvations/awesome-community-curated-nlp

NLP araçlarının eski bir listesi (2013): http://web.archive.org/web/20130703190201/http://yauhenklimovich.wordpress.com/2013/05/20/tools-nlp


Dil işleme araçları dışında, ardışık düzenlere machine learningdahil etmek için araçlara çok ihtiyaç duyarsınız NLP.

Orada bir bütün aralık içinde olduğunu Pythonve Javave yine bir kez tercihine kalmış ve kitaplıklar kullanıcı dostu yeterli olmadığını:

Python'da Makine Öğrenimi kitaplıkları:

(Daha fazla bilgi için bkz. https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search )


NLP'deki son (2015) derin öğrenme tsunamisiyle , muhtemelen şunları düşünebilirsiniz: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

Derin öğrenme araçlarını iltimas / tarafsızlık nedeniyle listelemekten kaçınacağım.


NLP / ML araçları için de sorulan diğer Stackoverflow soruları:


1
NLP ve
Jin Ling

42

Soru çok açık uçlu. Bununla birlikte, birini seçmek yerine, kullanmak istediğiniz dile bağlı olarak aşağıda bir karşılaştırma verilmiştir (çünkü her iki dilde de iyi kütüphaneler mevcuttur).

piton

Python açısından bakmanız gereken ilk yer Python Natural Language Toolkit'tir . Tanımlarında belirttikleri gibi, NLTK, insan dili verileriyle çalışmak üzere Python programları oluşturmak için lider bir platformdur. Sınıflandırma, belirteç oluşturma, saplama, etiketleme, ayrıştırma ve anlamsal akıl yürütme için bir dizi metin işleme kitaplığı ile birlikte WordNet gibi 50'den fazla kurum ve sözcük kaynağına kullanımı kolay arayüzler sağlar.

Ayrıca, Google'ın Python tabanlı Natural Language Toolkit projesinden kaynaklanan, arayabileceğiniz bazı mükemmel kodlar da var. GitHub'da bu koda bir bağlantı bulabilirsiniz .

Java

Bakılacak ilk yer Stanford'un Doğal Dil İşleme Grubu olacaktır . Orada dağıtılan tüm yazılımlar Java ile yazılmıştır. Tüm yeni dağıtımlar Oracle Java 6+ veya OpenJDK 7+ gerektirir. Dağıtım paketleri, komut satırı çağrısı, jar dosyaları, bir Java API ve kaynak kodu için bileşenler içerir.

Burada birçok makine öğrenimi ortamında gördüğünüz bir başka harika seçenek (genel seçenek), Weka'dır . Weka, veri madenciliği görevleri için makine öğrenimi algoritmalarının bir koleksiyonudur. Algoritmalar doğrudan bir veri kümesine uygulanabilir veya kendi Java kodunuzdan çağrılabilir. Weka, veri ön işleme, sınıflandırma, regresyon, kümeleme, ilişkilendirme kuralları ve görselleştirme için araçlar içerir. Ayrıca yeni makine öğrenimi şemaları geliştirmek için de çok uygundur.


9
Harika cevap. Bu tür soruların neden burada aşağıya bakıldığını gerçekten anlamıyorum. +1
L0j1k

8
Tamamen katılıyorum. Sorulan soru genel. Bununla birlikte, bunlar, özellikle bir alanda yeniyken, kendimi sık sık karşı karşıya bulduğum türden sorulardır.
Nathaniel Payne

1
Java tabanlı kitaplıklar ve araçlar açısından bakabileceğiniz bir diğer harika şey ise LingPipe. alias-i.com/lingpipe
Nathaniel Payne

2
@NathanielPayne: Önerileriniz için çok teşekkür ederim. Bu bana NLP'yi başlatmak için bir rehber veriyor.
Jin Ling
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.