es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pregunta sobre el pre-procesamiento de texto ruso para stm en R.

Estoy intentando ejecutar un modelo de temas estructurales en R utilizando el paquete stm. El corpus es una colección de discursos en ruso. El problema que tengo es que las palabras en ruso no están siendo preprocesadas correctamente. Aquí está el código que he escrito hasta ahora:

library(stm)        # Paquete para el modelado de temas estructurales
library(igraph)     # Paquete para el análisis y visualización de redes
library(stmCorrViz) # Paquete para ver la correlación jerárquica de los STM

datos <- read.csv("convocation4.csv") # Cargar datos

stopwordsRU <- readLines("stopwords_russian.txt", encoding = "UTF-8") # Palabras vacías personalizadas

procesado <- textProcessor(
  datos$texto,
  metadata = datos,
  lowercase = TRUE,
  removestopwords = TRUE,
  removenumbers  = TRUE,
  removepunctuation = TRUE,
  stem = TRUE,
  language = "ru",
  customstopwords = stopwordsRU
)

documentos <- procesado$documents
vocabulario <- procesado$vocab
meta <- procesado$meta

ajuste <- stm(procesado$documents, procesado$vocab, K=20, prevalence=~party_id, 
                       max.em.its=75, data=procesado$meta, init.type="Spectral", 
                       seed=8458159)

Aquí hay un ejemplo del problema. He incluido una palabra vacía en ruso, уважаемый, en mi lista de palabras vacías personalizadas. Sin embargo, la palabra уважаемые, en forma plural, aparece como una de las principales palabras después de ejecutar el modelo. ¿Por qué está pasando esto? ¿Cómo podría solucionarlo?

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema es que la función textProcessor utiliza un stemmer genérico que solo se aplica a la forma singular de las palabras en ruso. Por lo tanto, cuando el stemmer procesa el sustantivo уважаемый, elimina el sufijo y devuelve уважаем. Sin embargo, el stemmer no reconoce la forma plural уважаемые como una forma relacionada del singular уважаемый, por lo que permanece sin cambios. Como resultado, la palabra уважаемые se trata como un término distinto de уважаемый por el modelo stm, lo que lleva a su aparición como una de las palabras principales.

    Para resolver este problema, podrías intentar utilizar un stemmer o lematizador más avanzado que pueda manejar la morfología inflexional rusa, como la herramienta Mystem de la compañía Yandex. Esta herramienta se puede integrar en R a través del paquete udpipe. Alternativamente, podrías intentar ampliar tu lista de stopwords personalizadas para incluir todas las formas relevantes de palabras ambiguas, como уважаемый y уважаемые, de modo que sean tratadas como el mismo término por el modelo.

Comments are closed.