Chciałbym wiedzieć, który język programowania jest lepszy do przetwarzania języka naturalnego. Java czy Python ? Znalazłem wiele pytań i odpowiedzi na ten temat. Ale wciąż jestem zagubiony w wyborze, którego użyć.
Chcę wiedzieć, której biblioteki NLP użyć w Javie, ponieważ istnieje wiele bibliotek (LingPipe, GATE, OpenNLP, StandfordNLP). W przypadku Pythona większość programistów zaleca NLTK.
Ale jeśli mam zająć się przetwarzaniem tekstu lub wyodrębnianiem informacji z nieustrukturyzowanych danych (po prostu swobodnie sformatowany zwykły tekst angielski), aby uzyskać przydatne informacje, jaka jest najlepsza opcja? Java czy Python? Odpowiednia biblioteka?
Zaktualizowano
Chcę tylko wydobyć użyteczne informacje o produkcie z nieustrukturyzowanych danych (np. Użytkownicy tworzą różne formy reklamy telefonów komórkowych lub laptopów z niezbyt standardowym językiem angielskim)
Odpowiedzi:
Java vs Python dla NLP jest w dużej mierze preferencją lub koniecznością. W zależności od firmy / projektów będziesz musiał użyć jednego lub drugiego i często nie ma dużego wyboru, chyba że kierujesz projektem.
Poza
NLTK
(www.nltk.org) istnieją inne biblioteki do przetwarzania tekstu wpython
:(aby uzyskać więcej informacji, zobacz https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search )
Bo
Java
jest mnóstwo innych, ale oto kolejna lista:To ładne porównanie do podstawowego przetwarzania ciągów, patrz http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html
Przydatne porównanie GATE, UIMA i OpenNLP, zobacz https://www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version=4
Jeśli nie masz pewności, który język wybrać dla NLP, osobiście powiem: „jakikolwiek język, który da ci pożądaną analizę / wyjście”, zobacz, jakiego języka lub narzędzi należy się nauczyć do przetwarzania języka naturalnego?
Oto całkiem niedawne (2017) narzędzia NLP: https://github.com/alvations/awesome-community-curated-nlp
Starsza lista narzędzi NLP (2013): http://web.archive.org/web/20130703190201/http://yauhenklimovich.wordpress.com/2013/05/20/tools-nlp
Poza narzędziami do przetwarzania języka bardzo potrzebowałbyś
machine learning
narzędzi do włączenia doNLP
potoków.Jest cała gama w
Python
iJava
, i po raz kolejny to zależy od preferencji i czy biblioteki są wystarczająco przyjazne dla użytkownika:Biblioteki Machine Learning w Pythonie:
(aby uzyskać więcej informacji, zobacz https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search )
W związku z niedawnym (2015) tsunami głębokiego uczenia się w NLP , być może warto rozważyć: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software
Uniknę wymieniania narzędzi do głębokiego uczenia się z powodu braku faworyzowania / neutralności.
Inne pytania dotyczące Stackoverflow, które dotyczyły również narzędzi NLP / ML:
źródło
Pytanie jest bardzo otwarte. To powiedziawszy, zamiast wybierać jedno, poniżej znajduje się porównanie w zależności od języka, którego chcesz używać (ponieważ istnieją dobre biblioteki dostępne w obu językach).
Pyton
Jeśli chodzi o Python, pierwsze miejsce, na które należy zwrócić uwagę, to Python Natural Language Toolkit . Jak zauważają w swoim opisie, NLTK jest wiodącą platformą do tworzenia programów w Pythonie do pracy z danymi języka ludzkiego. Zapewnia łatwe w użyciu interfejsy do ponad 50 korpusów i zasobów leksykalnych, takich jak WordNet, wraz z zestawem bibliotek przetwarzania tekstu do klasyfikacji, tokenizacji, wyprowadzania, znakowania, analizowania i rozumowania semantycznego.
Istnieje również doskonały kod, który można znaleźć, a który pochodzi z projektu Google Natural Language Toolkit opartego na Pythonie. Możesz znaleźć link do tego kodu tutaj na GitHub .
Jawa
Pierwszym miejscem, na które warto zwrócić uwagę, byłaby Grupa Przetwarzania Języka Naturalnego Stanforda . Całe rozpowszechniane tam oprogramowanie jest napisane w języku Java. Wszystkie najnowsze dystrybucje wymagają Oracle Java 6+ lub OpenJDK 7+. Pakiety dystrybucyjne zawierają komponenty do wywoływania z wiersza poleceń, pliki jar, interfejs API języka Java i kod źródłowy.
Inną świetną opcją, którą widzisz tutaj w wielu środowiskach uczenia maszynowego (opcja ogólna), jest Weka . Weka to zbiór algorytmów uczenia maszynowego do zadań eksploracji danych. Algorytmy można zastosować bezpośrednio do zbioru danych lub wywołać z własnego kodu Java. Weka zawiera narzędzia do wstępnego przetwarzania danych, klasyfikacji, regresji, grupowania, reguł asocjacyjnych i wizualizacji. Jest również dobrze przystosowany do tworzenia nowych schematów uczenia maszynowego.
źródło