2016-11-07 7 views
0

"COLORED PENCIL STAEDTLER NORIS CLUB ASSORTED COLORS PKT12"という文字列があるとします。私のコードは次のとおりです。stemDocumentはTermDocumentMatrixで動作しますが、tmとRを使用するtm_mapでは機能しません

> a1 <- VCorpus(VectorSource("COLORED PENCIL STAEDTLER NORIS CLUB ASSORTED COLORS PKT12")) 
> a3 <- TermDocumentMatrix(a1,control = list(stemming=T)) 

行列である:

  Docs 
Terms  1 
    assort 1 
    club  1 
    color  2 
    nori  1 
    pencil 1 
    pkt12  1 
    staedtler 1 

だから我々はstemDocumentが着色し、色になってどちらも色の作品を見ることができます。しかし、私がしなければ:

> a1 <- VCorpus(VectorSource("COLORED PENCIL STAEDTLER NORIS CLUB ASSORTED COLORS PKT12")) 
> a2 <- a1 %>% tm_map(PlainTextDocument) %>% tm_map(stemDocument,"english") 
> a2[[1]]$content 
[1] "COLORED PENCIL STAEDTLER NORIS CLUB ASSORTED COLORS PKT12" 
> a2 <- a2 %>% TermDocumentMatrix() 

行列は次のとおりです。

  Docs 
Terms  character(0) 
    assorted    1 
    club     1 
    colored    1 
    colors    1 
    noris    1 
    pencil    1 
    pkt12    1 
    staedtler   1 

我々はstemDocumentが、ここでは動作しません見ることができます。私は、上記のマトリックスには表示されていない "文字(0)"がここにあることに気付きます。しかし、なぜか分からないのですか?

私の状況では、stopWords、stemDocumentなどのテキストデータの前処理を行う必要があります。次に、この処理されたテキストをcsvファイルに保存する必要があります。ここでは、TermDocumentMatrixを直接使用して行列を生成することはできません。誰も私を助けてくれますか?どうもありがとう。

答えて

1

これは、あなたが望むものを達成するのを助ける必要があります私は通常、すべてのテキストを小文字に変換し、

library(tm) 
txt <- "COLORED PENCIL STAEDTLER NORIS CLUB ASSORTED COLORS PKT12" 

txt <- tolower(txt) ## this is the extra step where I have converted eveything to lower case 

a1 <- VCorpus(VectorSource(txt)) 
a2 <- a1 %>% tm_map(stemDocument) 
a2 <- a2 %>% TermDocumentMatrix() 
inspect(a2) 

文字(0)DTM/TDMを作成するためPlainTextDocumentを呼び出す表示される前に、などの句読点を削除()。 tm_mapにpass tolowerを使用してこのエラー(Error: inherits(doc, "TextDocument") is not TRUE)を使用するときのように、それを使用する必要がある場合は、content_transformerを使用します。

これが役に立ちます。

+0

ありがとうございます。これは機能します。しかし、何か変だ。 txt < - tolower(txt)のように見えます。それなしでは動作しません。さらに、私はtxt < - toupper(txt)を試しましたが、どちらもうまくいきませんでした。理由を理解できない –

関連する問題