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 Corpuset VCorpus.
Corpusutilise SimpleCorpuspar défaut, ce qui signifie que certaines fonctionnalités de VCorpusne seront pas disponibles. Celui qui est immédiatement évident est qu'il SimpleCorpusne vous permettra pas de garder des tirets, des soulignements ou d'autres signes de ponctuation; SimpleCorpusou Corpusles supprime automatiquement, VCorpusnon. Il y a d'autres limitations Corpusque 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 Corpusdé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 VCorpusmaintenant 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?