Pythonで形態素解析を行うには、いくつかの方法があります。ここでは形態素解析器MeCabのCythonラッパーであるfugashiと形態素解析器MeCab用の解析用辞書であるUniDicを用いて形態素解析を行う方法を簡単に説明します。
pipでインストールできるUniDicには2025年7月現在、次のような2つの辞書があります。
pipでインストールできるUniDicには2025年7月現在、次のような2つの辞書があります。
- unidic-lite: UniDic 2.1.2(2013年版)
- unidic: UniDic 3.1.0(2021年版)
動作確認だけであれば unidic-liteから始めることができますが、より本格的な処理にはunidicが推奨されます。
目次
インストール
fugashiとunidic-liteのインストール
次のコマンドによりインストールします。このコマンドにより辞書unidic-liteも同時にインストールされます。
pip install 'fugashi[unidic-lite]'
fugashiとunidicのインストール
次のコマンドによりインストールします。
pip install 'fugashi[unidic]'
python -m unidic download
以下、辞書unidicがインストールしたものとします。
UniDic 3.1.0に含まれるフィールド
UniDic 3.1.0に含まれるフィールドのリストは次になります。
番号 | 属性ラベル | 階層 | 属性の名称 | 説明 |
---|---|---|---|---|
0 | pos1 | 語形 | 品詞大分類 | 品詞大分類の名称 |
1 | pos2 | 語形 | 品詞中分類 | 品詞中分類の名称 |
2 | pos3 | 語形 | 品詞小分類 | 品詞小分類の名称 |
3 | pos4 | 語形 | 品詞細分類 | 品詞細分類の名称 |
4 | cType | 語形 | 活用型 | 活用の種類(型) |
5 | cForm | 語形 | 活用形 | 活用の形 |
6 | lForm | 語彙素 | 語彙素読み | 語彙素見出し(カタカナ表記) |
7 | lemma | 語彙素 | 語彙素表記 | 語彙素見出し(漢字仮名混じり表記) |
8 | orth | 書字形 | 書字形出現形 | 書字形基本形が活用変化を受けたもの |
9 | pron | 発音形 | 発音形出現形 | 発音形基本形が活用変化を受けたもの |
10 | orthBase | 書字形 | 書字形基本形 | 書字形見出し |
11 | pronBase | 発音形 | 発音形基本形 | 発音形見出し |
12 | goshu | 語彙素 | 語種 | 語種の名称 |
13 | iType | 語形 | 語頭変化型 | 語頭音変化の種類(型) |
14 | iForm | 語形 | 語頭変化形 | 語頭音変化の形 |
15 | fType | 語形 | 語末変化型 | 語末音変化の種類(型) |
16 | fForm | 語形 | 語末変化形 | 語末音変化の形 |
17 | iConType | 語形 | 語頭変化結合型 | 後続要素の語頭変化形への制約の種類(型) |
18 | fConType | 語形 | 語末変化結合型 | 前接要素の語末変化形への制約の種類(型) |
19 | type | 語彙素 | 語彙素類 | |
20 | kana | 書字形 | 仮名形出現形 | 書字形出現形をカタカナ表記にしたもの |
21 | kanaBase | 書字形 | 仮名形基本形 | 書字形基本形をカタカナ表記にしたもの |
22 | form | 語形 | 語形基本形 | 語形見出し |
23 | formBase | 語形 | 語形基本形 | 語形見出し(カタカナ表記) |
24 | aType | 発音形 | アクセント型 | アクセント核の位置 |
25 | aConType | 発音形 | アクセント結合型 | 前接(後続)要素との結合時のアクセント変化の種類(型) |
26 | aModType | 発音形 | アクセント修飾型 | 活用によるアクセント変化の種類(型) |
27 | lid | 語彙表 | 語彙表ID | UniDic DB中の各エントリ(短単位)を一意識別するためのID(主キー) |
28 | lemma_id | 語彙素 | 語彙素ID | UniDic DB中の各語彙素(語彙素-語彙素細分類、語彙素読み、語彙素類)を一意識別するためのID |
分かち書き
英語の文章のように、単語間を「 (スペース)」で分かち書きをするには次のようにします。
from fugashi import Tagger
tagger = Tagger('-Owakati')
text = '麩菓子は、麩を主原料とした日本の伝統的な駄菓子です。'
print(tagger.parse(text))
麩 菓子 は 、 麩 を 主 原料 と し た 日本 の 伝統 的 な 駄 菓子 です 。
形態素解析
形態素解析の結果を表示するには次のようにします。
from fugashi import Tagger
tagger = Tagger()
text = '麩菓子は、麩を主原料とした日本の伝統的な駄菓子です。'
print(tagger.parse(text))
麩 名詞,普通名詞,一般,,,,フ,麩,麩,フ,麩,フ,漢,"フ濁","基本形","","","","",体,フ,フ,フ,フ,"0","C3","",17839859662201344,64901
菓子 名詞,普通名詞,一般,,,,カシ,菓子,菓子,カシ,菓子,カシ,漢,"カ濁","基本形","","","","",体,カシ,カシ,カシ,カシ,"1","C1","",1758677472256512,6398
は 助詞,係助詞,,,,,ハ,は,は,ワ,は,ワ,和,"","","","","","",係助,ハ,ハ,ハ,ハ,"","動詞%F2@0,名詞%F1,形容詞%F2@-1","",8059703733133824,29321
、 補助記号,読点,,,,,,、,、,,、,,記号,"","","","","","",補助,,,,,"","","",6605693395456,24
麩 名詞,普通名詞,一般,,,,フスマ,麩,麩,フスマ,麩,フスマ,和,"","","","","","",体,フスマ,フスマ,フスマ,フスマ,"0,3","C2","",18052890040082944,65676
を 助詞,格助詞,,,,,ヲ,を,を,オ,を,オ,和,"","","","","","",格助,ヲ,ヲ,ヲ,ヲ,"","動詞%F2@0,名詞%F1,形容詞%F2@-1","",11381878116459008,41407
主 名詞,普通名詞,一般,,,,シュ,主,主,シュ,主,シュ,漢,"","","","","","",体,シュ,シュ,シュ,シュ,"1","C3","",4403827570778624,16021
原料 名詞,普通名詞,一般,,,,ゲンリョウ,原料,原料,ゲンリョー,原料,ゲンリョー,漢,"","","","","","",体,ゲンリョウ,ゲンリョウ,ゲンリョウ,ゲンリョウ,"3","C2","",3235046710452736,11769
と 助詞,格助詞,,,,,ト,と,と,ト,と,ト,和,"","","","","","",格助,ト,ト,ト,ト,"","名詞%F1,動詞%F1,形容詞%F2@-1","",7099014038299136,25826
し 動詞,非自立可能,,,サ行変格,連用形-一般,スル,為る,し,シ,する,スル,和,"","","","","","",用,シ,スル,シ,スル,"0","C5","",5370298291593857,19537
た 助動詞,,,,助動詞-タ,連体形-一般,タ,た,た,タ,た,タ,和,"","","","","","",助動,タ,タ,タ,タ,"","動詞%F2@1,形容詞%F4@-2","",5948916285711041,21642
日本 名詞,固有名詞,地名,国,,,ニッポン,日本,日本,ニッポン,日本,ニッポン,固,"","","","","","",国,ニッポン,ニッポン,ニッポン,ニッポン,"3","","",7821659499274752,28455
の 助詞,格助詞,,,,,ノ,の,の,ノ,の,ノ,和,"","","","","","",格助,ノ,ノ,ノ,ノ,"","名詞%F1","",7968444268028416,28989
伝統 名詞,普通名詞,一般,,,,デントウ,伝統,伝統,デントー,伝統,デントー,漢,"","","","","","",体,デントウ,デントウ,デントウ,デントウ,"0","C2","",7089659599528448,25792
的 接尾辞,形状詞的,,,,,テキ,的,的,テキ,的,テキ,漢,"","","","","","",接尾相,テキ,テキ,テキ,テキ,"","C4","",6892847018156544,25076
な 助動詞,,,,助動詞-ダ,連体形-一般,ダ,だ,な,ナ,だ,ダ,和,"","","","","","",助動,ナ,ダ,ナ,ダ,"","名詞%F1","",6299110739157697,22916
駄 接頭辞,,,,,,ダ,駄,駄,ダ,駄,ダ,漢,"","","","","","",接頭,ダ,ダ,ダ,ダ,"","P2","",6301034884506112,22923
菓子 名詞,普通名詞,一般,,,,カシ,菓子,菓子,カシ,菓子,カシ,漢,"カ濁","基本形","","","","",体,カシ,カシ,カシ,カシ,"1","C1","",1758677472256512,6398
です 助動詞,,,,助動詞-デス,終止形-一般,デス,です,です,デス,です,デス,和,"","","","","","",助動,デス,デス,デス,デス,"","形容詞%F2@-1,動詞%F2@0,名詞%F2@1","",7051468750332587,25653
。 補助記号,句点,,,,,,。,。,,。,,記号,"","","","","","",補助,,,,,"","","",6880571302400,25
EOS
実際に形態素解析を行うときには、いくつかのフィールドを取り出して使うことが多いと思います。例えば、surfaceとpos1、lemmaを取り出すには次のようにします。
from fugashi import Tagger
tagger = Tagger()
text = '麩菓子は、麩を主原料とした日本の伝統的な駄菓子です。'
for word in tagger(text):
print(f'{word.surface} {word.feature.pos1}, {word.feature.lemma}')
麩 名詞, 麩
菓子 名詞, 菓子
は 助詞, は
、 補助記号, 、
麩 名詞, 麩
を 助詞, を
主 名詞, 主
原料 名詞, 原料
と 助詞, と
し 動詞, 為る
た 助動詞, た
日本 名詞, 日本
の 助詞, の
伝統 名詞, 伝統
的 接尾辞, 的
な 助動詞, だ
駄 接頭辞, 駄
菓子 名詞, 菓子
です 助動詞, です
。 補助記号, 。
また、形態素解析の結果をpandas.DataFramneにするには次のようにすると簡単に行えます。
import pandas as pd
from fugashi import Tagger
tagger = Tagger()
text = '麩菓子は、麩を主原料とした日本の伝統的な駄菓子です。'
df = pd.DataFrame([word.feature._asdict() for word in tagger(text)])
print(df)
pos1 pos2 pos3 pos4 cType cForm lForm lemma orth pron orthBase pronBase goshu iType iForm fType fForm iConType fConType type kana kanaBase form formBase aType aConType aModType lid lemma_id
0 名詞 普通名詞 一般 * * * フ 麩 麩 フ 麩 フ 漢 フ濁 基本形 * * * * 体 フ フ フ フ 0 C3 * 17839859662201344 64901
1 名詞 普通名詞 一般 * * * カシ 菓子 菓子 カシ 菓子 カシ 漢 カ濁 基本形 * * * * 体 カシ カシ カシ カシ 1 C1 * 1758677472256512 6398
2 助詞 係助詞 * * * * ハ は は ワ は ワ 和 * * * * * * 係助 ハ ハ ハ ハ * 動詞%F2@0,名詞%F1,形容詞%F2@-1 * 8059703733133824 29321
3 補助記号 読点 * * * * * 、 、 * 、 * 記号 * * * * * * 補助 * * * * * * * 6605693395456 24
4 名詞 普通名詞 一般 * * * フスマ 麩 麩 フスマ 麩 フスマ 和 * * * * * * 体 フスマ フスマ フスマ フスマ 0,3 C2 * 18052890040082944 65676
5 助詞 格助詞 * * * * ヲ を を オ を オ 和 * * * * * * 格助 ヲ ヲ ヲ ヲ * 動詞%F2@0,名詞%F1,形容詞%F2@-1 * 11381878116459008 41407
6 名詞 普通名詞 一般 * * * シュ 主 主 シュ 主 シュ 漢 * * * * * * 体 シュ シュ シュ シュ 1 C3 * 4403827570778624 16021
7 名詞 普通名詞 一般 * * * ゲンリョウ 原料 原料 ゲンリョー 原料 ゲンリョー 漢 * * * * * * 体 ゲンリョウ ゲンリョウ ゲンリョウ ゲンリョウ 3 C2 * 3235046710452736 11769
8 助詞 格助詞 * * * * ト と と ト と ト 和 * * * * * * 格助 ト ト ト ト * 名詞%F1,動詞%F1,形容詞%F2@-1 * 7099014038299136 25826
9 動詞 非自立可能 * * サ行変格 連用形-一般 スル 為る し シ する スル 和 * * * * * * 用 シ スル シ スル 0 C5 * 5370298291593857 19537
10 助動詞 * * * 助動詞-タ 連体形-一般 タ た た タ た タ 和 * * * * * * 助動 タ タ タ タ * 動詞%F2@1,形容詞%F4@-2 * 5948916285711041 21642
11 名詞 固有名詞 地名 国 * * ニッポン 日本 日本 ニッポン 日本 ニッポン 固 * * * * * * 国 ニッポン ニッポン ニッポン ニッポン 3 * * 7821659499274752 28455
12 助詞 格助詞 * * * * ノ の の ノ の ノ 和 * * * * * * 格助 ノ ノ ノ ノ * 名詞%F1 * 7968444268028416 28989
13 名詞 普通名詞 一般 * * * デントウ 伝統 伝統 デントー 伝統 デントー 漢 * * * * * * 体 デントウ デントウ デントウ デントウ 0 C2 * 7089659599528448 25792
14 接尾辞 形状詞的 * * * * テキ 的 的 テキ 的 テキ 漢 * * * * * * 接尾相 テキ テキ テキ テキ * C4 * 6892847018156544 25076
15 助動詞 * * * 助動詞-ダ 連体形-一般 ダ だ な ナ だ ダ 和 * * * * * * 助動 ナ ダ ナ ダ * 名詞%F1 * 6299110739157697 22916
16 接頭辞 * * * * * ダ 駄 駄 ダ 駄 ダ 漢 * * * * * * 接頭 ダ ダ ダ ダ * P2 * 6301034884506112 22923
17 名詞 普通名詞 一般 * * * カシ 菓子 菓子 カシ 菓子 カシ 漢 カ濁 基本形 * * * * 体 カシ カシ カシ カシ 1 C1 * 1758677472256512 6398
18 助動詞 * * * 助動詞-デス 終止形-一般 デス です です デス です デス 和 * * * * * * 助動 デス デス デス デス * 形容詞%F2@-1,動詞%F2@0,名詞%F2@1 * 7051468750332587 25653
19 補助記号 句点 * * * * * 。 。 * 。 * 記号 * * * * * * 補助 * * * * * * * 6880571302400 25
surfaceも追加する必要がある場合は、次のようにします。
import pandas as pd
from fugashi import Tagger
tagger = Tagger()
text = '麩菓子は、麩を主原料とした日本の伝統的な駄菓子です。'
df = pd.DataFrame([{'surface': word.surface} | word.feature._asdict() for word in tagger(text)])
print(df)
surface pos1 pos2 pos3 pos4 cType cForm lForm lemma orth pron orthBase pronBase goshu iType iForm fType fForm iConType fConType type kana kanaBase form formBase aType aConType aModType lid lemma_id
0 麩 名詞 普通名詞 一般 * * * フ 麩 麩 フ 麩 フ 漢 フ濁 基本形 * * * * 体 フ フ フ フ 0 C3 * 17839859662201344 64901
1 菓子 名詞 普通名詞 一般 * * * カシ 菓子 菓子 カシ 菓子 カシ 漢 カ濁 基本形 * * * * 体 カシ カシ カシ カシ 1 C1 * 1758677472256512 6398
2 は 助詞 係助詞 * * * * ハ は は ワ は ワ 和 * * * * * * 係助 ハ ハ ハ ハ * 動詞%F2@0,名詞%F1,形容詞%F2@-1 * 8059703733133824 29321
3 、 補助記号 読点 * * * * * 、 、 * 、 * 記号 * * * * * * 補助 * * * * * * * 6605693395456 24
4 麩 名詞 普通名詞 一般 * * * フスマ 麩 麩 フスマ 麩 フスマ 和 * * * * * * 体 フスマ フスマ フスマ フスマ 0,3 C2 * 18052890040082944 65676
5 を 助詞 格助詞 * * * * ヲ を を オ を オ 和 * * * * * * 格助 ヲ ヲ ヲ ヲ * 動詞%F2@0,名詞%F1,形容詞%F2@-1 * 11381878116459008 41407
6 主 名詞 普通名詞 一般 * * * シュ 主 主 シュ 主 シュ 漢 * * * * * * 体 シュ シュ シュ シュ 1 C3 * 4403827570778624 16021
7 原料 名詞 普通名詞 一般 * * * ゲンリョウ 原料 原料 ゲンリョー 原料 ゲンリョー 漢 * * * * * * 体 ゲンリョウ ゲンリョウ ゲンリョウ ゲンリョウ 3 C2 * 3235046710452736 11769
8 と 助詞 格助詞 * * * * ト と と ト と ト 和 * * * * * * 格助 ト ト ト ト * 名詞%F1,動詞%F1,形容詞%F2@-1 * 7099014038299136 25826
9 し 動詞 非自立可能 * * サ行変格 連用形-一般 スル 為る し シ する スル 和 * * * * * * 用 シ スル シ スル 0 C5 * 5370298291593857 19537
10 た 助動詞 * * * 助動詞-タ 連体形-一般 タ た た タ た タ 和 * * * * * * 助動 タ タ タ タ * 動詞%F2@1,形容詞%F4@-2 * 5948916285711041 21642
11 日本 名詞 固有名詞 地名 国 * * ニッポン 日本 日本 ニッポン 日本 ニッポン 固 * * * * * * 国 ニッポン ニッポン ニッポン ニッポン 3 * * 7821659499274752 28455
12 の 助詞 格助詞 * * * * ノ の の ノ の ノ 和 * * * * * * 格助 ノ ノ ノ ノ * 名詞%F1 * 7968444268028416 28989
13 伝統 名詞 普通名詞 一般 * * * デントウ 伝統 伝統 デントー 伝統 デントー 漢 * * * * * * 体 デントウ デントウ デントウ デントウ 0 C2 * 7089659599528448 25792
14 的 接尾辞 形状詞的 * * * * テキ 的 的 テキ 的 テキ 漢 * * * * * * 接尾相 テキ テキ テキ テキ * C4 * 6892847018156544 25076
15 な 助動詞 * * * 助動詞-ダ 連体形-一般 ダ だ な ナ だ ダ 和 * * * * * * 助動 ナ ダ ナ ダ * 名詞%F1 * 6299110739157697 22916
16 駄 接頭辞 * * * * * ダ 駄 駄 ダ 駄 ダ 漢 * * * * * * 接頭 ダ ダ ダ ダ * P2 * 6301034884506112 22923
17 菓子 名詞 普通名詞 一般 * * * カシ 菓子 菓子 カシ 菓子 カシ 漢 カ濁 基本形 * * * * 体 カシ カシ カシ カシ 1 C1 * 1758677472256512 6398
18 です 助動詞 * * * 助動詞-デス 終止形-一般 デス です です デス です デス 和 * * * * * * 助動 デス デス デス デス * 形容詞%F2@-1,動詞%F2@0,名詞%F2@1 * 7051468750332587 25653
19 。 補助記号 句点 * * * * * 。 。 * 。 * 記号 * * * * * * 補助 * * * * * * * 6880571302400 25