Czy istnieje dobra biblioteka do przetwarzania języka naturalnego [zamknięte]

90

Muszę zaimplementować NLP w moim obecnym module. Szukam dobrej biblioteki, która może mi tutaj pomóc. Natknąłem się na „LingPipe”, ale nie mogłem do końca śledzić, jak go używać.
Zasadniczo musimy zaimplementować funkcję, w której aplikacja może odszyfrować instrukcje klienta (instrukcje dostawy) napisane prostym angielskim. Na przykład:

  • Odbiór jutro o 12:00
  • Zamów dostawę po 10 czerwca
  • Prosimy nie wysyłać do środy
  • Dodaj 10 kolejnych jednostek XYZ do zamówienia
Vini
źródło

Odpowiedzi:

79

LingPipe jest bardzo ładny i dobrze udokumentowany. Możesz też rzucić okiem na:

Ta ostatnia szczególnie może Cię zainteresować, chociaż nie wiem, czy są jakieś łatwo dostępne implementacje Java (a może i tak jest to zbyt duża broń dla twojego problemu :-)

Pomysł Paula dotyczący korzystania z DSL jest prawdopodobnie łatwiejszy i szybszy do wdrożenia oraz bardziej niezawodny w użyciu dla Twoich klientów. Ja też poleciłbym najpierw przyjrzeć się temu.

n3rd
źródło
1
Raport przedstawiłem na podstawie danych zebranych z tego forum i innych miejsc w sieci. Zasugerowałem również inne opcje, które zasugerowałeś, a Biz zdecydował się to wstrzymać (teraz rozpoczyna się R & D, aby znaleźć najlepszego możliwego kandydata).
Vini
1
Jeśli porównasz LingPipe i inne, które wymieniłeś, który wolisz? Pytam nie tylko o pytanie @ Winnie, ale o to w ogólnym celu.
kamaci
1
Sprawdź MALLET: mallet.cs.umass.edu
Samik R
11

Myślę, że to, czy zdecydujesz się użyć NLP, może zależeć od konkretnych wymagań twojego systemu. Czy wymagana jest akceptacja języka angielskiego w dowolnej formie, czy też akceptowany będzie tylko określony zestaw instrukcji? Może być łatwiej zbudować język specyficzny dla domeny, który obsługuje to, co muszą przekazać Twoi użytkownicy, niż przeprowadzić pełną analizę semantyczną dowolnego tekstu.

W przestrzeni Java Groovy ma pewne wsparcie dla budowania DSL .

Paul Morie
źródło
Oto kilka wierszy z dokumentu wymagań: „.. a użytkownik powinien mieć możliwość wprowadzenia notatki lub specjalnej instrukcji w prostym języku angielskim. System powinien następnie przeanalizować instrukcję użytkownika i wypełnić odpowiednie pola (jeśli są) zamówienia poprawnymi wartościami. ”
Vini
10
To dość niejasny wymóg. Na przykład, czy notatka musi być poprawna gramatycznie? Nie jestem pewien, czy strony, które wymyśliły wymagania, są zaznajomione ze stanem NLP, ale problem, który opisali, polega w zasadzie na czytaniu ze zrozumieniem lub zrozumieniu języka naturalnego, co jest jednym z problemów określanych jako `` święty graal ”NLP. Wątpię, czy znajdziesz pakiet, który może po prostu „zrobić to” za Ciebie - prawdopodobnie znacznie bardziej realistyczne jest udostępnienie użytkownikowi interfejsu użytkownika, w którym może określić ograniczoną liczbę specjalnych instrukcji.
Paul Morie
8

Aby uzyskać informacje na temat innych języków JVM, zobacz

oluies
źródło
Wydaje się, że część NLP Scala NLP o nazwie Epic nadal będzie dostępna wkrótce.
Erik Kaplun,