2016-10-13 15 views
8

Robiłem trochę porównanie tych dwóch pakietów i nie jestem pewien, w jakim kierunku pójść w co szukam to krótko:OpenNLP vs Stanford CoreNLP

  1. rozpoznawanie jednostek nazwanych (ludzie, miejsca, , organizacje i podobne).
  2. Identyfikacja płci.
  3. Przyzwoity interfejs szkoleniowy.

Z tego co wiem, OpenNLP i Stanford CoreNLP mają podobne możliwości. Jednak Stanford CoreNLP wygląda na to, że ma o wiele więcej aktywności, podczas gdy OpenNLP miał tylko kilka zatwierdzeń w ciągu ostatnich sześciu miesięcy.

Na podstawie tego, co zobaczyłem, OpenNLP wydaje się łatwiejsze do szkolenia nowych modeli i może być bardziej atrakcyjny tylko z tego powodu. Jednak moje pytanie brzmi: od czego inni zaczynają jako podstawa dodawania funkcji NLP do aplikacji Java? Martwię się głównie o to, czy OpenNLP jest "po prostu dojrzałe", czy raczej porzucone.

Odpowiedz

7

W pełnym ujawnieniu, jestem współtwórcą CoreNLP, więc jest to stronnicza odpowiedź. Ale, moim zdaniem na swoich trzech kryteriów:

  1. rozpoznawanie jednostek nazwanych: Myślę CoreNLP wyraźnie wygrywa tutaj, zarówno na dokładność i łatwość użytkowania. Po pierwsze, OpenNLP ma model na tag NER, podczas gdy CoreNLP wykrywa wszystkie znaczniki za pomocą jednego Adnotatora. Co więcej, czasowa rozdzielczość w SUTime to fajna zaleta w CoreNLP. Dokładność, moje anegdotyczne doświadczenie jest takie, że CoreNLP radzi sobie lepiej z tekstem ogólnego zastosowania.

  2. Identyfikacja płci. Myślę, że oba narzędzia są słabo udokumentowane na tym froncie. OpenNLP wydaje się mieć klasę GenderModel; CoreNLP ma Annotator płci.

  3. Training API. Podejrzewam, że interfejs szkoleniowy OpenNLP jest łatwiejszy w obsłudze, a nie w gotowym szkoleniu. Ale jeśli wszystko, co chcesz zrobić, to np. Wytrenować model z pliku CoNLL, oba powinny być proste. Szybkość treningu wydaje się być szybsza w przypadku CoreNLP niż w przypadku innych narzędzi, które wypróbowałem, ale nie formułowałem ich pod względem formalnym, więc weź to z przymrużeniem oka.

-3

To zależy od celów i potrzeb, co wiem o tych dwóch jest OpenNLP jest opensource i CoreNLP nie jest oczywiście.

Ale jeśli spojrzysz na poziom dokładności Stanford CoreNLP, masz dokładniejsze wykrywanie niż OpenNLP. Niedawno zrobiłem porównanie dla tagowania Part Of Speech (POS) dla obu i tak, który jest najbardziej wpływowy w każdym zadaniu NLP, więc w mojej analizie zwycięzcą był CoreNLP.

Tam też dla NER tam i CoreNLP mają dokładniejsze wyniki w porównaniu do OpenNLP.

Więc jeśli dopiero zaczynasz, możesz później zająć OpenNLP, jeśli to konieczne, możesz przejść na numer Stanford CoreNLP.

+6

CoreNLP jest open source. Jest wydany pod GPL v3 na GitHub. –

3

Trochę późno tutaj, ale ja niedawno patrząc na OpenNLP oparta właśnie na tym, że Stanford jest na licencji GPL - jeśli to jest ok dla projektu następnie Stanford jest często określany jako punkt odniesienia/state-of-the-art na NLP.

Powiedział, że wydajność dla wstępnie wyszkolonych modeli będzie zależeć od tekstu docelowego, ponieważ jest bardzo specyficzna dla danej domeny. Jeśli twój tekst docelowy jest podobny do danych, na których zostały przeszkolone modele, powinieneś uzyskać przyzwoite wyniki, ale jeśli nie, będziesz musiał sam je wyszkolić i będzie to zależało od danych treningowych.

Siła OpenNlp to, że jest bardzo rozszerzalny i jest napisany do łatwego użytku z innymi bibliotekami i ma dobre API do integracji - szkolenie jest bardzo proste (gdy już masz dane treningowe) z OpenNLP (I wrote about it here - with a pretty lousy generated data set I was able to get ok results identifying foods), i jest bardzo konfigurowalny - możesz bardzo łatwo skonfigurować wszystkie parametry związane z treningiem i istnieje szereg algorytmów, których możesz użyć (perceptron, maks. entropia, and in the snapshot version they have added Naive Bayes)

Jeśli okaże się, że musisz samodzielnie ćwiczyć modele , Rozważałbym wypróbowanie OpenNlp i zobaczenie, jak to działa tylko dla porównania, ponieważ przy precyzyjnym dostrajaniu można uzyskać całkiem przyzwoite wyniki.

Powiązane problemy