Odpowiedzi:
„Corpus” to zbiór dokumentów tekstowych.
VCorpus w tm odnosi się do „lotnego” korpusu, co oznacza, że korpus jest przechowywany w pamięci i zostanie zniszczony, gdy obiekt R zawierający go zostanie zniszczony.
Porównaj to z PCorpus lub Permanent Corpus, które są przechowywane poza pamięcią, powiedzmy w db.
Aby utworzyć VCorpus za pomocą tm, musimy przekazać obiekt „Source” jako parametr do metody VCorpus. Możesz znaleźć źródła dostępne za pomocą tej metody -
getSources ()
[1] „DataframeSource” „DirSource” „URISource” „VectorSource”
[5] „XMLSource” „ZipSource”
Lokalizacje źródłowe abstrakcji, takie jak katalog lub identyfikator URI itp. VectorSource służy tylko do wektorów znaków
Prosty przykład:
Powiedz, że masz wektor char -
input <- c („To jest pierwsza linia.”, „A to jest druga”)
Utwórz źródło - vecSource <- VectorSource (wejście)
Następnie utwórz korpus - VCorpus (vecSource)
Mam nadzieję że to pomoże. Możesz przeczytać więcej tutaj - https://cran.r-project.org/web/packages/tm/vignettes/tm.pdf
W praktyce istnieje duża różnica między Corpusi VCorpus.
Corpusużywa SimpleCorpusdomyślnie, co oznacza, że niektóre funkcje VCorpusnie będą dostępne. Od razu widać, że SimpleCorpusnie pozwoli ci zachować myślników, znaków podkreślenia ani innych znaków interpunkcyjnych; SimpleCorpuslub Corpusautomatycznie je usuwa, VCorpusnie robi. Istnieją inne ograniczenia Corpus, które znajdziesz w pomocy ?SimpleCorpus.
Oto przykład:
# 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
Dane wyjściowe będą:
<<SimpleCorpus>>
Metadata: corpus specific: 1, document level (indexed): 0
Content: documents: 46
<<VCorpus>>
Metadata: corpus specific: 0, document level (indexed): 0
Content: documents: 46
Jeśli zrobić inspekcję obiektów:
# inspect the content of the document
inspect(C.mlk[1:2])
inspect(V.mlk[1:2])
Zauważysz, że Corpusrozpakowujesz tekst:
<<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
Podczas gdy VCorpusutrzymuje go razem w obiekcie.
Powiedzmy, że teraz wykonujesz konwersję macierzy dla obu:
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
Na koniec zobaczmy treść. To jest z Corpus:
grep("[[:punct:]]", dtm.C.mlk$dimnames$Terms, value = TRUE)
# character(0)
I od 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."
Spójrz na słowa z interpunkcją. To ogromna różnica. Czyż nie