Linux 用 Windows サブシステム2 (WSL2)のトップページ


Linux 用 Windows サブシステム2 (WSL2)

MeCab で形態素解析を行う

ここの手順で Ubuntu の設定をすると MeCab とその拡張辞書 (mecab-ipadic-NEologd) がインストールされています.このページでは MeCab で形態素解析を行なってみよう.

目次

  1. 形態素解析の実行
  2. 辞書の指定
  3. 分かち書き
  4. 茶筌形式での出力
  5. テキストファイルの準備
  6. テキストファイルの形態素解析

形態素解析の実行

MeCab で形態素解析を行うには ubuntu にログインして mecab コマンドを実行します.その後,形態素解析を実行したい文を入力し,Enter で実行します.終了するには Ctrl + C を押します.

rinsaka@XPS2019:~$ mecab ⏎
今日はメロンパンを食べました ⏎
今日    名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
メロン  名詞,一般,*,*,*,*,メロン,メロン,メロン
パン    名詞,一般,*,*,*,*,パン,パン,パン
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
食べ    動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
まし    助動詞,*,*,*,特殊・マス,連用形,ます,マシ,マシ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
EOS
自然言語処理の基本である形態素解析を勉強します ⏎
自然    名詞,形容動詞語幹,*,*,*,*,自然,シゼン,シゼン
言語    名詞,一般,*,*,*,*,言語,ゲンゴ,ゲンゴ
処理    名詞,サ変接続,*,*,*,*,処理,ショリ,ショリ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
基本    名詞,一般,*,*,*,*,基本,キホン,キホン
で      助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある    助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル
形態素  名詞,一般,*,*,*,*,形態素,ケイタイソ,ケイタイソ
解析    名詞,サ変接続,*,*,*,*,解析,カイセキ,カイセキ
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
勉強    名詞,サ変接続,*,*,*,*,勉強,ベンキョウ,ベンキョー
し      動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
ます    助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
EOS
^C  # 終了するには Ctrl + C を押す
rinsaka@XPS2019:~$

目次に戻る

辞書の指定

形態素解析に用いる辞書を指定するには -d オプションを利用します.次の例では標準辞書を指定しているので,上と全く同じ結果が得られるはずです.標準の辞書では「メロンパン」が「メロン」と「パン」という形態素に分割されていることがわかります.

rinsaka@XPS2019:~$ mecab -d /var/lib/mecab/dic/ipadic-utf8 ⏎
今日はメロンパンを食べました ⏎
今日	名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
メロン	名詞,一般,*,*,*,*,メロン,メロン,メロン
パン	名詞,一般,*,*,*,*,パン,パン,パン
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
食べ	動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
まし	助動詞,*,*,*,特殊・マス,連用形,ます,マシ,マシ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
EOS
自然言語処理の基本である形態素解析を勉強します ⏎
自然	名詞,形容動詞語幹,*,*,*,*,自然,シゼン,シゼン
言語	名詞,一般,*,*,*,*,言語,ゲンゴ,ゲンゴ
処理	名詞,サ変接続,*,*,*,*,処理,ショリ,ショリ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
基本	名詞,一般,*,*,*,*,基本,キホン,キホン
で	助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある	助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル
形態素	名詞,一般,*,*,*,*,形態素,ケイタイソ,ケイタイソ
解析	名詞,サ変接続,*,*,*,*,解析,カイセキ,カイセキ
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
勉強	名詞,サ変接続,*,*,*,*,勉強,ベンキョウ,ベンキョー
し	動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
ます	助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
EOS
^C  # 終了するには Ctrl + C を押す
rinsaka@XPS2019:~$

次に,MeCabの拡張辞書である mecab-ipadic-NEologd を指定して形態素解析を実行します.拡張辞書を利用すると「メロンパン」が認識できているだけでなく,「自然言語処理」や「形態素解析」なども一つの形態素として認識されていることがわかります.拡張辞書では芸能人の芸名のような固有名詞についても多くが登録されています.

rinsaka@XPS2019:~$ mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd ⏎
今日はメロンパンを食べました ⏎
今日	名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
メロンパン	名詞,固有名詞,一般,*,*,*,メロンパン,メロンパン,メロンパン
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
食べ	動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
まし	助動詞,*,*,*,特殊・マス,連用形,ます,マシ,マシ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
EOS
自然言語処理の基本である形態素解析を勉強します ⏎
自然言語処理	名詞,固有名詞,一般,*,*,*,自然言語処理,シゼンゲンゴショリ,シゼンゲンゴショリ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
基本	名詞,一般,*,*,*,*,基本,キホン,キホン
で	助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある	助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル
形態素解析	名詞,固有名詞,一般,*,*,*,形態素解析,ケイタイソカイセキ,ケイタイソカイセキ
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
勉強	名詞,サ変接続,*,*,*,*,勉強,ベンキョウ,ベンキョー
し	動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
ます	助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
EOS
^C  # 終了するには Ctrl + C を押す
rinsaka@XPS2019:~$

なお,拡張辞書のインストール先は環境によって異なる可能性があることにも注意してください.

目次に戻る

分かち書き

分かち書きを行うには -Owakachi オプションを指定します.

rinsaka@XPS2019:~$ mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd -Owakati
今日はメロンパンを食べました ⏎
今日 は メロンパン を 食べ まし た
自然言語処理の基本である形態素解析を勉強します ⏎
自然言語処理 の 基本 で ある 形態素解析 を 勉強 し ます
^C  # 終了するには Ctrl + C を押す
rinsaka@XPS2019:~$

目次に戻る

茶筌形式での出力

MeCab の標準形式とは異なる茶筌形式で出力するには -Ochasen オプションを指定します.

rinsaka@XPS2019:~$ mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd -Ochasen
今日はメロンパンを食べました ⏎
今日	キョウ	今日	名詞-副詞可能
は	ハ	は	助詞-係助詞
メロンパン	メロンパン	メロンパン	名詞-固有名詞-一般
を	ヲ	を	助詞-格助詞-一般
食べ	タベ	食べる	動詞-自立	一段	連用形
まし	マシ	ます	助動詞	特殊・マス	連用形
た	タ	た	助動詞	特殊・タ	基本形
EOS
自然言語処理の基本である形態素解析を勉強します ⏎
自然言語処理	シゼンゲンゴショリ	自然言語処理	名詞-固有名詞-一般
の	ノ	の	助詞-連体化
基本	キホン	基本	名詞-一般
で	デ	だ	助動詞	特殊・ダ	連用形
ある	アル	ある	助動詞	五段・ラ行アル	基本形
形態素解析	ケイタイソカイセキ	形態素解析	名詞-固有名詞-一般
を	ヲ	を	助詞-格助詞-一般
勉強	ベンキョウ	勉強	名詞-サ変接続
し	シ	する	動詞-自立	サ変・スル	連用形
ます	マス	ます	助動詞	特殊・マス	基本形
EOS
^C  # 終了するには Ctrl + C を押す
rinsaka@XPS2019:~$

目次に戻る

テキストファイルの準備

テキストファイルの形態素解析を行うこともできます.なおテキストファイルの文字コードは UTF-8 として作業します.既に解析したいテキストファイルがあれば,Documents フォルダなど任意の場所に設置して次のステップに進んでください.ここでは GitHub のサンプルデータセットをダウンロードして展開します.

まず,GitHub からクローンを作成(ダウンロード)します.

rinsaka@XPS2019:~$ cd Documents/ ⏎
rinsaka@XPS2019:~/Documents$ git clone https://github.com/rinsaka/sample-data-sets.git ⏎
Cloning into 'sample-data-sets'...
remote: Enumerating objects: 312, done.
remote: Counting objects: 100% (107/107), done.
remote: Compressing objects: 100% (70/70), done.
remote: Total 312 (delta 52), reused 86 (delta 35), pack-reused 205
Receiving objects: 100% (312/312), 15.36 MiB | 4.64 MiB/s, done.
Resolving deltas: 100% (144/144), done.
rinsaka@XPS2019:~/Documents$

ダウンロードされたデータセットを確認します.サンプル文書データは corpora.zip です.この圧縮ファイルを unzip コマンドで展開します.

rinsaka@XPS2019:~/Documents$ cd sample-data-sets/ ⏎
rinsaka@XPS2019:~/Documents/sample-data-sets$ ls ⏎
(中略)
corpora.zip                            names.json
(中略)
rinsaka@XPS2019:~/Documents/sample-data-sets$ unzip corpora.zip ⏎
Archive:  corpora.zip
  inflating: corpora/en_abs_1.txt
  inflating: corpora/en_abs_2.txt
  inflating: corpora/en_abs_3.txt
  inflating: corpora/en_abs_4.txt
  inflating: corpora/ja_abs_1.txt
  inflating: corpora/ja_abs_2.txt
  inflating: corpora/ja_abs_3.txt
  inflating: corpora/ja_abs_4.txt
  inflating: corpora/ja_abs_5.txt
  inflating: corpora/sample_1.txt
  inflating: corpora/sample_2.txt
  inflating: corpora/sample_3.txt
 extracting: corpora/sample_4.txt
  inflating: corpora/sample_5.txt
rinsaka@XPS2019:~/Documents/sample-data-sets$ ls ⏎
(中略)
corpora                                names.json
corpora.zip                            novels.json
(中略)
rinsaka@XPS2019:~/Documents/sample-data-sets$ cd corpora/ ⏎
rinsaka@XPS2019:~/Documents/sample-data-sets/corpora$

展開されたテキストファイルを確認します.例えば ja_abs_1.txt ファイルの中身を確認します.

rinsaka@XPS2019:~/Documents/sample-data-sets/corpora$ ls ⏎
en_abs_1.txt  en_abs_4.txt  ja_abs_3.txt  sample_1.txt  sample_4.txt
en_abs_2.txt  ja_abs_1.txt  ja_abs_4.txt  sample_2.txt  sample_5.txt
en_abs_3.txt  ja_abs_2.txt  ja_abs_5.txt  sample_3.txt
rinsaka@XPS2019:~/Documents/sample-data-sets/corpora$ cat ja_abs_1.txt ⏎
研究者が自身で収集した学術論文の文献 PDF ファイルを効率的に管理し,研究活動に
有効活用することを目的として,文献 PDF データベースシステムを開発した.利用者は
PDF ファイルを Web ブラウザからサーバにアップロードすることで,PDF ファイルを
一元的に管理できるようになるとともに,全文検索,ジャーナル検索,著者検索,タグ
(キーワード)検索が利用できるようになる.また,論文情報の登録などに BIBTEX 情報を
活用することも本システムの特徴のひとつである.本論文では文献 PDF データベースシ
ステムの詳細について議論するとともに,性能評価実験の結果を考察する.
rinsaka@XPS2019:~/Documents/sample-data-sets/corpora$

目次に戻る

テキストファイルの形態素解析

テキストファイルの形態素解析を行うには,ファイル名を引数に与えます.

rinsaka@XPS2019:~/Documents/sample-data-sets/corpora$ mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd -Owakati ja_abs_1.txt
研究者 が 自身 で 収集 し た 学術 論文 の 文献 PDF ファイル を 効率的 に 管理 し , 研究 活動 に
有効活用 する こと を 目的 として , 文献 PDF データベースシステム を 開発 し た . 利用者 は
PDF ファイル を Web ブラウザ から サーバ に アップロード する こと で , PDF ファイル を
一元的 に 管理 できる よう に なる とともに , 全文検索 , ジャーナル 検索 , 著者 検索 , タグ
( キーワード ) 検索 が 利用 できる よう に なる . また , 論文 情報 の 登録 など に BIBTEX 情報 を
活用 する こと も 本 システム の 特徴 の ひとつ で ある . 本 論文 で は 文献 PDF データベース シ
ステム の 詳細 について 議論 する とともに , 性能 評価 実験 の 結果 を 考察 する .
rinsaka@XPS2019:~/Documents/sample-data-sets/corpora$

解析結果をファイルに書き出すには > 出力ファイル名 によるリダイレクトを使うと良いでしょう.例えば解析結果を result.txt に書き出します.

rinsaka@XPS2019:~/Documents/sample-data-sets/corpora$ mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd -Owakati ja_abs_1.txt > result.txt
rinsaka@XPS2019:~/Documents/sample-data-sets/corpora$ ls ⏎
en_abs_1.txt  en_abs_4.txt  ja_abs_3.txt  result.txt    sample_3.txt
en_abs_2.txt  ja_abs_1.txt  ja_abs_4.txt  sample_1.txt  sample_4.txt
en_abs_3.txt  ja_abs_2.txt  ja_abs_5.txt  sample_2.txt  sample_5.txt
rinsaka@XPS2019:~/Documents/sample-data-sets/corpora$ cat result.txt ⏎
研究者 が 自身 で 収集 し た 学術 論文 の 文献 PDF ファイル を 効率的 に 管理 し , 研究 活動 に
有効活用 する こと を 目的 として , 文献 PDF データベースシステム を 開発 し た . 利用者 は
PDF ファイル を Web ブラウザ から サーバ に アップロード する こと で , PDF ファイル を
一元的 に 管理 できる よう に なる とともに , 全文検索 , ジャーナル 検索 , 著者 検索 , タグ
( キーワード ) 検索 が 利用 できる よう に なる . また , 論文 情報 の 登録 など に BIBTEX 情報 を
活用 する こと も 本 システム の 特徴 の ひとつ で ある . 本 論文 で は 文献 PDF データベース シ
ステム の 詳細 について 議論 する とともに , 性能 評価 実験 の 結果 を 考察 する .
rinsaka@XPS2019:~/Documents/sample-data-sets/corpora$

目次に戻る