2017-07-14 3 views
1

qdap :: mgsub prend les paramètres suivants:Dans le contexte de tm :: content_transformer(), comment utiliser mgsub?

mgsub(x, pattern, replacement) 

Au sein de la bibliothèque (tm) transformation de corpus, vous pouvez envelopper les fonctions non tm au sein content_transformer(), par exemple

corpus <- tm_map(corpus, content_transformer(tolower)) 

Voici une trame de données avec un texte mal orthographié:

df <- data.frame(
    id = 1:2, 
    sometext = c("[cad] appls", "bannanas") 
) 

Et voici une trame de données avec une recherche personnalisée pour les fautes d'orthographe:

spldoc <- data.frame(
    incorrects = c("appls", "bnnanas"), 
    corrects = c("apples", "bannanas") 
) 

En utilisant mgsub En dehors de la contexte de corpus et content_transformer() Je pourrais juste faire ceci:

wrongs <- select(spldoc, incorrects)[,1] %>% paste0("\\b",.,"\\b") # prepend and append \\b to create word boundary regex 
rights <- select(spldoc, corrects)[,1] 
df$sometext <- mgsub(wrongs, rights, df$sometext, fixed = F) 

Mais je ne vois pas comment je pourrais écrire mgsub dans une fonction pour passer à content_transformer() quel serait mon paramètre pour x comme dans mgsub (x, pattern, replacement)?

Répondre

1

C'est ce que je l'ai fait:

# create separate function to pass into tm_map() 

spelling_update <- content_transformer(function(x, lut) mgsub(paste0("\\b", lut[, 1], "\\b") , lut[, 2], x, fixed = F)) 

Puis

corpus <- tm_map(corpus, spelling_update(spldoc))