Rで解析:単一文字の分布調査に便利です。「qlcMatrix」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

テキストマイニングにはRMecabが大変便利です。ただ、単一文字の分布調査は少し工夫が必要です。そんな問題の解決となるパッケージの紹介です。

パッケージには文字列を分解するのに便利なコマンドが多数収録されています。その中から、単一文字や複数単語で構成される文字ベクトルの「単一文字および単語を構成する単一文字」の分布を調査する「ttMatrixコマンド」「pwMatrixコマンド」を紹介します。

また、おまけとして「ttMatrixとpwMatrixコマンドの組み合わせ処理で各単語内の文字の分布数を調査」するコマンドを紹介します。

パッケージのバージョンは0.9.7。実行コマンドはR version 4.2.2で確認しています。

スポンサーリンク

パッケージのインストール

下記、コマンドを実行してください。

#パッケージのインストール
install.packages("qlcMatrix")

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("qlcMatrix")

###データ例の作成#####
TestData <- c("a", rep("&#12354;", 3), "i", "&#12356;")
[1] "a"  "&#12354;" "&#12354;" "&#12354;" "i"  "&#12356;"
TestString <- c("&#12363;&#12425;&#12384;&#12395;&#12356;&#12356;&#12371;&#12392;", "R&#12391;&#12356;&#12356;&#12371;&#12392;")
[1] "&#12363;&#12425;&#12384;&#12395;&#12356;&#12356;&#12371;&#12392;" "R&#12391;&#12356;&#12356;&#12371;&#12392;" 
########

#&#21508;&#25991;&#23383;&#21015;&#12398;&#20998;&#24067;&#29366;&#27841;&#12434;&#30906;&#35469;:ttMatrix&#12467;&#12510;&#12531;&#12489;
#&#32080;&#26524;&#24418;&#24335;&#12434;&#25351;&#23450;:simplify&#12458;&#12503;&#12471;&#12519;&#12531;;FALSE&#12391;list class,TRUE&#12391;ngCMatric class
ttMatrix(TestData, simplify = FALSE)

$M
4 x 6 sparse Matrix of class "ngCMatrix"
[1,] | . . . . .
[2,] . . . . | .
[3,] . | | | . .
[4,] . . . . . |
$rownames
[1] "a"  "i"  "&#12354;" "&#12356;"

#simplify:TRUE
ttMatrix(TestData, simplify = TRUE)
4 x 6 sparse Matrix of class "ngCMatrix"
   a &#12354; &#12354; &#12354; i &#12356;
a  |  .  .  . .  .
i  .  .  .  . |  .
&#12354; .  |  |  | .  .
&#12356; .  .  .  . .  |
  
#&#21508;&#21336;&#35486;&#12434;&#27083;&#25104;&#12377;&#12427;&#25991;&#23383;&#21015;&#12398;&#20998;&#24067;&#29366;&#27841;&#12434;&#30906;&#35469;:pwMatrix&#12467;&#12510;&#12531;&#12489;
&#21336;&#35486;&#38291;&#12398;&#21306;&#20999;&#12426;&#12434;&#35373;&#23450;:gap.length&#12458;&#12503;&#12471;&#12519;&#12531;;&#21306;&#20999;&#12426;&#22238;&#25968;,gap.symbol&#12458;&#12503;&#12471;&#12519;&#12531;;&#21306;&#20999;&#12426;&#12398;&#12471;&#12531;&#12508;&#12523;
pwMatrix(TestString, simplify = TRUE, gap.length = 2,
         gap.symbol = " ", sep = "")

15 x 2 sparse Matrix of class "ngCMatrix"
    &#12363;&#12425;&#12384;&#12395;&#12356;&#12356;&#12371;&#12392; R&#12391;&#12356;&#12356;&#12371;&#12392;
&#12363;                |           .
&#12425;                |           .
&#12384;                |           .
&#12395;                |           .
&#12356;                |           .
&#12356;                |           .
&#12371;                |           .
&#12392;                |           .
                  .           .
                  .           .
R                 .           |
&#12391;                .           |
&#12356;                .           |
&#12356;                .           |
&#12371;                .           |
&#12392;                .           |
  
###&#12362;&#12414;&#12369;:ttMatrix&#12392;pwMatrix&#12467;&#12510;&#12531;&#12489;&#12398;
###&#32068;&#12415;&#21512;&#12431;&#12379;&#20966;&#29702;&#12391;&#21508;&#21336;&#35486;&#20869;&#12398;&#25991;&#23383;&#12398;&#20998;&#24067;&#12434;&#35519;&#26619;#####
ResTestStrins <- pwMatrix(TestString, simplify = TRUE,
                          gap.length = 2, gap.symbol = " ", sep = "")
#ttMatrix&#12391;&#21508;&#25991;&#23383;&#12398;&#20998;&#24067;&#12434;&#35519;&#26619;
ResTT <- ttMatrix(rownames(ResTestStrins), simplify = TRUE)
#&#25991;&#23383;&#12398;&#20998;&#24067;&#12434;&#35336;&#31639;
(ResTT*1) %*% (ResTestStrins*1)

10 x 2 sparse Matrix of class "dgCMatrix"
   &#12363;&#12425;&#12384;&#12395;&#12356;&#12356;&#12371;&#12392; R&#12391;&#12356;&#12356;&#12371;&#12392;
                  .           .
R                 .           1
&#12356;                2           2
&#12363;                1           .
&#12371;                1           1
&#12384;                1           .
&#12391;                .           1
&#12392;                1           1
&#12395;                1           .
&#12425;                1           .

少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました