Help us understand the problem. What is going on with this article?

splunkで正規表現を使って形態素解析ぽい事をする

More than 1 year has passed since last update.

今回は、Slackやtwitter などの文章データを取り込んだあとに、単語ベースで分析したい場合に、英語だと単語がスペースで区切られているので解析しやすいのですが、日本語の場合品詞分解が非常に複雑で手間がかかるかと思います。
一般的には MeCabなどのツールを使って形態素解析するのがいいかもしれませんが、Splunkではデフォルトではそのようなツールが入っていないので、形態素解析した後に、Splunkに取り込む必要があります。

そこで、今回はMeCabなどのツールほど正確に形態素解析はできませんが、もどきの方法を正規表現を使ってやってみたいと思います。

image.png

正規表現で日本語を識別して取り込むには?

Splunkはデフォルト Unicodeで取り込まれますが、Unicodeスクリプトを使って簡単に漢字やひらがななどにマッチングさせて取り込むことができるようです。
http://module.jp/blog/regex_unicode_prop.html

正規表現 識別ターゲット
\p{Katakana} カタカナ
\p{Hiragana} ひらがな
\p{Han} 漢字
\p{Latin} 英数字

Splunkで正規表現を使って、文章を分解してみよう。

上記の正規表現を使って、単語に分解して、その出現回数をカウントしてみたいと思います。
ただし、漢字同士が続いたりすると同一単語と認識されてしまうので、正確性にはかけますので、その点はご容赦ください。

source=slack* 
| rex field=text max_match=100 "(?<Hira>\p{Hiragana}+)" 
| rex field=text max_match=100 "(?<Kanji>\p{Han}+)" 
| rex field=text max_match=100 "(?<Kata>\p{Katakana}+)" 
| rex field=text max_match=100 "(?<Latin>\p{Latin}+)" 
| eval word = mvappend(Latin,Kanji, Hira, Kata) 
| mvexpand word
| top limit=20 word

image.png

時系列で表示してみたり

image.png

Wordcloud で可視化してみたり
https://splunkbase.splunk.com/app/3212/

image.png

さいごに

今回は、日本語メッセージでも非常にシンプルにできる形態素解析もどきをご紹介しました。

maroon
Splunk + ML を中心にアップしていきたいと思います ちなみに、こちらに投稿する内容はあくまで個人の見解ですのですので利用にはご注意ください
https://github.com/maroon-spec/qiita
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away