Substitution in a text by words from another file

2

That should be easy, but I can not find a solution! It is as follows:

File1 - with texts:

Doc    Texto
doc1   Isto é um teste para substituições de palavras.
doc2   As casas são parecidas.

File2 - Reference:

Termo          Termo_pai
é              ser
substituições  substituição
palavras       palavra
as             a
casas          casa
são            ser
parecidas      parecida

How do I replace the words in File1 with words that are found in File2 in the "Term" column in the "Term_pai" column?

The result would be:

File1:

Doc Text

doc1 test test for word .

A home

That is, the bold words, from File1, were found in File2 in the "Term" column and replaced by the words that are in the "Term3" column.

Could someone help?

    
asked by anonymous 29.07.2018 / 17:12

2 answers

2

Only with R base can be done as follows.

pat <- paste0("\b", Arquivo2$Termo, "\b")
for(i in seq_along(pat))
  Arquivo1$Texto <- gsub(pat[i], Arquivo2$Termo_pai[i], Arquivo1$Texto)

Arquivo1
#   Doc                                           Texto
#1 doc1 Isto ser um teste para substituição de palavra.
#2 doc2                           As casa ser parecida.

DATA.

Arquivo1 <- read.table(text = "
Doc    'Texto'
doc1   'Isto é um teste para substituições de palavras.'
doc2   'As casas são parecidas.'
", header = TRUE, stringsAsFactors = FALSE)

Arquivo2 <- read.table(text = "
Termo          Termo_pai
é              ser
substituições  substituição
palavras       palavra
as             a
casas          casa
são            ser
parecidas      parecida
", header = TRUE, stringsAsFactors = FALSE)
    
29.07.2018 / 21:23
2

Another solution would be to use the stringr package

options(stringsAsFactors = FALSE)

Arquivo1 <- read.table(text = "
                       Doc    'Texto'
                       doc1   'Isto é um teste para substituições de palavras.'
                       doc2   'As casas são parecidas.'
                       ", header = TRUE)

Arquivo2 <- read.table(text = "
                       Termo          Termo_pai
                       é              ser
                       substituições  substituição
                       palavras       palavra
                       as             a
                       casas          casa
                       são            ser
                       parecidas      parecida
                       ", header = TRUE)


library(stringr)

for (i in 1:nrow(Arquivo1)){
  for (j in 1:nrow(Arquivo2)){
   x = str_replace_all(string = str_extract_all(Arquivo1$Texto[i], "\w+")[[1]],
                    pattern = paste0("\b", Arquivo2$Termo[j], "\b"),
                    replacement = Arquivo2$Termo_pai[j])
   Arquivo1$Texto[i] = paste(x, collapse=" ")
  }
}

Arquivo1
#   Doc                                           Texto
#1 doc1 Isto ser um teste para substituição de palavra.
#2 doc2                           As casa ser parecida.
    
29.07.2018 / 22:02