PythonのライブラリMeCabを使用すると、テキストの単語を品詞別に解析することができます。
環境は、Macです。
IDLEでソースコードを書き、ターミナルでプログラムを実行しました。
MeCabをインストールする方法
まずは、下準備としてPython3でMeCabを使用できるように、必要なライブラリをインストールします。
user@computer$ brew install mecab
user@computer$ brew install mecab-ipadic
user@computer$ brew install swig
user@computer$ pip install mecab-python3
MeCabで品詞を解析する方法
早口言葉の「隣の竹垣に、、、」をMeCabで解析してみました。
コードは次の通りです。
import MeCab tagger = MeCab.Tagger() text = "隣の竹垣に竹立てかけたのは、竹立てたかったから竹立てかけた" words = tagger.parse(text) print(words)
結果は次のようにターミナルに表示されました。
隣 名詞,一般,*,*,*,*,隣,トナリ,トナリ の 助詞,連体化,*,*,*,*,の,ノ,ノ 竹垣 名詞,固有名詞,地域,一般,*,*,竹垣,タケガキ,タケガキ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 竹 名詞,一般,*,*,*,*,竹,タケ,タケ 立てかけ 動詞,自立,*,*,一段,連用形,立てかける,タテカケ,タテカケ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ の 名詞,非自立,一般,*,*,*,の,ノ,ノ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 、 記号,読点,*,*,*,*,、,、,、 竹 名詞,一般,*,*,*,*,竹,タケ,タケ 立て 動詞,自立,*,*,一段,連用形,立てる,タテ,タテ たかっ 助動詞,*,*,*,特殊・タイ,連用タ接続,たい,タカッ,タカッ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ から 助詞,接続助詞,*,*,*,*,から,カラ,カラ 竹 名詞,一般,*,*,*,*,竹,タケ,タケ 立てかけ 動詞,自立,*,*,一段,連用形,立てかける,タテカケ,タテカケ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ EOS
Pandasでファイルを読み込み、リスト型にする方法
PythonのライブラリPandasを使って、csvファイルを読み込み、リスト型にします。
Pandasをインストールしていない方は、次のコマンドをターミナルで打ってインストールしましょう。
user@computer$ pip3 install pandas
pd.read_csv(“taketori.txt”,sep=’\t’).values.tolist() と記述することで、読み込んだファイルのデータをリスト型に格納してくれます。
ファイルのテキストデータを品詞解析する方法
ファイルの中には、次の文章が書かれています。
テキストファイルですが、pd.read_csv( ) で読み込むことが可能です。
ちなみにこのファイルは、SublimeTextと言うエディターで作成しました。
竹取物語(910年以前成立) 作者・未詳 今は昔、竹取の翁といふものありけり。野山にまじりて竹を取りつつ、万の事に使ひけり。名をばさぬきのみやつことなん言ひける。
リストのテキストデータを tagger.parse( )で品詞分けします。
解析した文字列をリストwordに append で追加していきます。
import pandas as pd import MeCab tagger = MeCab.Tagger() word_check = pd.read_csv("taketori.txt",sep='\t').values.tolist() word=[] for w in word_check: w = str(w) word.append(tagger.parse(w)) for i in word: print(i + "\n")
実行すると次のように結果が表示されます。
['\ 名詞,サ変接続,*,*,*,*,* u 名詞,一般,*,*,*,*,* 3000 名詞,数,*,*,*,*,* 今 名詞,副詞可能,*,*,*,*,今,イマ,イマ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 昔 名詞,副詞可能,*,*,*,*,昔,ムカシ,ムカシ 、 記号,読点,*,*,*,*,、,、,、 竹 名詞,一般,*,*,*,*,竹,タケ,タケ 取 動詞,自立,*,*,五段・ラ行,体言接続特殊2,取る,ト,ト の 助詞,連体化,*,*,*,*,の,ノ,ノ 翁 名詞,固有名詞,人名,姓,*,*,翁,オウ,オウ といふ 助詞,格助詞,連語,*,*,*,といふ,トイフ,トユウ もの 名詞,非自立,一般,*,*,*,もの,モノ,モノ あり 助動詞,*,*,*,五段・ラ行アル,連用形,ある,アリ,アリ けり 助動詞,*,*,*,文語・ケリ,基本形,けり,ケリ,ケリ 。 記号,句点,*,*,*,*,。,。,。 野山 名詞,一般,*,*,*,*,野山,ノヤマ,ノヤマ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ まじり 動詞,自立,*,*,五段・ラ行,連用形,まじる,マジリ,マジリ て 助詞,接続助詞,*,*,*,*,て,テ,テ 竹 名詞,一般,*,*,*,*,竹,タケ,タケ を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 取り 動詞,自立,*,*,五段・ラ行,連用形,取る,トリ,トリ つつ 助詞,接続助詞,*,*,*,*,つつ,ツツ,ツツ 、 記号,読点,*,*,*,*,、,、,、 万 名詞,数,*,*,*,*,万,マン,マン の 助詞,連体化,*,*,*,*,の,ノ,ノ 事 名詞,非自立,一般,*,*,*,事,コト,コト に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 使 名詞,接尾,一般,*,*,*,使,シ,シ ひ 動詞,自立,*,*,一段,連用形,ひる,ヒ,ヒ けり 助動詞,*,*,*,文語・ケリ,基本形,けり,ケリ,ケリ 。 記号,句点,*,*,*,*,。,。,。 名 名詞,一般,*,*,*,*,名,ナ,ナ を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ ば 助詞,接続助詞,*,*,*,*,ば,バ,バ さ 助詞,終助詞,*,*,*,*,さ,サ,サ ぬき 名詞,一般,*,*,*,*,ぬき,ヌキ,ヌキ のみ 助詞,副助詞,*,*,*,*,のみ,ノミ,ノミ やつ 名詞,代名詞,一般,*,*,*,やつ,ヤツ,ヤツ ことなん 動詞,自立,*,*,五段・ラ行,体言接続特殊,ことなる,コトナン,コトナン 言 名詞,一般,*,*,*,*,言,ゲン,ゲン ひける 動詞,自立,*,*,一段,基本形,ひける,ヒケル,ヒケル 。 記号,句点,*,*,*,*,。,。,。 '] 名詞,サ変接続,*,*,*,*,* EOS
まとめ
今回は文章を品詞別に解析できるMeCabについて書きました。
このライブラリを使って、応用すると様々な文章解析ができそうですね。
最後までお読みいただきありがとうございました。