Czy ktoś ma jakieś doświadczenia z użyciem StanfordCoreNLP (http://nlp.stanford.edu/software/corenlp.shtml przez rJava w R? Byłem stara się zmusić go do pracy przez dwa dni teraz, i myślę, że wyczerpałem Google i poprzednie pytania na temat StackOverflow.Korzystanie z bibliotek Stanford NLP od wewnątrz R, przy użyciu pakietu rJava
Zasadniczo próbuję korzystać z bibliotek StanfordNLP z poziomu R. Mam zerowe doświadczenie z językiem Java, ale doświadczenie z innymi językami, więc rozumiem podstawy dotyczące klas i obiekty itp.
Z tego co widzę plik demo .java że pochodzi z bibliotek wydaje się wskazywać, że aby skorzystać z klas od wewnątrz Java, można importować biblioteki, a następnie utworzyć nowy obiekt, wzdłuż linii:
import java.io.*;
import java.util.*;
import edu.stanford.nlp.io.*;
import edu.stanford.nlp.ling.*;
import edu.stanford.nlp.pipeline.*;
import edu.stanford.nlp.trees.*;
import edu.stanford.nlp.util.*;
public class demo {
etc.
etc.
StanfordCoreNLP pipeline = new StanfordCoreNLP();
etc.
od wewnątrz R, próbowałem wywoływanie niektórych standardowych funkcji java; działa to dobrze, co sprawia, że myślę, że to jest sposób, w jaki próbuję uzyskać dostęp do bibliotek Stanford, które powodują ten problem.
Wyodrębniono plik Stanford ZIP do h: \ stanfordcore, więc pliki .jar znajdują się w katalogu głównym tego katalogu. Jak również różne inne pliki zawarte w zamek błyskawiczny, zawiera główne .jar:
- Joda-time.jar
- Stanford-corenlp-1.3.4.jar
- Stanford-corenlp- 1.3.4-javadoc.jar
- stanford-corenlp-1.3.4-models.jar
- Joda czasie-2,1-sources.jar
- jollyday-0.4.7-sources.jar
- stanford- corenlp-1.3.4-sources.jar
- xom.jar
- jollyday.jar
Gdy próbuję uzyskać dostęp do narzędzi NLP z linii poleceń, to działa dobrze.
Od wewnątrz R, I initalized JVM i ustawić zmienną ścieżce klasy:
.jinit(classpath = " h:/stanfordcore", parameters = getOption("java.parameters"),silent = FALSE, force.init = TRUE)
Po tym, jeśli mam użyć polecenia
.jclassPath()
To pokazuje, że katalog zawierający wymaganą .jar pliki zostały dodane i daje to wyjście w R:
[1] "H: \ RProject-2.15.1 \ biblioteka \ rJava \ java" "h: \ stanfordcore"
Jednak gdy próbuję utworzyć nowy obiekt (nie wiem, czy jest to właściwa terminologia Java), pojawia się błąd.
Próbowałem tworzenia obiektu w dziesiątki różnych sposobów (w zasadzie filmowania w ciemności choć), ale najbardziej obiecujące (tylko dlatego, że wydaje się rzeczywiście znaleźć klasę jest):
pipeline <- .jnew(class="edu/stanford/nlp/pipeline/StanfordCoreNLP",check=TRUE,silent=FALSE)
I Wiem, że to znajduje klasę, ponieważ jeśli zmienię parametr klasy na coś, co nie jest wymienione w interfejsie API, otrzymam komunikat, że nie można znaleźć błędu klasy.
W obecnej jednak, pojawia się błąd:
Błąd w .jnew (class = "edu/Stanford/NLP/rurociąg/StanfordCoreNLP" check = TRUE: java.lang.NoClassDefFoundError : Nie można zainicjować klasy edu.stanford.nlp.pipeline.StanfordCoreNLP
Moje googlowanie wskazuje, że może to mieć związek z brakiem wymaganego pliku .jar, ale całkowicie utknąłem. Czy brakuje mi czegoś oczywistego ?
Jeśli ktoś może wskazać mi choć trochę we właściwym kierunku, byłbym niewiarygodnie wdzięczny.
Z góry dziękuję!
Peter
Nie, ale odniosłem sukces z openNLP, który wydaje się robić to, o co prosisz: http://cran.r-project.org/web/packages/openNLP/openNLP.pdf. Pomiędzy tym i pakietem 'tm', wydaje mi się, że będziesz miał sporo narzędzi, które zostały przetestowane i pracują z R raczej łatwo. –
Nie posiadam doświadczenia rjava i moja pierwsza próba również nie powiodła się. (Widziałem w pomocy dla rjava, że zalecał używanie pakietu .jpackage, a nie .jinit, jak to jest.) Ale jest to tylko ogólny błąd, gdy nie można znaleźć klasy. Twój problem nie jest specyficzny dla StanfordCoreNLP, ale raczej kwestia nauki, jak uzyskać rjava, aby załadować dowolną bibliotekę zewnętrzną w pliku jar .... –
Dzięki @TylerRinker. Właściwie mam już instalację, która używa tm, OpenNLP i Wordnet, która działa dobrze. Jednak w moim nowym projekcie naprawdę potrzebuję syntaktycznego parsera, który wydaje się nadal być w fazie eksperymentalnej z OpenNLP (przynajmniej to, co mówią doktorzy na swojej stronie internetowej). Biblioteki Stanford mają świetny parser, który obejmuje wstępnie wyszkolone modele, więc byłoby idealnie, gdybym mógł je uruchomić z R ... –