rでテキストファイルの文を1行ずつ分かち書き
今回は、前回の記事で作成したデータセットについて、分かち書きを実行します。分かち書きすることで、例えばword2vec*1など更なる分析に活用できます。
前回に引き続き利用するRパッケージRMeCab*2には、RMeCabTextという関数が用意されています。
RMeCabTextは、引数に日本語テキストファイル(文字符号化はRの設定値に一致していなければならない)を二重引用符「"」で挟んで指定して、MeCabに渡し、その結果をリスト形式でそのまま返す関数。 各リストの要素は、10要素からなるベクトルである。*3
しかし今回、全3047行のテキストファイルに対して実行すると、処理落ちしてしまいました。
res <- RMeCabText("C:/nikkei.txt")
テキストファイルから100行程度を抜粋して実行すると問題なく処理できたので、細かく処理して最後に結果を結合しても良かったのですが、せっかくなので1行ずつ分かち書きしていくスクリプトを書きました。
library(RMeCab) f = file("C:/nikkei.txt","r") out <- file("C:/output.txt", "w") while (1){ a = readLines(con=f, 1) if (length(a) <= 0){ break } res = RMeCabC(a) writeLines(paste(res), out, sep=",") writeLines(paste(""), out, sep="\n") } close(out)
入力ファイルと出力ファイルの中身は以下の通りです。
入力ファイルの中身
出力ファイルの中身