まえがき
お久しぶりです。まぁじです。
なんか前のブログから3ヶ月経ってるらしく広告も表示されているのでそろそろ書こうかな、と思い立ったのでちょうどやりたかった「MeCabによる形態素解析」をやってみます。
これはいつものやつなんですが、プログラミングについてよくわかっている人にとっては知っていることばかりだと思うので、暇を持て余した石油王か僕のブログに興味のある奇怪な人だけ読んでください。
MeCabとは
MeCabは 京都大学情報学研究科−日本電信電話株式会社コミュニケーション科学基礎研究所 共同研究ユニットプロジェクトを通じて開発されたオープンソース 形態素解析エンジンです。
MeCab: Yet Another Part-of-Speech and Morphological Analyzer
なんか形態素解析ってやつをやるものだそうです。
MeCabのインストール
環境は以下の通りです。なおPythonやpipはインストール済みとします。
インストールしてみよう
64bit版のインストーラーがあるようなのでそれを利用しました。(ただし非公式)
Release MeCab 0.996 64bit version · ikegami-yukino/mecab · GitHub
Assetsの一番上の「mecab-64-0.996.2.exe」をクリックしてダウンロード、ダウンロード完了後インストールをします。
インストールは大体OKでいいですが、エンコード形式を選ぶ画面(多分)では「utf-8」を選択するようにして下さい。
MeCabのPathを通す
Cortanaで「環境変数の編集」と入力し設定画面を開きます。その中の「Path」をクリックしてから「編集」をクリックします。
たくさんパスがでてくるので、『mecab.exe』が入っているフォルダのパスをコピーし「新規」を押して1番下に入力します。(僕の場合は↓でした。)
C:\Program Files\MeCab\bin
入力が終わり、OKでウィンドウを閉じた後コマンドプロンプト・PowerShellを開き「mecab」と入力してみてエラーが出なければ成功です。
適当に言葉を入力してみましょう。文字化けはしていますがこれはコマンドプロンプトのエンコード形式がutf-8じゃない(確かShift-JIS)からです。それを除けばちゃんとできていますね。
C:\Users\****>mecab 我々は宇宙人だ 險伜捷,荳闊ャ,*,*,*,*,* 艨X 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* は 險伜捷,荳闊ャ,*,*,*,*,* F 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* 宙 險伜捷,荳闊ャ,*,*,*,*,* l 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* だ 險伜捷,荳闊ャ,*,*,*,*,* EOS
Pathが通らない場合
C:\Users\****>mecab 'mecab' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
このように表示された場合はPathが通っていません。策としては
- 環境変数名の編集でパスを選択して「上へ」を押し1番上にする
- 「参照」でファイルの場所を直接示す
- パスの末尾に「\」を追加する
- PCを再起動してみる
があります。これでできなければ再インストールした方がいいと思われます…
PythonでMeCabをいじる
以下のコマンドをコマンドプロンプト・PowerShellで入力します。
C:\Users\****>pip install mecab-python-windows
これでPythonを使ってMeCabを触ることができるようになりました。
テキスト「text.txt」を用意します。今回は西尾維新の「化物語シリーズ」に出てくる阿良々々木暦(失礼かみまみた)のセリフを形態素解析してみようと思います。
これをtext.txtとし、utf-8で保存しておきます。
友達は作らない、人間強度が下がるから
「mecab_test.py」は以下のようにしておきます。
import MeCab import sys import re #ファイルの読み込み fp="****\\text.txt" with open(fp,encoding="utf-8") as f: data=f.read() parse=MeCab.Tagger().parse(data) lines=parse.split("\n") items=[re.split("[\t,]",line) for line in lines] for item in items: print(item)
実行結果はこんな感じです。ちゃんと動いているかと思います。
****>python mecab_test.py ['\ufeff', '記号', '一般', '*', '*', '*', '*', '*'] ['友達', '名詞', '一般', '*', '*', '*', '*', '友達', 'トモダチ', 'トモダチ'] ['は', '助詞', '係助詞', '*', '*', '*', '*', 'は', 'ハ', 'ワ'] ['作ら', '動詞', '自立', '*', '*', '五段・ラ行', '未然形', '作る', 'ツクラ', 'ツクラ'] ['ない', '助動詞', '*', '*', '*', '特殊・ナイ', '基本形', 'ない', 'ナイ', 'ナイ'] ['、', '記号', '読点', '*', '*', '*', '*', '、', '、', '、'] ['人間', '名詞', '一般', '*', '*', '*', '*', '人間', 'ニンゲン', 'ニンゲン'] ['強度', '名詞', '一般', '*', '*', '*', '*', '強度', 'キョウド', 'キョード'] ['が', '助詞', '格助詞', '一般', '*', '*', '*', 'が', 'ガ', 'ガ'] ['下がる', '動詞', '自立', '*', '*', '五段・ラ行', '基本形', '下がる', 'サガル', 'サガル'] ['から', '助詞', '接続助詞', '*', '*', '*', '*', 'から', 'カラ', 'カラ'] ['EOS'] ['']
おわりに
なんかいろいろ活用しようかと思ったらインストールしてちょっと試すだけで1ブログ書けました。内容がないので超絶面白ギャグを言って終わります。
メカブが…浮かぶ!!!!!!!!!!!!!!!
以上です。読んでいただきありがとうございました。