MeCab의 출력 형식을 정리하여 Pandas로 처리 할 수있게했다

개요



MeCab 의 반환값의 의미를 모르기 때문에 조사해 정리해 보았습니다.그리고, 그 결과를 Pandas 공개되었습니다.

실행 환경


  • Python: 3.6.5
  • MeCab: 0.996
  • Neologd: 2018/5/8 현재 최신 버전
  • mecab-python3: 0.7
  • pandas: 0.22.0

  • 곤란한 곳



    MeCab에서 "스플라툰에서 우데마에 X가 되지 않아서 분하다."라는 문자열을 입력하면 다음 결과가 반환된다.
    スプラトゥーン   名詞,固有名詞,一般,*,*,*,Splatoon,スプラトゥーン,スプラトゥーン
    で 助詞,格助詞,一般,*,*,*,で,デ,デ
    ウデマエ    名詞,一般,*,*,*,*,腕前,ウデマエ,ウデマエ
    X   名詞,固有名詞,一般,*,*,*,X,エックス,エックス
    に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
    なら  動詞,自立,*,*,五段・ラ行,未然形,なる,ナラ,ナラ
    なく  助動詞,*,*,*,特殊・ナイ,連用テ接続,ない,ナク,ナク
    て 助詞,接続助詞,*,*,*,*,て,テ,テ
    悔しい   形容詞,自立,*,*,形容詞・イ段,基本形,悔しい,クヤシイ,クヤシイ
    。 記号,句点,*,*,*,*,。,。,。
    EOS
    

    탭으로 구분된 이후의 쉼표로 구분된 요소의 각각의 의미를 잘 모르겠다.

    반환값의 포맷



    GitHub 가 참고가 되었습니다. 거기에서 유추하면 MeCab의 형식은 다음과 같은 형태입니다.
    表層形\t品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音
    

    CaboCha의 출력은 활용형과 활용형의 순서가 반대로 되어 있는 것에 주의입니다.

    응용 예



    활용 해결



    같은 단어에서도 활용형이 다르면 다른 문자열이 되어 버려, 분석 내용에 따라서는 불편이 생깁니다. 예를 들어 문장에 어떤 키워드가 포함되어 있는지 추출하는 작업입니다. 아래의 문장이라면, 「가지고」와 「가지고 있다」가 다른 단어가 되어, 기대한 결과와 다른 요인이 될 수 있습니다.
    コントローラーの持ち方を変えて、ガチホコを持ったら勝てるようになった。
    コントローラー   名詞,一般,*,*,*,*,コントローラー,コントローラー,コントローラー
    の 助詞,連体化,*,*,*,*,の,ノ,ノ
    持ち  動詞,自立,*,*,五段・タ行,連用形,持つ,モチ,モチ
    方 名詞,接尾,特殊,*,*,*,方,カタ,カタ
    を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
    変え  動詞,自立,*,*,一段,連用形,変える,カエ,カエ
    て 助詞,接続助詞,*,*,*,*,て,テ,テ
    、 記号,読点,*,*,*,*,、,、,、
    ガチホコ    名詞,固有名詞,一般,*,*,*,ガチホコ,ガチホコ,ガチホコ
    を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
    持っ  動詞,自立,*,*,五段・タ行,連用タ接続,持つ,モッ,モッ
    たら  助動詞,*,*,*,特殊・タ,仮定形,た,タラ,タラ
    勝てる   動詞,自立,*,*,一段,基本形,勝てる,カテル,カテル
    よう  名詞,非自立,助動詞語幹,*,*,*,よう,ヨウ,ヨー
    に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
    なっ  動詞,自立,*,*,五段・ラ行,連用タ接続,なる,ナッ,ナッ
    た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
    。 記号,句点,*,*,*,*,。,。,。
    EOS
    

    여기서, 「원형」의 요소를 보러 가면, 함께 「가지」로 변환되고 있으므로, 활용으로 머리를 괴롭힐 필요는 없습니다.

    읽기와 발음에 주목한 해석



    일본어는 같은 읽기나 발음에서도, 히라가나・가타카나・한자와 다른 표기 수법이 있습니다. 발화했을 때에 어떤 리듬감이 되는지를 해석하고 싶은 등(예를 들면 시의 좋고 나쁜 판정이라든지)의 태스크에서는, 이 일본어의 사양은 불편합니다.
    サンフランで土師さんが箸を持って橋の端を渡る
    サンフラン 名詞,一般,*,*,*,*,*
    で 助詞,格助詞,一般,*,*,*,で,デ,デ
    土師  名詞,固有名詞,人名,姓,*,*,土師,ハジ,ハジ
    さん  名詞,接尾,人名,*,*,*,さん,サン,サン
    が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
    箸 名詞,一般,*,*,*,*,箸,ハシ,ハシ
    を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
    持っ  動詞,自立,*,*,五段・タ行,連用タ接続,持つ,モッ,モッ
    て 助詞,接続助詞,*,*,*,*,て,テ,テ
    橋 名詞,一般,*,*,*,*,橋,ハシ,ハシ
    の 助詞,連体化,*,*,*,*,の,ノ,ノ
    端 名詞,一般,*,*,*,*,端,ハジ,ハジ
    を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
    渡る  動詞,自立,*,*,五段・ラ行,基本形,渡る,ワタル,ワタル
    EOS
    

    「읽기」나 「발음」의 요소를 보러 가면, 한자를 카타카나로 변환해 주기 때문에, 처리가 매우 편해집니다. 원래 카타카나의 경우는 「*」가 되어 버리므로, 주의입니다. 그 때는 표층형을 대신 가져오면 됩니다.

    Pandas에서 다룰 수 있도록했습니다.



    CaboCha 기사 에 샘플 코드를 넣었으므로, 괜찮으면 사용해 보세요. 아래와 같이 사용할 수 있습니다!
    Python 3.6.5 |Anaconda custom (64-bit)| (default, Apr 29 2018, 16:14:56)
    [GCC 7.2.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from mecab_pandas import MeCabParser
    >>> mp = MeCabParser()
    >>> mp.parse("ケルビン強化されたと思ったけど、やっぱスパッタリー最強だわ。")
       surface_form word_class class_detail1 class_detail2 class_detail3  \
    0          ケルビン         名詞            一般          None          None   
    1            強化         名詞          サ変接続          None          None   
    2                      動詞            自立          None          None   
    3                      動詞            接尾          None          None   
    4                     助動詞          None          None          None   
    5                      助詞           格助詞            引用          None   
    6            思っ         動詞            自立          None          None   
    7                     助動詞          None          None          None   
    8            けど         助詞          接続助詞          None          None   
    9                      記号            読点          None          None   
    10          やっぱ         副詞            一般          None          None   
    11       スパッタリー         名詞            一般          None          None   
    12           最強         名詞            一般          None          None   
    13                    助動詞          None          None          None   
    14                     助詞           終助詞          None          None   
    15                     記号            句点          None          None   
    
       conjugational_type conjugational_form original_form katakana pronunciation  
    0                None               None          ケルビン     ケルビン          ケルビン  
    1                None               None            強化     キョウカ          キョーカ  
    2               サ変スル             未然レル接続            する                       
    3                  一段                連用形            れる                       
    4                特殊                基本形                                    
    5                None               None                                    
    6            五段ワ行促音便              連用タ接続            思う      オモッ           オモッ  
    7                特殊                基本形                                    
    8                None               None            けど       ケド            ケド  
    9                None               None                                    
    10               None               None           やっぱ      ヤッパ           ヤッパ  
    11               None               None          None     None          None  
    12               None               None            最強    サイキョウ         サイキョー  
    13               特殊                基本形                                    
    14               None               None                                    
    15               None               None                                  
    

    후기



    코드를 작성하는 것은 간단했지만 결과 형식을 찾는 데 어려움을 겪었습니다. 리소스를 활용하고 있으므로, 잘못하는 설이 있네요. 「여기에 있다」같은 정보가 있으면 꼭 코멘트해 주세요! 그럼

    좋은 웹페이지 즐겨찾기