RMeCabの操作関連

アールメカブ フォーラム RMeCab RMeCabの操作関連

タグ: 

  • このトピックには5件の返信、2人の参加者があり、最後にishidaにより6年、 9ヶ月前に更新されました。
6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • 投稿者
    投稿
  • #751
    ishida
    キーマスター

    RMeCabの使い方、あるは操作中のエラーなどについて

    • このトピックはishidaが6年、 10ヶ月前に変更しました。
    • このトピックはishidaが6年、 10ヶ月前に変更しました。
    #776
    hikaru_goto
    ゲスト

    先日, twitter でお答えいただいた者です。
    おかげさまで,分析のフェーズに進めたのですが
    docDF() を使って,分析データを作る際に

    docDF(“Users/hikaru1122/Dropbox/02-research/00-working/2017/vcd/analysis/text/”, でエラー:
    SET_STRING_ELT() can only be applied to a ‘character vector’, not a ‘integer’

    というエラーが出ました。グーグルで検索しても,解決策がわかりません。

    実行したコードは次のとおりです。
    hoge = docDF(“/textfile/hozon/shiteru/folder/”, type = 1, pos = c(“名詞”,”形容詞”))

    フォルダには1080個のテキストファイルがあって,file1.txt〜file1080.txtという名前をつけています。

    よろしくお願いします。

    #778
    ishida
    キーマスター

    docDF()の内部に指定されたパス指定“Users/hikaru1122/…” ではなく“/Users/hikaru1122/… のはず) がまちがっているようですが、これは、この掲示板へのコピーのミスだとします。

    どうもメモリを確保できなくなったように思われます。docDF()関数は、形態素に加えて品詞大分類、品詞小分類まで保存しますので、かなりメモリを圧迫します。
    動作確認として、ファイル100 個程度のサブセットで動作するか試してみてください。
    あるいは、品詞情報が不要であれば docMlatrix2(“ファイルのあるフォルダへのパス”) 関数も試してみてください。

    #779
    hikaru_goto
    ゲスト

    お返事、ありがとうございます。
    確かに、読み込むテキストファイルを100個にしたら動くみたいです。
    docMlatrix2 も試してみようと思います。

    #780
    ishida
    キーマスター

    もしも多数のファイルから単語文書行列を作成したい場合は、面倒ですが、ファイル集合を複数に分けて、それぞれから単語文書行列を作成してから、メモリの効率の良い疎行列に変換して、最後に結合するという手段もあります。概略以下のような処理になります。

    
    library(RMeCab)
    ## 文書集合1
    x <- docMatrix2("folder1")
    ## 文書集合2
    y <- docMatrix2("folder2")
    ## 文書集合3
    z <- docMatrix2("folder3")
    ## 疎な行列に変換
    library(Matrix) 
    x_s <- as(x, "dgCMatrix")
    y_s <- as(y, "dgCMatrix")
    z_s <- as(z, "dgCMatrix")
    ## 行名の共通集合を取得
    words <- intersect(rownames(x_s), intersect(rownames(y_s), rownames(z_s)))
    ## 行名(行数)を統一
    x_s <- x_s[words, ]
    y_s <- y_s[words, ]
    z_s <- z_s[words, ]
    ## 結合
    cbind2 (x_s, y_s, z_s)
    

    問題は、それぞれの行列の行数を揃えないといけないので、すべての疎行列(の行名)から、必要とする単語だけを抽出する必要があり、この整形が若干手間がかかります。
    さらに疎な行列のままだと、適用できる分析関数が限られるので、その場合、再度、通常の行列に戻す必要がありますが、その際、再びメモリ不足を警告される恐れはあります。

    #787
    ishida
    キーマスター

    この件ですが、RMeCab内部で、読み込み可能なファイル数に制限を設定しているのを失念しておりました。
    RMeCabを開発した頃は、Rのメモリ周りの余裕が厳しかったための処理なのですが、いまは不要だと思います。
    時期バージョン(RMeCab0.99998)から解除します。

6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • フォーラム「RMeCab」には新規投稿および返信を追加できません。