2016-06-30 28 views
0

不足している、私はいつもごとに、コーパスを作成します。R tmをドキュメント名がR {TM}パッケージを使用

mycorpus <- Corpus(DirSource(folder,pattern="txt"))

Iは、符号化変数を使用していないのでご注意ください。 summary (mycorpus)には、リストされたドキュメント名が表示されます。 tm_mapのシリーズは、変換後しかし:

mycorpus<- tm_map(mycorpus, PlainTextDocument)mydtm <- DocumentTermMatrix(mycorpus, control = list(...))

で終わる

(content_transformer(tolower),content_transformer(removeWords), stopwords("SMART"),stripWhitespace) 私は選択の私の変数を取得するinspect(mydtm[1:10, intersect(colnames(dtm), 'toyota')])とエラーが表示されます。 Terms Docs toyota character(0) 0 character(0) 0 character(0) 0 character(0) 0 character(0) 1 character(0) 0 character(0) 0 character(0) 0 character(0) 1 character(0) 0

ファイル名(DOCのid)しています消えた。このエラーの原因は何でしょうか?もっと重要なのは、私はどのように文書名を元に戻すのですか?どうもありがとう。

答えて

0

以下のコードは1つのファイルで動作します。 list.filesのようなものを使って、ディレクトリ内のすべてのファイルを読むことができます。
まず、カスタム関数でクリーニング関数をラップします。注文内容に注意してください。機能がtmでない場合は、content_transformerを使用する必要があります。

clean.corpus<-function(corpus){ 
    corpus <- tm_map(corpus, removePunctuation) 
    corpus <- tm_map(corpus, stripWhitespace) 
    corpus <- tm_map(corpus, removeNumbers) 
    corpus <- tm_map(corpus, content_transformer(tolower)) 
    corpus <- tm_map(corpus, removeWords, custom.stopwords) 
    return(corpus) 
} 

次に、カスタム単語で英語の単語を連結します。これは上記のカスタム関数の最後の部分として渡されます。

custom.stopwords <- c(stopwords('english'), 'lol', 'smh') 

doc<-read.csv('coffee.csv', header=TRUE) 

CSVは、テキスト文書及び各つぶやきのIDを持つ別の列にツイートの列を持つデータフレームです。このファイルを使用した私のワークショップからのファイルはhereです。 csvファイルがメモリ上にあるので、次のステップは、コーパス作成時に特定のマッピングを使用して表形式でそれを読み取ることです。ここでの内容はtextという列にあり、一意のIDは列名 "id"にあります。

custom.reader <- readTabular(mapping=list(content="text", id="id")) 
corpus <- VCorpus(DataframeSource(doc), readerControl=list(reader=custom.reader)) 
corpus<-clean.corpus(corpus) 

コーパスの作成ではreaderControlが使用され、その後は前処理ステップを適用できます。リーダーコントロールがなければ、パッケージは名前として0文字を割り当てます。

文書1のコーパスの内容がここに

corpus[[1]][1] 

をアクセスすることができますが、だから私はあなたが使用する必要がされていると思います。このコード

corpus[[1]][2] 

との最初のドキュメントのコーパスのメタデータを確認することができますreadTabularreaderControlは、ソースに関係なくコーパス構成に含まれています。

0

私は同じ問題を抱えていましたが、tolowerが原因であることに気付きました。 TOLOWER は、removeNumbersremovePunctuationとは異なり、removeWordsstemDocumentstripWhitespaceTMパッケージで定義されてtranformationsではありません。それは最初にそれのために tolowerをの変換を行う必要があります tolowerをを使用するためには、

getTransformations() 
[1] “removeNumbers” “removePunctuation” “removeWords” “stemDocument” “stripWhitespace” 

したがって:直接コーパス、タイプに適用することができTMパッケージで定義された変換のリストを取得するにはコーパスオブジェクトを適切に処理します。

docs <- tm_map(docs,content_transformer(tolower)) 

コードの上の行は、コーパスで動作するように、任意のR関数に適用することができる文字(0)

同じトリックにリネームされるのファイルを停止しなければなりません。たとえば、gsubの場合、次の構文が適用されます。

docs <- tm_map(docs, content_transformer(gsub), pattern = “internt”, replacement = “internet”) 
関連する問題