Pythonで形態素解析する方法

Python

本記事ではPythonで形態素解析する方法を解説します。

形態素解析とは?

形態素解析というのは以下の通りです。

形態素解析とは、自然言語で書かれた文を言語上の最小単位である形態素に分割し、それぞれの品詞や変化などを割り出すこと。

https://e-words.jp/w/%E5%BD%A2%E6%85%8B%E7%B4%A0%E8%A7%A3%E6%9E%90.html

例えば、「Pythonを学ぶ」という文は「Python(名詞)」「を(助詞)」「学ぶ(動詞)」に分割することを形態素解析と言います。

形態素解析ライブラリの準備

形態素解析にはライブラリのインストールする必要があります。形態素解析ライブラリは数多くあります。例えば、

MeCab
MeCabは京都大学情報学研究科が開発した形態素解析エンジンです。

MeCabは 京都大学情報学研究科−日本電信電話株式会社コミュニケーション科学基礎研究所 共同研究ユニットプロジェクトを通じて開発されたオープンソース 形態素解析エンジンです。

https://taku910.github.io/mecab/

Sudachi
株式会社ワークスアプリケーションズが開発した形態素解析エンジンです。

Sponsor this project WorksApplications Works Applications

https://github.com/WorksApplications/Sudachi

janome
janomeは依存ライブラリなしで簡単にインストールできることを売りにしている形態素解析エンジンです。

依存ライブラリなしで簡単にインストールでき,アプリケーションに組み込みやすいシンプルな API を備える形態素解析ライブラリを目指しています。

https://mocobeta.github.io/janome/#janome

形態素解析の実施

今回は上記の中でMeCabを使って形態素解析を実行する例を紹介します。
まずは下記コマンドでMeCabをインストールします。

pip install mecab-python3 unidic-lite

上記でmecab-python3はPythonをMeCabを使うためのライブラリです。
unidic-liteは形態素解析するための辞書です。一緒にインストールする必要があります。

import MeCab
tagger = MeCab.Tagger()
node = tagger.parseToNode("Pythonは1991年にグイド・ヴァン・ロッサムにより開発されたプログラミング言語である。")

while node:
    print(node.surface, node.feature)
    node = node.next

また、名詞だけを取り出したい場合は下記のコードで可能です。

import MeCab
tagger = MeCab.Tagger()
node = tagger.parseToNode("Pythonは1991年にグイド・ヴァン・ロッサムにより開発されたプログラミング言語である。")

while node:
    if node.feature.split(",")[0] == '名詞':
      print(node.surface)
    node = node.next
楽天ブックス
¥3,520 (2023/10/02 21:05時点 | 楽天市場調べ)
\楽天ポイント4倍セール!/
楽天市場
タイトルとURLをコピーしました