2017-10-09 8 views
0

私はRでtm-packageを使って文書用語行列を作成していますが、コーパス内の単語のいくつかはプロセスのどこかで失われてしまいます。tmパッケージ内のDocumentTermMatrixがすべての単語を返しません

例について説明します。のは、私は、TM-パッケージからDocumentTermMatrix()を使用する場合、私はこの小さなコーパス

library(tm) 
crps <- " more hours to my next class bout to go home and go night night" 
crps <- VCorpus(VectorSource(crps)) 

があるとしましょう、それはこれらの結果を返します。

dm <- DocumentTermMatrix(crps) 
dm_matrix <- as.matrix(dm) 
dm_matrix 
# Terms 
# Docs and bout class home hours more next night 
# 1 1 1  1 1  1 1 1  2 

をしかし、私が欲しい(と予想)は次のとおりです。

# Docs and bout class home hours more next night my go to 
# 1 1 1  1 1  1 1 1  2 1 2 1 

DocumentTermMatrix()はなぜ「my」、「go」、「to」という単語をスキップしますか?この機能を制御して修正する方法はありますか?

+0

あなたは 'tm'パッケージを使用していると思いますか? 'crps'はどのようなオブジェクトですか?どのようにして 'クランプ'を手に入れましたか? 'crps < - Corpus(VectorSource(some_text_string))'のようなものを使いましたか? –

+0

はい私は 'crps <-VCorpus(VectorSource(My_text))'を使用しました。 –

答えて

2

DocumentTermMatrix()は、3文字未満の単語を自動的に破棄します。したがって、単語to,myおよびgoは、文書用語行列を構成する際には考慮されない。

ヘルプページ?DocumentTermMatrixから、controlというオプションの引数があることがわかります。このオプションの引数には、多数のデフォルト値があります(詳細はヘルプページ?termFreqを参照してください)。これらのデフォルトの1つは、少なくとも3文字の語長、すなわちwordLengths = c(3, Inf)です。これは、単語の長さに関係なく、すべての単語に対応するように変更できます。

dm <- DocumentTermMatrix(my_corpus, control = list(wordLengths=c(1, Inf)) 

inspect(dm) 
# <<DocumentTermMatrix (documents: 1, terms: 11)>> 
# Non-/sparse entries: 11/0 
# Sparsity   : 0% 
# Maximal term length: 5 
# Weighting   : term frequency (tf) 
# 
# Terms 
# Docs and bout class go home hours more my next night to 
# 1 1 1  1 2 1  1 1 1 1  2 2 
関連する問題