2017-06-01 25 views
3

tmwordcloudを使用して、Rで基本的なテキストマイニングを実行しています。処理されるテキストには、asfdg、aawptkrのような無意味な単語が多数含まれています。 私が見つけた最も近い解決策は、library(qdapDictionaries)を使用し、単語の妥当性をチェックするカスタム関数を構築することです。コーパスから意味のない単語を削除するR

library(qdapDictionaries) 
is.word <- function(x) x %in% GradyAugmented 

# example 
> is.word("aapg") 
[1] FALSE 

使用テキストマイニングの残りの部分は次のとおりです。

curDir <- "E:/folder1/" # folder1 contains a.txt, b.txt 
myCorpus <- VCorpus(DirSource(curDir)) 
myCorpus <- tm_map(myCorpus, removePunctuation) 
myCorpus <- tm_map(myCorpus, removeNumbers) 

myCorpus <- tm_map(myCorpus,foo) # foo clears meaningless words from corpus 

問題は、データフレームを処理するために正常に動作しますが、コーパス取り扱いのためにそれを使用する方法is.word()のですか?

おかげで、それは最もリソース効率的な方法(私は非常によくパッケージを知らない)が、それは動作するはずになる場合

+0

hello check 'content_transformer'それはあなたが必要とするものです –

+0

@ s.brunel、' content_transformer'はコーパスを変更する関数で動作し、 'is.word'は真/偽を返すだけです – parth

答えて

2

わからない:あなたは試して喜んでいる場合

tdm <- TermDocumentMatrix(myCorpus) 
all_tokens  <- findFreqTerms(tdm, 1) 
tokens_to_remove <- setdiff(all_tokens,GradyAugmented) 
corpus <- tm_map(corpus, content_transformer(removeWords), 
       tokens_to_remove) 
+0

レスポンスのための@Moodyのおかげで、ある程度。 – parth

+0

ある程度までは?たぶん両側が小文字であることを確認してください –

+0

ええ、これらの手順の前にいくつかの変換を適用しても問題ありません。リソースを消費するだけです。 – parth

4

別のテキストマイニングパッケージ、これは動作します:

library(readtext) 
library(quanteda) 
myCorpus <- corpus(readtext("E:/folder1/*.txt")) 

# tokenize the corpus 
myTokens <- tokens(myCorpus, remove_punct = TRUE, remove_numbers = TRUE) 
# keep only the tokens found in an English dictionary 
myTokens <- tokens_select(myTokens, names(data_int_syllables)) 

そこから、分析のために(quantedaで「DFM」と呼ばれる)文書長期行列で形成することができ、そしてそれだけで見られる機能が含まれています(約130,000語を含む)辞書にマッチした英語の用語である。

+0

助けてくれてありがとう@Ken、私は 'quanteda'を見て、プロセスをスピードアップするためにすべての言葉を考慮するのではなく、いくつかのデータを減らしました – parth

関連する問題