Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonのspaCyで品詞タグ付けと見出し語化(レマタイゼーション)を行う方法


spaCyは、最も優れたテキスト解析ライブラリの一つです。大規模な情報抽出タスクに強く、処理速度は世界トップクラスを誇ります。さらに、ディープラーニング用にテキストを前処理する際にも最適な選択肢となります。spaCyは、NLTKのTaggerやTextBlobと比較して、はるかに高速かつ高精度である点が大きな魅力です。

インストール方法

まずはpipコマンドでspaCyをインストールし、続いて英語の小型モデル「en_core_web_sm」をダウンロードします。

pip install spacy
python -m spacy download en_core_web_sm

実行例

以下のコードでは、spaCyを使った品詞タグ付け(POSタグ付け)と見出し語化(レマタイゼーション)の基本的な使い方を示します。

品詞タグ付け(POS Tagging)

# ライブラリを読み込む
import spacy

# 英語の小型モデルをロード
# ※初回のみ「python -m spacy download en_core_web_sm」が必要
nlp = spacy.load("en_core_web_sm")

# ドキュメント全体を処理する
text = ("""My name is Vishesh. I love to work on data science problems. Please check out my github profile!""")
doc = nlp(text)

# 各トークンとその品詞タグを出力
for token in doc:
    print(token, token.pos_)

# 動詞(VERB)のトークンだけをリストとして抽出したい場合
print("Verbs:", [token.text for token in doc if token.pos_ == "VERB"])

見出し語化(Lemmatization)

見出し語化とは、活用形を持つ単語をグループ化し、辞書に掲載されている原形(見出し語・レンマ)として一つの項目にまとめて分析できるようにする処理のことです。たとえば「loves」「loved」「loving」はすべて「love」という見出し語に統一されます。

import spacy

# 英語のトークナイザー、タガー、構文解析器、
# 固有表現認識(NER)、単語ベクトルをロード
nlp = spacy.load("en_core_web_sm")

# ドキュメント全体を処理する
text = ("""My name is Vishesh. I love to work on data science problems. Please check out my github profile!""")
doc = nlp(text)

# 各トークンとその見出し語を出力
for token in doc:
    print(token, token.lemma_)

このようにspaCyを使えば、わずか数行のコードで高精度な品詞タグ付けと見出し語化を実現できます。自然言語処理の前処理パイプラインを構築する際には、ぜひ活用してみてください。


  1. PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法

    はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c

  2. MacでPython 3にアップグレードして使いこなす方法

    購入したばかりの新しいMacには、必要なソフトウェアの最新版がすべて入っていると思いがちですが、ユーザー向けアプリについては概ね正しくても、基盤となるフレームワークに関しては話が別です。安定版の最新リリースがPython 3.5であるにもかかわらず、新しいMacには今なおPython 2.7.10がプリインストールされています。バージョン間の差が大きく感じられるのはそのためです。ただし、新しいバージョンが必ずしも優れているとは限りません。Python 3はPython 2との後方互換性を持たず、多くの開発者は依然としてPython 2を使い続けているのです。 2to3を使うか、使わないか?