Réponses:
"Corpus" est une collection de documents texte.
VCorpus en tm fait référence au corpus "volatil", ce qui signifie que le corpus est stocké en mémoire et serait détruit lorsque l'objet R le contenant est détruit.
Comparez cela avec PCorpus ou Corpus permanent qui sont stockés en dehors de la mémoire, par exemple dans une base de données.
Afin de créer un VCorpus en utilisant tm, nous devons passer un objet "Source" comme paramètre à la méthode VCorpus. Vous pouvez trouver les sources disponibles en utilisant cette méthode -
getSources ()
[1] "DataframeSource" "DirSource" "URISource" "VectorSource"
[5] "XMLSource" "ZipSource"
La source résume les emplacements d'entrée, comme un répertoire ou un URI, etc. VectorSource est uniquement destiné aux vecteurs de caractères
Un exemple simple:
Disons que vous avez un vecteur char -
input <- c ('Ceci est la première ligne.', 'Et voici la seconde')
Créer la source - vecSource <- VectorSource (entrée)
Créez ensuite le corpus - VCorpus (vecSource)
J'espère que cela t'aides. Vous pouvez en savoir plus ici - https://cran.r-project.org/web/packages/tm/vignettes/tm.pdf
Concrètement, il y a une grande différence entre Corpus
et VCorpus
.
Corpus
utilise SimpleCorpus
par défaut, ce qui signifie que certaines fonctionnalités de VCorpus
ne seront pas disponibles. Celui qui est immédiatement évident est qu'il SimpleCorpus
ne vous permettra pas de garder des tirets, des soulignements ou d'autres signes de ponctuation; SimpleCorpus
ou Corpus
les supprime automatiquement, VCorpus
non. Il y a d'autres limitations Corpus
que vous trouverez dans l'aide avec ?SimpleCorpus
.
Voici un exemple:
# Read a text file from internet
filePath <- "http://www.sthda.com/sthda/RDoc/example-files/martin-luther-king-i-have-a-dream-speech.txt"
text <- readLines(filePath)
# load the data as a corpus
C.mlk <- Corpus(VectorSource(text))
C.mlk
V.mlk <- VCorpus(VectorSource(text))
V.mlk
La sortie sera:
<<SimpleCorpus>>
Metadata: corpus specific: 1, document level (indexed): 0
Content: documents: 46
<<VCorpus>>
Metadata: corpus specific: 0, document level (indexed): 0
Content: documents: 46
Si vous inspectez les objets:
# inspect the content of the document
inspect(C.mlk[1:2])
inspect(V.mlk[1:2])
Vous remarquerez que Corpus
déballe le texte:
<<SimpleCorpus>>
Metadata: corpus specific: 1, document level (indexed): 0
Content: documents: 2
[1]
[2] And so even though we face the difficulties of today and tomorrow, I still have a dream. It is a dream deeply rooted in the American dream.
<<VCorpus>>
Metadata: corpus specific: 0, document level (indexed): 0
Content: documents: 2
[[1]]
<<PlainTextDocument>>
Metadata: 7
Content: chars: 0
[[2]]
<<PlainTextDocument>>
Metadata: 7
Content: chars: 139
Tout en le VCorpus
maintenant ensemble dans l'objet.
Disons maintenant que vous effectuez la conversion matricielle pour les deux:
dtm.C.mlk <- DocumentTermMatrix(C.mlk)
length(dtm.C.mlk$dimnames$Terms)
# 168
dtm.V.mlk <- DocumentTermMatrix(V.mlk)
length(dtm.V.mlk$dimnames$Terms)
# 187
Enfin, voyons le contenu. Cela vient de Corpus
:
grep("[[:punct:]]", dtm.C.mlk$dimnames$Terms, value = TRUE)
# character(0)
Et de VCorpus
:
grep("[[:punct:]]", dtm.V.mlk$dimnames$Terms, value = TRUE)
[1] "alabama," "almighty," "brotherhood." "brothers."
[5] "california." "catholics," "character." "children,"
[9] "city," "colorado." "creed:" "day,"
[13] "day." "died," "dream." "equal."
[17] "exalted," "faith," "gentiles," "georgia,"
[21] "georgia." "hamlet," "hampshire." "happens,"
[25] "hope," "hope." "injustice," "justice."
[29] "last!" "liberty," "low," "meaning:"
[33] "men," "mississippi," "mississippi." "mountainside,"
[37] "nation," "nullification," "oppression," "pennsylvania."
[41] "plain," "pride," "racists," "ring!"
[45] "ring," "ring." "self-evident," "sing."
[49] "snow-capped" "spiritual:" "straight;" "tennessee."
[53] "thee," "today!" "together," "together."
[57] "tomorrow," "true." "york."
Jetez un œil aux mots avec ponctuation. C'est une énorme différence. N'est-ce pas?