Splunk에서 MeCab을 사용한 형태소 분석

마지막 기사 에서 정규식을 사용한 형태소 해석 모도키를 소개했습니다만, 이번은 깔끔한 MeCab를 사용한 형태소 해석을 할 수 있도록 커스텀 커맨드를 만들어 Splunk에 구현하고 싶습니다.

MeCab이란?



MeCab은 오픈 소스의 형태소 해석 엔진으로, 나라 첨단 과학 기술 대학원 대학 출신, 현 Google 소프트웨어 엔지니어로 Google 일본어 입력 개발자의 한 사람인 쿠도 타쿠에 의해 개발되고 있다. - wikipedia에서 -

이 Blog등이 구조 등 자세하게 써 있어 알기 쉬웠습니다만, 일본어 환경에 있어서의 형태소 해석으로서는 매우 유명한 형태소 해석 엔진입니다.
htps : // / ch ぃふぇ. 코오 k 파 d. 코m/엔트리/2016/05/11/170000

Splunk에 어떻게 구현합니까?



기본적으로 Splunk에는 MeCab 분석 엔진이 없으므로 별도로 설치해야 합니다. 또한 파이썬에서 실행할 수 있도록 사용자 정의 명령으로 스플랭크에 구현해야합니다.
이러한 작업이 번거롭다면 Splunk에 캡처하기 전에 MeCab을 실행하여 결과를 캡처하는 등이 필요하지만 이번에는 열심히 구현하고 싶습니다.

구현의 대략적인 흐름


  • MeCab 설치 on Splunk
  • Splunk의 사용자 지정 명령으로 구현
  • SPL에서 실행해보십시오

  • 1. MeCab 설치



    참고 사이트
    htps : // 이 m / 쇼우 c 레테 / ms / c7864 아 5200238 d8678 아
    ## Groonga レポジトリの追加
    $ sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
    $ sudo yum makecache
    
    ## MeCab や辞書のインストール
    $ sudo yum -y install mecab mecab-ipadic
    $ sudo yum -y install mecab-devel
    
    ## python の Mecab パッケージをインストール
    $ pip install mecab-python3
    

    설치가 안전하게 이루어지면 먼저 콘솔에서 MeCab을 사용해보십시오.
    다음과 같은 샘플 코드를 파이썬으로 실행해 보겠습니다.

    mecab-sample.py
    # -*- coding: utf-8 -*-
    import sys
    import MeCab
    
    # 今回は、 wakati を使っております。品詞などは表示されませんが、あとで加工しやすいように表示されます。
    m = MeCab.Tagger("-Owakati")  
    print m.parse("こんにちは皆さん。今日はいい天気ですね")
    

    실행 확인
    $ python mecab-sample.py
    こんにちは 皆さん 。 今日 は いい 天気 です ね
    
    ## わかりずらいかもしれませんが、単語ごとに分解されて、スペースで区切られております。
    

    이제 파이썬에서도 실행할 수 있습니다.

    2. Splunk의 사용자 지정 명령으로 구현



    2.1 Splunk SDK for Python 설치



    2.2 사용자 정의 명령 작성



    작성에 있어서 이쪽을 참고로 했습니다.

    맞춤 검색 명령을 만드는 방법(Splunk)
    h tps:// 퀵했다. 작은 m/명이다/있어 MS/c5 아 2985882C4b3f30 그림 31

    Splunk 실행 결과를 Python을 사용하여 처리하고 파일에 저장
    htps : // 코 m / 미가다 / ms / 476139 아카 d9293

    mecab.py
    # -*- coding: utf-8 -*-
    import splunk.Intersplunk
    import sys
    import MeCab
    
    results, dummyresults, settings = splunk.Intersplunk.getOrganizedResults()
    m = MeCab.Tagger("-Owakati")
    
    for result in results:
        word = m.parse(result['text'])
        result['mecab'] = word
    
    splunk.Intersplunk.outputResults(results)
    

    이 명령 전에 실행한 결과를 splunk.Intersplunk.getOrganizedResults() 함수로 가져올 수 있습니다. 그 때 데이터 포맷은 사전 형식[{'text':'Alert dayo'}]이므로 주의해 주세요.
    마지막으로 splunk.Intersplunk.outputResults(results)로 출력 결과를 SPL로 되돌립니다.

    방금 만든 명령을/opt/splunk/etc/apps/search/bin/에 넣고/opt/splunk/etc/apps/search/local/commands.conf, authorize.conf 등을 편집합니다.

    commands.conf
    [mecab]
    filename = mecab.py
    

    authorize.conf
    [capability::run_script_mecab]
    
    [role_admin]
    run_script_mecab = enabled
    

    3. SPL에서 실행해보기



    이제 마침내 Splunk에서 Mecab을 사용하여 분석 엔진을 실행할 수 있습니다.
    빨리 시도해 봅시다.
    source=slack* 
    | table text
    | run mecab
    



    다음에 단어마다 출현 횟수를 카운트해 보겠습니다.
    source=slack* 
    | table text
    | run mecab
    | makemv mecab    # スペース区切りをベースにマルチバリューに変換
    | mvexpand mecab   # マルチバリューをイベント単位に変換
    | stats count by mecab   # 単語ごとにカウントを計算
    | where len(mecab) > 1    #あまり意味のない単語を省くため一文字のものを削除
    



    워드 클라우드 그래프를 사용하여 시각화
    htps : // sp ㎅ k 바세. sp ㎅ k. 코 m/아 p/3212/



    요약



    이번은 일본어 형태소 해석으로서 유명한 MeCab를 사용해 분해해 보았습니다.
    다른 옵션을 사용하거나 하면 더 정밀도를 높일 수 있었다고 생각합니다만, 이번의 데이터에서는 결과적으로는 정규 표현으로 실시한 전회의 것과 별로 변하지 않았습니다. 하지만 Splunk에서 MeCab을 사용할 수 있게 되었기 때문에 조금은 해석하기 쉬워졌다(?)일지도.

    좋은 웹페이지 즐겨찾기