tm
ライブラリにこれ用にあらかじめ構築された関数があるのか、それともうまくいくのでしょうか?tmパッケージでRの読みやすさを計算する方法
私の現在のコーパスは、TM、次のようにのようなものにロードされます:
s1 <- "This is a long, informative document with real words and sentence structure: introduction to teaching third-graders to read. Vocabulary is key, as is a good book. Excellent authors can be hard to find."
s2 <- "This is a short jibberish lorem ipsum document. Selling anything to strangers and get money! Woody equal ask saw sir weeks aware decay. Entrance prospect removing we packages strictly is no smallest he. For hopes may chief get hours day rooms. Oh no turned behind polite piqued enough at. "
stuff <- rbind(s1,s2)
d <- Corpus(VectorSource(stuff[,1]))
私はkoRpusを使用してみましたが、私がすでに使用しているものとは別のパッケージにretokenizeする愚かなようです。私はまた、結果をtm
に再組み込みできるように、返品オブジェクトをベクトル化する際に問題が発生しました。 (つまり、エラーのために、私のコレクションの文書数よりも多くの可読性スコアが返されます)。すでにエッジケースを処理しています(サイレントeなどを扱います)。
私の可読性のスコアは、Flesch-KincaidまたはFryです。 dは100件の文書の私のコーパスここで私はもともとしようとした何
:
残念ながらf <- function(x) tokenize(x, format="obj", lang='en')
g <- function(x) flesch.kincaid(x)
x <- foreach(i=1:length(d), .combine='c',.errorhandling='remove') %do% g(f(d[[i]]))
を、xが100件の未満の文書を返しますので、私は正しい文書で成功を関連付けることはできません。 (これは部分的にRの 'foreach'と 'lapply'の誤解ですが、テキストオブジェクトの構造が十分に難しく、適切にトークン化できず、flesch.kincaidを適用し、適切な順番でエラーをチェックすることができました文。)
UPDATE私が試した
他の二つの事柄、TMオブジェクトにkoRpus機能を適用しようと...
パス引数tm_mapオブジェクトに、使用してデフォルトトークナイザ:
tm_map(d,flesch.kincaid,force.lang="en",tagger=tokenize)
はのそれを渡し、トークナイザを定義
f <- function(x) tokenize(x, format="obj", lang='en') tm_map(d,flesch.kincaid,force.lang="en",tagger=f)
これら返却の両方:。
Error: Specified file cannot be found:
次に[1] Dのフルテキストを示しています。それを見つけたと思われる?関数を正しく渡すにはどうすればよいですか?
> lapply(d,tokenize,lang="en")
Error: Unable to locate
Introduction to teaching third-graders to read. Vocabulary is key, as is a good book. Excellent authors can be hard to find.
は、これは奇妙なエラーのように見えます---私はほとんどないと思う:
UPDATE 2
は、ここで私はlapplyと直接koRpus機能をマップしようとしたとき、私は取得エラーですテキストが見つからないことを意味しますが、位置付けされたテキストをダンプする前に、空のエラーコード( 'tokenizer'など)を見つけることができません。
UPDATE 3
koRpus
を用いて再タグ付けの別の問題は、(TMタガーに対して)再タグ付けする標準出力に非常に遅く、その出力トークン化の進行したことでした。とにかく、私は次のことを試してみた:
f <- function(x) capture.output(tokenize(x, format="obj", lang='en'),file=NULL)
g <- function(x) flesch.kincaid(x)
x <- foreach(i=1:length(d), .combine='c',.errorhandling='pass') %do% g(f(d[[i]]))
y <- unlist(sapply(x,slot,"Flesch.Kincaid")["age",])
ここに私の意図は、メタデータ、meta(d, "F-KScore") <- y
として私tm(d)
コーパスに戻って上記y
オブジェクトを再バインドすることです。
は残念ながら、私の実際のデータセットに適用され、私は、エラーメッセージが表示されます:
Error in FUN(X[[1L]], ...) :
cannot get a slot ("Flesch.Kincaid") from an object of type "character"
私は私の実際のコーパスの一つの要素は、NA、または長すぎる、法外な何か他のものでなければならないと思います---とネストされた機能化のために、私は正確にそれを追跡するのに問題があります。
現在、tm
ライブラリでうまくいくスコアを読み取るための事前構築された機能がないようです。誰かが簡単にエラーをキャッチする解決法を見ていない限り、間違った形式の不正な文書をトークン化できないということを私の関数呼び出しに取り込むことができますか?
あなたは、TMから 'tm_map'とkoRpusから' flesh.kincaid'を使用することができませんか? –
私はそうではないようです。 「エラー:言語が指定されていません!」と表示されます。私は、 'tm_map(dd、flesch.kincaid、" en ")'などのように考えることができます。 – Mittenchops
私は別のSOの質問(http:/ /引数をネストされた関数に渡す方法については、http://stackoverflow.com/questions/6827299/r-apply-function-with-multiple-parametersを参照してください)。私はこの 'tm_map(d、flesch.kincaid、force.lang =" en "、tagger = tokenize)'を試しましたが、 "指定されたファイル"を見つけることができないというエラーを出して、文書1の内容を出力します。 – Mittenchops