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?
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 modelostm
, 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.