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が参照しているバージョンを使用)。