Лемматизатор Wordnet для R

Я хотел бы использовать лемматизатор wordnet для лемматизации слов в a

> a<-c("He saw a see-saw on a sea shore", "she is feeling cold")
> a
[1] "He saw a see-saw on a sea shore" "she is feeling cold"  

Я преобразовываю a в корпус и выполняю шаги предварительной обработки (например, удаление стоп-слов, лемматизация и т. д.).

> a <- Corpus(VectorSource(a))

Я хотел сделать лемматизацию следующим образом:

> filter <- getTermFilter("ExactMatchFilter", a, TRUE)
> terms <- getIndexTerms("NOUN", 1, filter)
> sapply(terms, getLemma)

но я получаю эту ошибку

> filter <- getTermFilter("ExactMatchFilter", a, TRUE)
Error in .jnew(paste("com.nexagis.jawbone.filter", type, sep = "."), word,  : 
  java.lang.NoSuchMethodError: <init>

Моя идея состоит в том, чтобы лемматизировать весь корпус, а не одно слово. Как это можно сделать?


person user1946217    schedule 19.02.2013    source источник
comment
Не совсем уверен в использовании R для взаимодействия с WordNet или любым средством NLP, но здесь я бы использовал rpy для выполнения бизнеса R и использовал NLTK для WordNet/лемматизации. Конечно, это работает, ЕСЛИ ваш код НЕ ДОЛЖЕН быть в R по какой-то причине.   -  person dmn    schedule 26.02.2013


Ответы (1)


Поместите свой код в цикл, вы можете попробовать что-то вроде этого:

       lapply(a,function(x){
            x.filter <- getTermFilter("ExactMatchFilter", x, TRUE))
            terms <- getIndexTerms("NOUN", 1, x.filter)
            sapply(terms, getLemma)
         })
person agstudy    schedule 19.02.2013
comment
По какой-то причине этот код с данными OP дает мне список с двумя элементами, которые являются пустыми списками. Что мне не хватает? - person expert; 05.05.2017