2017-06-25 3 views
0

Lorsque j'essaie d'utiliser strsplit en texte brut, il a la propriété désirée que la valeur stockée soit transformée d'une chaîne de caractères en un vecteur avec des chaînes de caractères . Par exemple,Comment transformer le contenu du corpus en vecteur après newline " n"

txt = "The fox is Brown.\nThe Fox has a tail." 
strsplit(txt, "\n") 

Pour le problème réel que je utilise le paquet PNL, tm (v0.7-1) dans R 3.4.0 sur Windows 7.

Lorsque je crée mon corpus et essayez d'utiliser la fonction content_transformer dans tm, il casse mon corpus au lieu de retourner un vecteur du contenu.

require(tm) #version 0.7-1 
txt = "The fox is Brown.\nThe Fox has a tail." 
docs = Corpus(VectorSource(txt)) 
to_newline = content_transformer(function (x) unlist(strsplit(x, "\n"))) 
docs = tm_map(docs, to_newline) 
str(docs) 

La sortie de str(docs) dans le code ci-dessus ressemble:

List of 2 
$ 1:List of 2 
    ..$ content: chr "The fox is Brown." 
    ..$ meta :List of 7 
    .. ..$ author  : chr(0) 
    .. ..$ datetimestamp: POSIXlt[1:1], format: "2017-06-25 15:11:55" 
    .. ..$ description : chr(0) 
    .. ..$ heading  : chr(0) 
    .. ..$ id   : chr "1" 
    .. ..$ language  : chr "en" 
    .. ..$ origin  : chr(0) 
    .. ..- attr(*, "class")= chr "TextDocumentMeta" 
    ..- attr(*, "class")= chr [1:2] "PlainTextDocument" "TextDocument" 
$ 2:List of 2 
    ..$ content: chr "The Fox has a tail." 
    ..$ meta :List of 7 
    .. ..$ author  : chr(0) 
    .. ..$ datetimestamp: POSIXlt[1:1], format: "2017-06-25 15:11:55" 
    .. ..$ description : chr(0) 
    .. ..$ heading  : chr(0) 
    .. ..$ id   : chr "2" 
    .. ..$ language  : chr "en" 
    .. ..$ origin  : chr(0) 
    .. ..- attr(*, "class")= chr "TextDocumentMeta" 
    ..- attr(*, "class")= chr [1:2] "PlainTextDocument" "TextDocument" 
- attr(*, "class")= chr [1:2] "SimpleCorpus" "Corpus" 

Je veux que ça ressemble à ce qui suit où $ content est un vecteur de caractères:

List of 1 
$ 1:List of 2 
    ..$ content: chr [1:2] "The fox is Brown." "The Fox has a tail." 
    ..$ meta :List of 7 
    .. ..$ author  : chr(0) 
    .. ..$ datetimestamp: POSIXlt[1:1], format: "2017-06-25 15:11:55" 
    .. ..$ description : chr(0) 
    .. ..$ heading  : chr(0) 
    .. ..$ id   : chr "1" 
    .. ..$ language  : chr "en" 
    .. ..$ origin  : chr(0) 
    .. ..- attr(*, "class")= chr "TextDocumentMeta" 
    ..- attr(*, "class")= chr [1:2] "PlainTextDocument" "TextDocument" 

Répondre

0

Cela a pris beaucoup d'essais et d'erreurs. En fait, j'utilisais DirSource afin de lire dans un corpus de données et tout ce que je devais faire était de convertir la lecture de la séquence de fonctions dans le corpus pour dire VCorpus(DirSource(directory_name), ...).

Afin de démontrer le problème de créer un fichier texte:

The fox is Brown. 
The Fox has a tail. 

Enregistrez le fichier dans votre répertoire de travail dans un dossier nommé test et enregistrez le fichier en tant que test.txt.

Lancez ensuite:

docs = VCorpus(DirSource("./test")) 
str(docs) 

Remarquez que la content n'est pas un vecteur de caractère !!!