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.

provided. List of words: software, hardware, networking, database, programming, file, memory, server Usted es un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. Reemplazar palabras de la lista de palabras proporcionadas. La empresa necesita actualizar su software y hardware para mejorar su base de datos y la conectividad de networking. El equipo de programación está trabajando en el desarrollo de un nuevo sistema de gestión de archivos para optimizar el uso de la memoria del servidor. La empresa necesita actualizar su software y hardware para mejorar su base de datos y la conectividad de redes. El equipo de programación está trabajando en el desarrollo de un nuevo sistema de gestión de archivos para optimizar el uso de la memoria del servidor.

Tengo este marco de datos:

df <- structure(list(ID = 1:3, Text = c(“no había clostridium”, “clostridium difficile positivo”, “la prueba estaba bien pero había clostridium”)), class = “data.frame”, row.names = c(NA, -3L))
ID Text
1 1 no había clostridium
2 2 clostridium difficile positivo
3 3 la prueba estaba bien pero había clostridium

Y un patrón de palabras vacías:

stop <- paste0(c(“estaba”, “pero”, “había”), collapse = “|”)

Me gustaría recorrer el Texto de ID y eliminar las palabras del patrón de palabras vacías.
Es importante mantener el orden de las palabras. No quiero usar funciones de combinación.

He intentado esto:

df$Words <- tokenizers::tokenize_words(df$Text, lowercase = TRUE) ## Me gustaría hacer una lista de palabras individuales

for (i in length(df$Words)){

df$clean <- lapply(df$Words, function(y) lapply(1:length(df$Words[i]),
function(x) stringr::str_replace(unlist(y) == x, stop, “REEMPLAZADO”)))

}

Pero esto me da un vector de cadena lógica no una lista de palabras.

df
ID Text Words clean
1 1 no había clostridium no, había, clostridium FALSE, FALSE, FALSE
2 2 clostridium difficile positivo clostridium, difficile, positivo FALSE, FALSE, FALSE
3 3 la prueba estaba bien pero había clostridium prueba, estaba, bien, pero, había, clostridium FALSE, FALSE, FALSE, FALSE, FALSE, FALSE

Me gustaría obtener esto (reemplazar todas las palabras del patrón de palabras vacías y mantener el orden de las palabras)

df
ID Text Words clean
1 1 no había clostridium no, había, clostridium “REEMPLAZADO”, “REEMPLAZADO”, clostridium
2 2 clostridium difficile positivo clostridium, difficile, positivo clostridium, difficile, positivo
3 3 la prueba estaba bien pero había clostridium prueba, estaba, bien, pero, había, clostridium prueba, “REEMPLAZADO”, bien, “REEMPLAZADO”, “REEMPLAZADO”, “REEMPLAZADO”, clostridium

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puedes utilizar stringr::str_replace_all para sustituir todas las palabras del patrón de parada y mantener el orden de las palabras.

    df$clean <- lapply(df$Words, function(y) stringr::str_replace_all(unlist(y), stop, "REEMPLAZADO"))
    

    Esto te dará la salida deseada:

    > df
      ID                                  Text                                       Words                                           clean
    1  1             there was not clostridium                there, was, not, clostridium                      "REEMPLAZADO", "REEMPLAZADO", not, clostridium
    2  2        clostridium difficile positive            clostridium, difficile, positive                             clostridium, difficile, positive
    3  3 test was OK but there was clostridium test, was, ok, but, there, was, clostridium test, "REEMPLAZADO", OK, "REEMPLAZADO", "REEMPLAZADO", "REEMPLAZADO", clostridium
    

Comments are closed.