2017-05-29 2 views
0

私は、#@$%などの特殊文字を持っている文書を持っています。最も頻繁に使用される用語のリストを取得するには、次のコードを使用します。しかし、それが実行されると、頻繁な用語リストに特殊文字が表示されません。すなわち、"#StackOverFlow"が文書内に100回現れる単語である場合は、#を頻繁に使用しないで"StackOverFlow"となります。ここに私のコードです:期間の頻度を検索する特殊文字はどうやって保存しますか?

review_text <- paste(rome_1$text, collapse=" ") 
#The special characters are present within review_text 
review_source <- VectorSource(review_text) 
corpus <- Corpus(review_source) 
corpus <- tm_map(corpus, stripWhitespace) 
corpus <- tm_map(corpus, removeWords, stopwords("english")) 
dtm <- DocumentTermMatrix(corpus) 
dtm2 <- as.matrix(dtm) 
frequency <- colSums(dtm2) 
frequency <- sort(frequency, decreasing = TRUE) 
head(frequency) 

私はここで間違ってどこに行ったのですか?

+1

あなたの例では、再現してください。あなたは非基本パッケージを使用している可能性が高いですし、私たちはあなたの入力を知らない...これらの条件で助けを与えるのは難しいです... – digEmAll

+0

私はこのテキストを使用しました:review_text < - paste( "私は#AXN @ Anita。#AXN "、collapse =" "の石鹸が大好きです)、#と他の特殊文字を含むあなたの期待どおりの結果が得られます。あなたは使用しているテキストを投稿できますか?たとえば、#axnは2の数を返します – Indi

+0

上記のコメントにAnitaの後ろにスペースを入れなければなりませんでした。 – Indi

答えて

0

あなたはDocumentTermMatrixのドキュメントで見ることができるように:

これはSimpleCorpusで異なります。この場合、すべてのオプションは、パフォーマンスを向上させるために、1回のパスで固定順序で処理される です。 は常にBoost Tokenizer(Rcpp経由)を使用し、オプションの引数としてカスタム 関数を使用しません。

Corpus関数によって作成された)SimpleCorpusオブジェクトは自動的に単語が(#含む)句読点を除去分割事前に定義されたブーストトークナイザを使用すると思われます。

代わりにVCorpusを使用して、必要な句読点文字を削除できます。 :

library(tm) 
review_text <- 
"I love #StackOverflow. #Stackoverflow is great, but Stackoverflow exceptions are not!" 

review_source <- VectorSource(review_text) 
corpus <- VCorpus(review_source) # N.B. use VCorpus here !! 
corpus <- tm_map(corpus, stripWhitespace) 
corpus <- tm_map(corpus, removeWords, stopwords("english")) 
patternRemover <- content_transformer(function(x,patternToRemove) gsub(patternToRemove,'',x)) 
corpus <- tm_map(corpus, patternRemover, '\\!|\\.|\\,|\\;|\\?') # remove only !.,;? 

dtm <- DocumentTermMatrix(corpus,control=list(tokenize='words')) 
dtm2 <- as.matrix(dtm) 
frequency <- colSums(dtm2) 
frequency <- sort(frequency, decreasing = TRUE) 

結果:

> frequency 
#stackoverflow  exceptions   great   love stackoverflow 
      2    1    1    1    1 
+0

は完璧に動作します。感謝万円。 VCorpusの代わりにCorpusを使用する場合、これを達成できますか? –

+0

コーパス関数にVectorSourceまたはDirSourceを渡すと、SimpleCorpusが返されますので、コーパスの代わりにVCorpus関数を使用することをお勧めします。 – digEmAll

+0

これに迅速に対応してくれてありがとう。 –

関連する問題