2011-07-12 5 views
12

¿Hay alguna manera de conseguir la palabra base en lugar de la palabra raíz para detener el uso de la PNL en R?palabra de base derivados en lugar de la palabra raíz derivada en I

Código:

> #Loading libraries 
> library(tm) 
> library(slam) 
> 
> #Vector 
> Vec=c("happyness happies happys","sky skies") 
> 
> #Creating Corpus 
> Txt=Corpus(VectorSource(Vec)) 
> 
> #Stemming 
> Txt=tm_map(Txt, stemDocument) 
> 
> #Checking result 
> inspect(Txt) 
A corpus with 2 text documents 

The metadata consists of 2 tag-value pairs and a data frame 
Available tags are: 
    create_date creator 
Available variables in the data frame are: 
    MetaID 

[[1]] 
happi happi happi 

[[2]] 
sky sky 

> 

¿Puedo obtener base de la palabra "feliz" (palabra de base) en lugar de "happi" (palabra de raíz) para "happies happyness happys" utilizando R.

+0

no estoy seguro acerca de R específicamente, pero en general necesita un analizador morpológico, por ejemplo, puede obtener este sistema operativo uno: http://seman.svn.sourceforge.net/viewvc/seman/trunk/Docs/Morph_UNIX.txt ? revision = 124 & view = markup –

+0

Lo más probable es que no le interesen los tallos, sino un lematizador. hmmm podría compartir con ustedes mi propio lematizador abierto para inglés si así lo requieren. pero está escrito en python ... – alvas

Respuesta

2

Eres probablemente buscando un stemmer. Éstos son algunos de los analizadores lingüísticos CRAN Task View: Natural Language Processing:

  • RWeka es una interfaz de Weka que es una colección de algoritmos de aprendizaje automático para tareas de minería de datos escritos en Java. Especialmente útil en el contexto del procesamiento del lenguaje natural es su funcionalidad para la tokenización y la derivación.

  • Snowball proporciona los generadores de bolas Snowball que contienen la lentilla Porter y varias otras levas para diferentes idiomas. Vea la página web Snowball para más detalles.

  • Rstem es una interfaz alternativa a una versión C del algoritmo de derivación de palabras de Porter.

-1

Cuando necesitaba hacer algo similar, escribí mi lista de palabras en un archivo de texto, y se alimenta a la herramienta web de consulta del Léxico Proyecto Inglés, y luego analizado el resultado en R. Un poco torpe , pero muchos datos buenos están disponibles en ELP. Para su uso, consulte el MorphSP de ELP. Para la felicidad, da {} feliz> dad>

http://elexicon.wustl.edu/query14/query14.asp

0

stemCompletion podrían utilizarse aquí. No es el mejor pero manejable.

Stemm = tm_map(Txt, stemCompletion, dictionary=Txtt) 
inspect(Stemm) 

A corpus with 2 text documents 

The metadata consists of 2 tag-value pairs and a data frame 
Available tags are: 
    create_date creator 
Available variables in the data frame are: 
    MetaID 

[[1]] 
happyness happies happies 

[[2]] 
sky sky 
+0

stemCompletion es una tarea lenta, ¿hay alguna alternativa para obtener las mismas palabras? Por favor, alguien ayuda para esto. –

1

Sin un buen conocimiento de la morfología del inglés, tendría que utilizar una biblioteca existente en lugar de crear su propia lectora.

Inglés está lleno de sorpresas inesperadas morfológicos que afectarían a ambos modelos probabilísticos y basados ​​en reglas. Algunos ejemplos son:

  • Extracción de un prefijo in- para eliminar un -able sufijo, como en inhabitable.
  • Cambio de la categoría de la palabra, como en el sustantivo bicicleta resultante de la derivación del verbo ciclismo (puede afectar las reglas en función de las categorías).
  • Palabras con significados negativos no pueden tomar prefijos negativos (puede tener unpretty, pero no unugly).
  • Dos palabras como un compuesto, como en "conductor de camión" (lo haría con ellos como una sola palabra cuando STEM).

Inglés también tiene un problema con la I-diéresis, donde las palabras como los hombres, gansos, pies, mejor, y una serie de otras palabras (todos con un 'sonido e'-like) pueden no ser fácilmente provenían. El robo de palabras prestadas extranjeras, como autómata, también puede ser un problema.

Frenando la forma superlativa es un buen ejemplo de excepciones:

mejor -> buena

mayor -> edad

Un lematizador daría cuenta de tales excepciones, pero sería más lento. Puede ver las reglas de la lectora de Porter para tener una idea de lo que necesita, o simplemente puede usar su paquete SnowballC R.

Cuestiones relacionadas