2014-04-05 9 views
3

R에서 망치를 사용하여 토픽 모델을 작성하는 방법에 대한 자습서를 따라했습니다. 내 텍스트 파일은 한 줄에 1 문장 있습니다. 그것은 이렇게 보입니다. 약 50 문장이 있습니다. R 정규 표현식의 Mallet 오류 : java.lang.NoSuchMethodException : 주어진 매개 변수에 적합한 메소드가 없습니다.

Thank you again and have a good day :). 
This is an apple. 
This is awesome! 
LOL! 
i need 2. 
. 
. 
. 

내 코드입니다 따르면

Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, : 
    java.lang.NoSuchMethodException: No suitable method for the given parameters 

:

Sys.setenv(NOAWT=TRUE) 

#setup the workspace 
# Set working directory 
dir<-"/Users/jxn" 
Dir <- "~/Desktop/Chat/malletR/text" # adjust to suit 
require(mallet) 
documents1 <- mallet.read.dir(Dir) 
View(documents1) 
stoplist1<-mallet.read.dir("~/Desktop/Chat/malletR/stoplists") 
View(stoplist1) 
**mallet.instances <- mallet.import(documents1$id, documents1$text, "~/Desktop/Chat/malletR/stoplists/en.txt", token.regexp ="\\p{L}[\\p{L}\\p{P}]+\\p{L}")** 

모든 코드의 마지막 줄을 제외하고 작동이 오류가 계속

**`**mallet.instances <- mallet.import(documents1$id, documents1$text, "~/Desktop/Chat/malletR/stoplists/en.txt", token.regexp ="\\p{L}[\\p{L}\\p{P}]+\\p{L}")**`** 

패키지에, 이건 내가 함수가 어떻게해야 S :

mallet.instances <- mallet.import(documents$id, documents$text, "en.txt", 
        token.regexp = "\\p{L}[\\p{L}\\p{P}]+\\p{L}") 

나는 그것이 mallet.instances에 공급되는 처음 3 개 인수가 올바른 것을 의미
documents1 <- mallet.read.dir(Dir) 작품 잘으로 token.regexp 인수와 함께 할 수있는 뭔가가 생각합니다.

이것은 자습서를 따르던 git repo에 대한 링크입니다. https://github.com/shawngraham/R/blob/master/topicmodel.R

모든 도움을 주시면 감사하겠습니다.

덕분에, J

답변

6

나는 문제는 텍스트 파일입니다 생각한다. 저도 같은 오류가 발생하여 다음과 같이 as.character() 기능을 사용하여 해결 한 : 당신은 당신이 문자로도 id 필드를 변환해야합니다

mallet.instances <- mallet.import(as.character(documents$id), as.character(documents$text), "en.txt", FALSE, token.regexp="\\p{L}[\\p{L}\\p{P}]+\\p{L}")

+0

같은 문제가 있지만 solution.http 작동하지 않았다 : 당신은 어떤 생각이있는 경우 //stackoverflow.com/questions/5228750/rjava-jcall-issue 궁금해. –

0

있습니까? 조언을 간과하고 정수로 두는 것은 쉽습니다.

Also there is a typo in the code sample: the backslashes have to be escaped: 
    token.regexp = "\\p{L}[\\p{L}\\p{P}]+\\p{L}" 
This usually occurs because the html text editor eats up one backslash.