12

私は R の {tm} パッケージの多数のオンライン例を調べて、TermDocumentMatrix を作成しようとしました。コーパスの作成とクリーニングは非常に簡単ですが、マトリックスを作成しようとすると、常にエラーが発生します。エラーは次のとおりです。

UseMethod("meta", x) のエラー: クラス "character" のオブジェクトに適用される 'meta' に適用可能なメソッドがありません。さらに: 警告メッセージ: In mclapply(unname(content(x)), termFreq, control) : allスケジュールされたコアでユーザー コードでエラーが発生しました

たとえば、Jon Starkweather のテキスト マイニングののコードを次に示します。このような長いコードについては事前にお詫びしますが、これにより再現可能な例が生成されます。エラーは {tdm} 関数で最後に発生することに注意してください。

#Read in data
policy.HTML.page <- readLines("http://policy.unt.edu/policy/3-5")

#Obtain text and remove mark-up
policy.HTML.page[186:202]
id.1 <- 3 + which(policy.HTML.page == "                    TOTAL UNIVERSITY        </div>")
id.2 <- id.1 + 5
text.data <- policy.HTML.page[id.1:id.2]
td.1 <- gsub(pattern = "<p>", replacement = "", x = text.data, 
     ignore.case = TRUE, perl = FALSE, fixed = FALSE, useBytes = FALSE)

td.2 <- gsub(pattern = "</p>", replacement = "", x = td.1, ignore.case = TRUE,
     perl = FALSE, fixed = FALSE, useBytes = FALSE)

text.d <- td.2; rm(text.data, td.1, td.2)

#Create corpus and clean 
library(tm)
library(SnowballC)
txt <- VectorSource(text.d); rm(text.d)
txt.corpus <- Corpus(txt)
txt.corpus <- tm_map(txt.corpus, tolower)
txt.corpus <- tm_map(txt.corpus, removeNumbers)
txt.corpus <- tm_map(txt.corpus, removePunctuation)
txt.corpus <- tm_map(txt.corpus, removeWords, stopwords("english"))
txt.corpus <- tm_map(txt.corpus, stripWhitespace); #inspect(docs[1])
txt.corpus <- tm_map(txt.corpus, stemDocument)

# NOTE ERROR WHEN CREATING TDM
tdm <- TermDocumentMatrix(txt.corpus)
4

3 に答える 3

26

jazzurro が提供するリンクは、ソリューションへのリンクです。次のコード行

 txt.corpus <- tm_map(txt.corpus, tolower)

に変更する必要があります

 txt.corpus <- tm_map(txt.corpus, content_transformer(tolower))
于 2014-08-28T15:05:15.517 に答える
5

tm v0.6 でこの問題が発生する理由は 2 つあります。

  1. tolowerなどの用語レベルの変換を行っている場合は、tm_mapの代わりに文字ベクトルを返しますPlainTextDocument
    解決策:コールtolowerスルーcontent_transformerまたはtm_map(corpus, PlainTextDocument)直後にコールtolower
  2. SnowballC パッケージがインストールされておらず、ドキュメントをステム処理しようとしている場合にも、これが発生する可能性があります。
    解決策:install.packages('SnowballC')
于 2015-04-16T16:25:52.543 に答える
2

content_transformer を適用する必要はありません。

次の方法でコーパスを作成します。

trainData_corpus <- Corpus((VectorSource(trainData$Comments)))

それを試してみてください。

于 2017-04-17T05:31:51.247 に答える