Pythonには、自然言語処理において複数の選択肢が存在しています。
その中でも、新興勢力とでも言うべきモノにStanzaがあります。
この記事では、そのStanzaについて説明していきます。
本記事の内容
- Stanzaとは?
- Stanzaのシステム要件
- Stanzaのインストール
- Stanzaの動作確認
それでは、上記に沿って解説していきます。
Stanzaとは?
Stanza公式
https://stanfordnlp.github.io/stanza/
Stanzaは、自然言語処理を行うためのPythonライブラリです。
70以上の言語に対応しています。
もちろん、その中に日本語も入っています。
そして、特徴的なのはニューラルネットワークで訓練と評価が可能なことです。
その際には、PyTorchが利用されています。
つまり、Stanzaは機械学習をベースに機能するということです。
また、StanzaはもともとStanfordNLPという名前で開発されていました。
名前からもわかるように、スタンフォード大学が中心となっての開発でした。
Stanzaにプロジェクトが移行した後でも、スタンフォード大学主導には変わりないようです。
以上、Stanzaについての説明でした。
次は、Stanzaのシステム要件を確認します。
Stanzaのシステム要件
現時点(2021年7月末)でのStanzaの最新バージョンは、1.2.2となります。
この最新バージョンは、2021年7月13日にリリースされています。
Stanzaのシステム要件は、次の3つの点で確認が注意が必要です。
- OS
- Python
- PyTorch
それぞれを下記で説明します。
OS
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
Pythonが動けば、基本的には何でもOKということでしょう。
Python
サポート対象となるのは、以下のバージョンです。
- Python 3.6
- Python 3.7
- Python 3.8
ただし、Python 3.9も問題ありません。
setup.pyには、以下の記述があります。
# List required Python versions python_requires='>=3.6',
Python 3.6以降であれば、インストール可能です。
実際、Python 3.8がOKで、Python 3.9がNGなんて存在しないでしょう。
なお、私は以下のPythonで検証しています。
>python -V Python 3.9.6
PyTorch
Stanzanのシステム要件では、PyTorchが最もポイントになります。
PyTorchがインストール済みであることが前提です。
PyTorchのインストールに関しては、次の記事で解説しています。
記事通りにやれば、簡単にPyTorchをインストールできます。
GPUに対応したマシンであれば、GPU版PyTorchのインストールをおススメします。
それをインストールしておけば、Stanzanもその分だけ高速に処理が可能となります。
また、StanzanではPyTorch 1.3.0以降が必須です。
現時点(2021年7月末)の最新版PyTorchのバージョンは、1.9.0となります。
まとめ
Stanzaには、PyTorchがインストール済みであることが必要です。
そして、Pythonはなるべく新しいモノを使いましょう。
最低でもPython 3.6以降です。
Pythonのアップグレードを行う場合は、次の記事が参考になります。
以上、Stanzaのシステム要件を説明しました。
次は、Stanzaをインストールしていきます。
Stanzaのインストール
まずは、現状のインストール済みパッケージを確認しておきます。
もちろん、PyTorchはインストール済みです。
>pip list Package Version ----------------- ------------ numpy 1.21.1 Pillow 8.3.1 pip 21.1.3 setuptools 57.4.0 torch 1.9.0+cu111 torchaudio 0.9.0 torchvision 0.10.0+cu111 typing-extensions 3.10.0.0
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、Stanzaのインストールです。
Stanzaのインストールは、以下のコマンドとなります。
pip install stanza
インストールは、意外と早く終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ------------------ ------------ certifi 2021.5.30 charset-normalizer 2.0.3 colorama 0.4.4 idna 3.2 numpy 1.21.1 Pillow 8.3.1 pip 21.1.3 protobuf 3.17.3 requests 2.26.0 setuptools 57.4.0 six 1.16.0 stanza 1.2.2 torch 1.9.0+cu111 torchaudio 0.9.0 torchvision 0.10.0+cu111 tqdm 4.61.2 typing-extensions 3.10.0.0 urllib3 1.26.6
PyTorchと被るモノもありますが、そこそこ多くのパッケージがインストールされました。
このこともからも、仮想環境にStanzaをインストールした方がよいでしょうね。
Pythonで仮想環境を利用するのは簡単です。
次の記事では、仮想環境の利用方法を解説しています。
以上、Stanzaのインストールについての説明でした。
最後に、Stanzaの動作確認を行います。
Stanzaの動作確認
簡単な機能でStanzaの動作確認を行います。
公式にあるサンプルを日本語用に変更しています。
import stanza stanza.download('ja') # ニューラル・パイプライン用の日本語モデルをダウンロードします nlp = stanza.Pipeline('ja') # 日本語でのデフォルトのニューラル・パイプラインが設定されます doc = nlp("バラク・オバマはハワイで生まれた。 2008年に大統領に就任。") doc.sentences[0].print_dependencies() # 係り受け解析
上記を実行すれば、以下のような結果が表示されます。
======================= | Processor | Package | ----------------------- | tokenize | gsd | | pos | gsd | | lemma | gsd | | depparse | gsd | ======================= 2021-07-22 09:21:28 INFO: Use device: gpu 2021-07-22 09:21:28 INFO: Loading: tokenize 2021-07-22 09:21:29 INFO: Loading: pos 2021-07-22 09:21:29 INFO: Loading: lemma 2021-07-22 09:21:29 INFO: Loading: depparse 2021-07-22 09:21:29 INFO: Done loading processors! ('バラク', 3, 'compound') ('・', 3, 'compound') ('オバマ', 7, 'nsubj') ('は', 3, 'case') ('ハワイ', 7, 'obl') ('で', 5, 'case') ('生まれ', 0, 'root') ('た', 7, 'aux') ('。', 7, 'punct')
上記コードを最初に実行した場合、結構時間がかかります。
それは、日本語モデル(約410MB)をダウンロードしているからです。
一度ダウンロードしたら、それ以降はダウンロード済みのモデルを利用します。
ここまで確認できれば、Stanzaの動作確認としては十分でしょう。
以上、Stanzaの動作確認を説明しました。