2016-11-09 3 views
0

は私のコードです: 例1:tmは非常に短い文字列を自動的に無視しますか?ここ

a <- c("ab cd de","ENERGIZER A23 12V ALKALINE BATTERi") 
a1 <- VCorpus(VectorSource(a)) 
a2 <- TermDocumentMatrix(a1,control = list(stemming=T)) 
inspect(a2) 

結果は次のとおりです。

  Docs 
Terms  1 2 
    12v  0 1 
    a23  0 1 
    alkalin 0 1 
    batteri 0 1 
    energ 0 1 

は無視されるの最初の文字列のように見えます。

例2

a <- c("abcd cde de","ENERGIZER A23 12V ALKALINE BATTERi") 
a1 <- VCorpus(VectorSource(a)) 
a2 <- TermDocumentMatrix(a1,control = list(stemming=T)) 
inspect(a2) 

結果は:

  Docs 
Terms  1 2 
    12v  0 1 
    a23  0 1 
    abcd 1 0 
    alkalin 0 1 
    batteri 0 1 
    cde  1 0 
    energ 0 1 

我々は2つのサブストリング(ABCD、CDE)を見ることができるshorest一方が(デ)依然として欠落している間に保持されます。 control = list(stemming = T)を使わないと同じ状況になります。だから、これがtmの一種の定義なのか不思議ですね。文字列が3文字未満の場合、文字列は無視されますか?私はこれが良い考えだとは思わない。短縮形のように短い文字列であっても便利です。

もしそうなら、これを変更するパラメータなどがありますか?どうもありがとう。

+0

を、あなたは 'たとえば、別のNLPパッケージをしようとする場合がありますうん – HubertL

答えて

1

?termFreqを参照してください。あなたが設定しなければならないオプションはwordLengthsです。

長の整数ベクトルの最小ワード長より短い 2.単語「ワード長[1]」又は最大ワード長より長い 「ワード長[2]」 が破棄される:DOCから。デフォルトは「c(3、Inf)」、つまり最小ワードは で、長さは3文字です。

あなたができる短い言葉除外したくないのであれば、:

a2 <- TermDocumentMatrix(a1,control = list(stemming=T,wordLengths=c(1,Inf))) 
inspect(a2) 
     Docs 
Terms  1 2 
    12v  0 1 
    a23  0 1 
    ab  1 0 
    alkalin 0 1 
    batteri 0 1 
    cd  1 0 
    de  1 0 
    energ 0 1 
+0

をquanteda'!知っておいてよかった。ありがとう! –

関連する問題