【Python】テキストを品詞別に解析する方法

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について書きました。
このライブラリを使って、応用すると様々な文章解析ができそうですね。
最後までお読みいただきありがとうございました。

返信を残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください