2016-01-12 2 views
0

J'essaie de transformer un vecteur de caractères novel.lower.mid en une liste de mots simples. Jusqu'à présent, c'est le code que j'ai utilisé:Comment diviser des mots dans R tout en gardant les contractions

midnight.words.l <- strsplit(novel.lower.mid, "\\W") 

Ceci donne une liste de tous les mots. Cependant, il divise tout, y compris les contractions. Le mot "ne peut pas" devient "peut" et "t". Comment est-ce que je m'assure que ces mots ne sont pas séparés, ou que la fonction ignore juste l'apostrophe?

+0

Qu'est-ce que tes mots sont-ils délimités par? Avez-vous des exemples de données? – steveb

+0

@steveb Je ne sais pas vraiment ce que mes données sont délimitées par. Voici une partie de l'échantillon de données: classe (novel.lower.mid) [1] « caractère » novel.lower.mid [1] "livre une à la feuille perforée je suis né dans la ville de bombay. Il est une fois, non, ça ne va pas, il n'y a pas moyen de sortir de la date: je suis né dans la maison de retraite du docteur narlikar le 15 août 1947. et le temps, le temps compte aussi. la nuit, non, c'est important d'être plus ... – Stefano

Répondre

0

Nous pouvons utiliser

library(stringr) 
str_extract_all(novel.lower.mid, "\\b[[:alnum:]']+\\b") 

Ou

strsplit(novel.lower.mid, "(?!')\\W", perl=TRUE) 
+0

J'ai essayé le second, mais ça ne s'arrête pas de courir et puis je dois forcer à quitter R studio – Stefano

+0

Maintenant j'ai utilisé le premier et ça a marché !! – Stefano

0

Si vous voulez juste votre "\ W" courant ouvrants de ne pas inclure apostrophes, nier \w et ':

novel.lower.mid <- c("I won't eat", "green eggs and", "ham") 
strsplit(novel.lower.mid, "[^\\w']", perl=T) 
# [[1]] 
# [1] "I"  "won't" "eat" 
# 
# [[2]] 
# [1] "green" "eggs" "and" 
# 
# [[3]] 
# [1] "ham" 
+0

J'ai essayé votre suggestion, mais il ne s'arrête pas de courir et puis je dois quitter R studio – Stefano

+0

@Stefano - qui doit être spécifique à vos données particulières alors (peut-être il y a beaucoup de celui-ci, ou il y a un encodage spécifique dans lequel il est). Vous devez fournir plus d'informations! –

+0

désolé à ce sujet! Je travaille avec un vecteur de personnage qui englobe un roman entier, soit environ 300 pages de texte. Voici comment je suis arrivé à novel.lower.mid: http://i.imgur.com/JF6B8Fh.png – Stefano