1

RWeka パッケージ、特にバイグラムを作成するための NGramTokenizer 関数に苦労しました。インターネットを精査すると、同じ問題を抱えているが解決策がないユーザーが 1 人か 2 人います (それは私にとってはうまくいきます)。

以下は例です: RWeka を使用した 1-gram の代わりに 2-gram と 3-gram

実行中:

library(RWeka) 
library(tm)

as.matrix(TermDocumentMatrix(Corpus(VectorSource(c(txt1 = "This is my house",
                                               txt2 = "My house is green"))),
                         list(tokenize = function(x) NGramTokenizer(x, 
                                                                    Weka_control(min=2, 
                                                                                 max=2)),
                              tolower = TRUE)))

私は得る:

       Docs
Terms   txt1 txt2
  house    1    1
  this     1    0
  green    0    1
  • バイグラムではなく、ユニグラム (house、this、green) だけであることに注意してください。

DataCamp コースから学んだ方法と同様に、トークナイザー機能が分割された揮発性コーパスで試しましたが、代わりに以下の問題が発生します。

Error in .jcall("RWekaInterfaces", "[S", "tokenize", .jcast(tokenizer,
:    java.lang.NullPointerException Called from: .jcheck()

私がインターネットで見た他の解決策は問題なく動作しましたが、それでも上記のようなユニグラムになりました。

Java 1.8 と R 3.4.3 の両方を 64 ビット Windows OS 上で実行しています。

RWekaの古いバージョンをインストールしようとしましたが、tmの古いインストールを試してみるとエラーが発生したため、それを機能させることができませんでした(この質問の冒頭にリンクされているSOスレッドでLukeAが参照しているバージョンを使用)。

4

2 に答える 2