この記事は[[RcppMeCabとtidytextではじめるテキストマイニング]]シリーズの一部です。 !!!目次 {{outline}} ---- !!!形態素解析とは 前述のように、テキストマイニングをするためには形態素解析をする必要があります。形態素解析とは、テキストを、意味のある最小単位である形態素 (単語) に分解する処理です。さらに、必要に応じて、テキストの中で使用された形態素 (表層形・出現形) を原形 (活用しない、辞書に載っているかたち) に戻す場合もあります。 {{b_center {{ref_ex_image morphological_analysis.png,,size:70%}} }} 形態素解析を行うソフトウェアを形態素解析器と呼びます。自然言語処理の研究者などが、様々な形態素解析器を開発、公開しています。代表的なものに以下があります。 * [MeCab|https://taku910.github.io/mecab/]: 最も広く使われている。本記事でもRcppMeCabパッケージを通じて使用する * [JUMAN++|http://nlp.ist.i.kyoto-u.ac.jp/index.php?JUMAN++]: "単語の並びの意味的な自然さを考慮した解析" を行うため、性能が良い。旧バージョンの[JUMAN|http://nlp.ist.i.kyoto-u.ac.jp/index.php?JUMAN]もある * [Chasen|https://chasen-legacy.osdn.jp/]: 歴史の古い形態素解析器。[KH Coder|https://khcoder.net/]などのツールに組み込まれている * [Janome|https://mocobeta.github.io/janome/]: Pythonで書かれた形態素解析器 形態素解析器のシェアについては、正確な調査はありませんが、MeCabが広く利用されているようです。詳細は後述しますが、Rからも[RMeCab|http://rmecab.jp/wiki/index.php?RMeCab]や[RcppMeCab|https://github.com/junhewk/RcppMeCab]などのパッケージを使って呼び出すことができます。 !!!MeCabのインストール ここでは、WindowsとLinux (Ubuntu) にMeCabをインストールする手順を紹介します。 !!Windows Windows向けにインストーラーが提供されており、基本的には "OK" や "次へ" を押していけばインストールが完了します。インストーラーは、以下のURLで公開されています。 * https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7WElGUGt6ejlpVXc なお、'''64bit OS (最近のWindowsは大抵そうだと思いますが) では、以下の「野良ビルド版」をダウンロードした方がよいでしょう。'''のちほどRcppMeCabパッケージをインストールするのですが、その際に32bit版の (オフィシャルな) MeCabではエラーが出ます。{{fn 開発者の母国である韓国では、韓国語に対応した64bit版のMeCabが使用されているようで、RcppMeCabパッケージも自然に64bit版でコンパイルしようとしますが、オリジナルのMeCabは32bit版なので、エラーになります。}} * https://github.com/ikegami-yukino/mecab/releases/download/v0.996.2/mecab-64-0.996.2.exe インストーラーをダブルクリックすると、以下のような画面が続きます。詳細なインストール手順は、[Windows10にMeCabをインストール : 私的メモ|http://blog.livedoor.jp/oyajieng_memo/archives/1749255.html]などが参考になります。 {{b_center {{img mecab_install01.png,"style='width:35%;vertical-align:middle'"}} {{img mecab_install02.png,"style='width:35%;vertical-align:middle'"}} {{img mecab_install03.png,"style='width:35%;vertical-align:middle'"}} {{img mecab_install04.png,"style='width:35%;vertical-align:middle'"}} {{img mecab_install05.png,"style='width:35%;vertical-align:middle'"}} {{img mecab_install06.png,"style='width:35%;vertical-align:middle'"}} {{img mecab_install07.png,"style='width:35%;vertical-align:middle'"}} {{img mecab_install08.png,"style='width:35%;vertical-align:middle'"}} }} 基本的に "OK" や "次へ" を押していけばよいのですが、一点、'''「辞書の文字コードの選択」については、"UTF-8" を選択しましょう。'''{{fn 上記のブログ記事でもそのようにしています。}}Windowsの標準的な文字コードはShift-JISですが、近年RではUTF-8を前提とした環境が広がりつつあり、また後述するNEologd辞書もUTF-8で作成されているため、WindowsでもUTF-8を採用して環境を構築する方がなにかと便利です。ただし、MeCabをUTF-8でインストールすると、コマンドプロンプトでの使用はできなくなります。{{fn 文字化けします。chcp 65001などでコマンドプロンプトの表示をUTF-8に変換しても、文字化けします。}}コマンドプロンプトや他のソフトウェアでもMeCabを使用することがある場合は、Shift-JISでインストールしたほうがよいでしょう。 また、MeCabをコマンドプロンプトから使えるよう、環境変数PATHを通します。 {{b_center {{img edit_path01.png,"style='width:35%;vertical-align:middle'"}} {{img edit_path02.png,"style='width:35%;vertical-align:middle'"}} {{img edit_path03.png,"style='width:35%;vertical-align:middle'"}} {{img edit_path04.png,"style='width:35%;vertical-align:middle'"}} }} エクスプローラーからMeCabをインストールしたフォルダー (''C:\Program Files\MeCab\bin'' など) を開き、パスをコピーします。次に、Windowsボタンをクリックし、「環境変数」と入力します。すると、"環境変数を編集" というメニューが表示されます ("システム環境変数の編集" ではありません)。これを選択し、"ユーザー環境変数" 下にある "Path" を選択、"編集" ボタンを押します。そして、"新規" を選択し、コピーしたパスを貼り付けます。あとは、"OK" を押せば、MeCabがコマンドラインから実行できるようになります。 !!Linux Linux向けには、ソースコードが提供されており、手元でコンパイルしてインストールするのが、オフィシャルな手順になります。しかし、コンパイルのために開発環境を用意するのが大変であったり、コマンド操作に習熟している必要があり、少しハードルが高く感じることもあります。 そこで、Ubuntuでは ''apt'' コマンドでコンパイル済みのパッケージがインストールできます。管理者権限がある環境で、以下のようにコマンドを実行します。 sudo apt install mecab MeCab本体と、IPA辞書というMeCab標準の辞書がインストールされます。インストール作業はこれだけです。Ubuntuは標準で文字コードがUTF-8なので、MeCabもUTF-8で動作します。 !!!MeCabの出力 MeCabをインストールしたら、出力を確認してみましょう。Windowsでは、以下のように、サンプルテキストを「メモ帳」などで入力し、'''in.txt''' として保存します。{{fn ファイル名は任意です。他の名前でも構いません。}} May J.がmacOSを搭載したMacBook ProをAir DOの機内に持ち込んだ。 ファイルを保存したら、ファイルがあるフォルダーでコマンドプロンプトを開き、以下のコマンドを入力してください。 mecab in.txt -o out.txt すると、同じフォルダーにout.txtが生成されます。「メモ帳」などで開くと、下記 (Linuxの例と同様) のような出力が得られます。 {{b_center {{ref_ex_image mecab_result_windows01.png,,size:50%}} }} Linuxでは、以下の文字列をコピーして、ターミナルに貼り付けてください。 echo "May J.がmacOSを搭載したMacBook ProをAir DOの機内に持ち込んだ。" | mecab いきなり変な (サンプルらしくない) テキストですが、後で辞書を追加した場合の変化を確認するために、IPA辞書における解析結果を確認しています。標準的な解析結果は以下のようになります。 May 名詞,固有名詞,組織,*,*,*,* J 名詞,一般,*,*,*,*,* . 名詞,サ変接続,*,*,*,*,* が 助詞,格助詞,一般,*,*,*,が,ガ,ガ macOS 名詞,一般,*,*,*,*,* を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 搭載 名詞,サ変接続,*,*,*,*,搭載,トウサイ,トーサイ し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ MacBook 名詞,一般,*,*,*,*,* Pro 名詞,一般,*,*,*,*,* を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ Air 名詞,固有名詞,組織,*,*,*,* DO 名詞,一般,*,*,*,*,* の 助詞,連体化,*,*,*,*,の,ノ,ノ 機内 名詞,一般,*,*,*,*,機内,キナイ,キナイ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 持ち込ん 動詞,自立,*,*,五段・マ行,連用タ接続,持ち込む,モチコン,モチコン だ 助動詞,*,*,*,特殊・タ,基本形,だ,ダ,ダ 。 記号,句点,*,*,*,*,。,。,。 EOS 解析自体はできていますが、"May J." や "MacBook Pro"、"Air DO" といった固有名詞を正しく切り分けられていません。このあたりは[後述する|https://mana.bi/wiki.cgi?page=RcppMeCab%A4%C8RMeCab%A4%CE%C8%E6%B3%D3#p6]として、まずは出力結果がどのような要素を含んでいるか紹介します。標準的なMeCabの出力は以下のようになっています。 表層形\t品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音 ''\t'' はタブです。辞書に情報が登録されていない部分は ''*'' で表示されます。テキストマイニングでは、一般に名詞や動詞、形容詞が分析の対象となり、助詞や副詞は除外することが多いです。その際に、MeCabが出力する品詞情報を使ってフィルタリングできます。 !!!NEologd辞書 上述のように、MeCab (IPA辞書) の標準では、一部の固有名詞などを正しく解析できません。これは、IPA辞書が2007年に作成されたもので、それ以降の新しい言葉を「知らない」ためです{{fn 正確には、その他にスペースを含む形態素の切り出しルールなども関係します。}}。Twitterなど、トレンドワードを多く含むテキストを解析するためには、新しい言葉をMeCabに教える必要があります。 [MeCabの辞書フォーマット|https://taku910.github.io/mecab/dic-detail.html]は公開されており、ユーザーが任意の単語を追加できます。しかし、膨大なトレンドワードを追いかけて手作業で追加することは不可能です。そこで、インターネット上の様々なテキストを収集し、自動的に最新の辞書を提供してくれる、[NEologd辞書|https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md]が広く使われています。NEologd辞書は週2回ほどのペースで、はてなキーワードやニュース記事などを使い、新語を追加して更新されています。 !!Windowsの場合 NEologd辞書はソースコードのみの公開で、Windowsでは、コンパイルするための環境を用意するのが大変です。そのため、ここではコンパイル済みの辞書を提供しますので、利用してください。以下のURLからファイルをダウンロードしてzipファイルを展開し、''C:\Program Files (x86)\MeCab\dic'' (32bit版) または ''C:\Program Files\MeCab\dic'' (64bit版) 下に配置してください。 * https://media.githubusercontent.com/media/ltl-manabi/R/master/RcppMeCab_example/mecab-ipadic-neologd.zip (2019年8月31日時点) !!Linuxの場合 NEologd辞書を利用するにはコンパイルする必要があります。Linuxでは、開発環境{{fn apt install build-essential などでインストールできます。}}があれば、以下のコマンドでコンパイル、インストールができます。 git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git cd mecab-ipadic-neologd sudo ./bin/install-mecab-ipadic-neologd -n 最後に、インストールするか聞かれるので、''yes'' を入力します。 辞書をインストールしたら、Windows、Linuxともに、設定ファイルにNEologd辞書を使用する設定を追加します。Windowsでは ''C:\Program Files (x86)\MeCab\etc'' (32bit版) または ''C:\Program Files\MeCab\etc'' (64bit版) 下に、Linuxでは ''/etc'' 下に、''mecabrc'' というファイルがあります。管理者権限があるユーザーで、''mecabrc'' ファイルを開き、以下のように編集します。 !!Windowsの場合 ; ; Configuration file of MeCab ; ; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $; ; ;dicdir = $(rcpath)\..\dic\ipadic # コメントアウトする dicdir = $(rcpath)\..\dic\mecab-ipadic-neologd ; userdic = /home/foo/bar/user.dic ; output-format-type = wakati ; input-buffer-size = 8192 ; node-format = %m\n ; bos-format = %S\n ; eos-format = EOS\n !!Linuxの場合 ; ; Configuration file of MeCab ; ; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $; ; ;dicdir = /var/lib/mecab/dic/debian # コメントアウトする dicdir = /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd ; userdic = /home/foo/bar/user.dic ; output-format-type = wakati ; input-buffer-size = 8192 ; node-format = %m\n ; bos-format = %S\n ; eos-format = EOS\n WindowsとLinuxの例にほとんど違いはありませんが、いずれもデフォルトの辞書へのパスをセミコロン ('';'') でコメントアウトし、NEologd辞書を配置した場所へのパスを追記します。これで、MeCabが標準で使用する辞書がNeolodg辞書になります。 辞書を変更したことによる効果を確認してみましょう。Windows、Linuxともに、先ほどと同様にファイル (Windows)、標準入力 (Linux) からサンプルテキストを入力し、形態素解析の結果を確認します。 !!Windowsの場合 mecab in.txt -o out.txt {{b_center {{ref_ex_image mecab_result_windows02.png,,size:50%}} }} NEologd辞書を使うことで、固有名詞が正しく解析できるようになりました。 !!Linuxの場合 echo "May J.がmacOSを搭載したMacBook ProをAir DOの機内に持ち込んだ。" | mecab May J. 名詞,固有名詞,人名,一般,*,*,May J.,メイジェイ,メイジェイ が 助詞,格助詞,一般,*,*,*,が,ガ,ガ macOS 名詞,固有名詞,一般,*,*,*,macOS,マックオーエス,マックオーエス を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 搭載 名詞,サ変接続,*,*,*,*,搭載,トウサイ,トーサイ し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ MacBook Pro 名詞,固有名詞,一般,*,*,*,MacBook Pro,マックブックプロ,マックブックプロ を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ Air DO 名詞,固有名詞,一般,*,*,*,Air DO,エアドゥ,エアドゥ の 助詞,連体化,*,*,*,*,の,ノ,ノ 機内 名詞,一般,*,*,*,*,機内,キナイ,キナイ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 持ち込ん 動詞,自立,*,*,五段・マ行,連用タ接続,持ち込む,モチコン,モチコン だ 助動詞,*,*,*,特殊・タ,基本形,だ,ダ,ダ 。 記号,句点,*,*,*,*,。,。,。 EOS Linuxでも同様に、固有名詞を正しく解析できるようになりました。NEologd辞書をこまめに更新{{fn 更新は、都度上述のインストール作業を行います。}}することで、トレンドを反映したテキストマイニングが可能です。 ---- !!!注 {{footnote_list}} 関連ページ: [[R言語を学ぶための参考書籍リスト]] カテゴリ: {{category R,データ分析,テキストマイニング,RcppMeCabとtidytextではじめるテキストマイニング}}