回答:
「コーパス」は、テキストドキュメントのコレクションです。
tmのVCorpusは「揮発性」コーパスを指します。これは、コーパスがメモリに格納され、それを含むRオブジェクトが破棄されると破棄されることを意味します。
これを、DBのメモリ外に格納されているPCorpusまたはPermanent Corpusと比較してください。
tmを使用してVCorpusを作成するには、「ソース」オブジェクトをパラメーターとしてVCorpusメソッドに渡す必要があります。このメソッドを使用して利用可能なソースを見つけることができます
-getSources()
[1] "DataframeSource" "DirSource" "URISource" "VectorSource"
[5] "XMLSource" "ZipSource"
Sourceは、ディレクトリやURIなどの入力場所を抽象化します。VectorSourceは文字ベクトル専用です
簡単な例:
あなたがcharベクトルを持っているとしましょう-
input <-c( 'これは1行目です。'、 'これは2番目の行です')
ソースを作成します-vecSource <-VectorSource(input)
次に、コーパスを作成します-VCorpus(vecSource)
お役に立てれば。あなたはここでもっと読むことができます -https://cran.r-project.org/web/packages/tm/vignettes/tm.pdf
実際には、との間には大きな違いがCorpus
ありVCorpus
ます。
Corpus
はSimpleCorpus
デフォルトとして使用されVCorpus
ます。つまり、の一部の機能が使用できなくなります。すぐにわかるのは、SimpleCorpus
ダッシュ、アンダースコア、その他の句読点の記号を保持できないことです。SimpleCorpus
またはCorpus
自動的に削除しますが、削除しVCorpus
ません。Corpus
のヘルプには、他にも制限事項があります?SimpleCorpus
。
次に例を示します。
# 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
出力は次のようになります。
<<SimpleCorpus>>
Metadata: corpus specific: 1, document level (indexed): 0
Content: documents: 46
<<VCorpus>>
Metadata: corpus specific: 0, document level (indexed): 0
Content: documents: 46
オブジェクトの検査を行う場合:
# inspect the content of the document
inspect(C.mlk[1:2])
inspect(V.mlk[1:2])
あなたはCorpus
テキストを解凍することに気づくでしょう:
<<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
一方では、VCorpus
オブジェクト内でそれを一緒に保持します。
今、あなたは両方の行列変換を行うとしましょう:
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
最後に、内容を見てみましょう。これはからCorpus
です:
grep("[[:punct:]]", dtm.C.mlk$dimnames$Terms, value = TRUE)
# character(0)
そしてから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."
句読点付きの単語を見てください。それは大きな違いです。だよね?