GiNZAのバージョンが、5になりました。
GiNZA v5になって、解析モデルの精度が向上したようです。
その採用した技術から、GiNZA(Transformersモデル)と言えそうです。
本記事の内容
- GiNZA(Transformersモデル)とは?
- GiNZA(Transformersモデル)のシステム要件
- GiNZA(Transformersモデル)のインストール
- GiNZA(Transformersモデル)の動作確認
それでは、上記に沿って解説していきます。
GiNZA(Transformersモデル)とは?
GiNZAについては、次の記事で解説しています。
GiNZA自体は、主に次の技術で成り立っています。
- spaCy
- SudachiPy(Python版Sudachi)
それぞれは、以下の役割を持ちます。
spaCy | 機械学習 |
SudachiPy | 形態素解析 |
spaCyは、テキストのトークン化が可能です。
その際に利用するモデルが、必要となります。
そのモデルを作る場合に、SudachiPyを利用しています。
日本語を形態素解析でバラバラにしないといけませんからね。
バラバラにした日本語をもとに、spaCyがモデル学習に利用します。
これが、GiNZA v4までの流れでした。
この流れの中に、Transformers事前学習モデルが導入されました。
具体的には、spaCyの処理パイプラインの最前段に導入されています。
ただし、spaCyがモデルを作成することに変わりはありません。
なお、TransformersモデルにはELECTRAが採用されています。
ELECTRAは、BERTよりも精度の高いモデルを構築できます。
この辺は、「最新の方法を取り入れていますよ」ぐらいの理解でよいでしょう。
以上、Transformersモデルを採用したGiNZAについて説明しました。
次は、GiNZA(Transformersモデル)のシステム要件を確認します。
GiNZA(Transformersモデル)のシステム要件
現時点(2021年8月末)でのGiNZAの最新バージョンは、5.0.1となります。
この最新バージョンは、2021年8月26日にリリースされています。
GiNZA(Transformersモデル)のシステム要件として、以下のポイントを取り上げます
- OS
- Python
- PyTorch
それぞれを下記で説明します。
OS
サポートOSに関しては、以下を含むクロスプラットフォーム対応のはず。
GiNZA v4も同じようにOSについては、特に記載がありません。
- Windows
- macOS
- Linux
実際には、WindowsとLinux(Ubuntu)で動作確認済です。
Linuxで動けば、macOSも問題ないはずでしょう。
Python
サポート対象となるPythonのバージョンは、3.6以降となります。
そうは言っても、もうPython 3.6の利用はそろそろ考えるべきでしょうね。
以下は、Pythonの公式開発サイクルとなります。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月 |
3.7 | 2018年6月27日 | 2023年6月 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
これを機に、Pythonのアップグレードを考えてみるのもよいでしょう。
Pythonのアップグレードは、以下の記事で説明しています。
PyTorch
Transformersモデルは、GiNZA v5から利用可能です。
そして、ja-ginza-electraはTransformersモデルをもとに作成した解析モデルとなります。
また、ja-ginza-electraのインストールにはPyTorchが必要です。
ja-ginza-electraをpipでインストールすると、自動的にPyTorchもインストールされます。
そのため、本来であればわざわざ取り上げる必要はありません。
しかし、自動でインストールされるのがCPU版のPyTorchなのです。
現時点(2021年8月末)であれば、次のパッケージがインストールされることになります。
torch 1.9.0
CPU版のPyTorchが気に入らない場合は、事前にGPU版PyTorchのインストールがしておきます。
PyTorchのインストールは、次の記事で解説しています。
まとめ
Transformersモデルを採用したGiNZAを利用するには、PyTorchが必要です。
利用する必要がないなら、PyTorchは不要となります。
ただし、それだとGiNZA v4とはそれほど変わりません。
spaCy 3系が利用できるなどのメリットは、あるでしょうけどね。
以上、GiNZA v5のシステム要件の説明でした。
次は、GiNZA(Transformersモデル)のインストールを行います。
GiNZA(Transformersモデル)のインストール
Transformersモデル採用のGiNZAを前提にインストールを行います。
正確に言うと、解析モデルにja-ginza-electraをインストールします。
インストールを始める前に、現状のインストール済みパッケージを確認しておきます。
GPU版のPyTorchをインストールしただけの状況です。
>pip list Package Version ----------------- ------------ numpy 1.21.1 Pillow 8.3.1 pip 21.2.4 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
では、GiNZAのインストールです。
GiNZAのインストールは、以下のコマンドとなります。
pip install ginza
そして、解析モデルは次のコマンドでインストールします。
pip install ja-ginza-electra
インストールには、少しだけ時間がかかります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ------------------ ------------ blis 0.7.4 catalogue 2.0.6 certifi 2021.5.30 charset-normalizer 2.0.4 click 7.1.2 colorama 0.4.4 cymem 2.0.5 Cython 0.29.24 dartsclone 0.9.0 filelock 3.0.12 ginza 5.0.1 ginza-transformers 0.3.1 huggingface-hub 0.0.12 idna 3.2 ja-ginza-electra 5.0.0 Jinja2 3.0.1 joblib 1.0.1 MarkupSafe 2.0.1 murmurhash 1.0.5 numpy 1.21.2 packaging 21.0 pathy 0.6.0 Pillow 8.3.1 pip 21.2.4 plac 1.3.3 preshed 3.0.5 pydantic 1.8.2 pyparsing 2.4.7 PyYAML 5.4.1 regex 2021.8.21 requests 2.26.0 sacremoses 0.0.45 setuptools 57.4.0 six 1.16.0 smart-open 5.2.0 sortedcontainers 2.1.0 spacy 3.1.2 spacy-alignments 0.8.3 spacy-legacy 3.0.8 spacy-transformers 1.0.5 srsly 2.4.1 SudachiDict-core 20210802 SudachiPy 0.5.2 SudachiTra 0.1.5 thinc 8.0.8 tokenizers 0.10.3 torch 1.9.0+cu111 torchaudio 0.9.0 torchvision 0.10.0+cu111 tqdm 4.62.2 transformers 4.9.2 typer 0.3.2 typing-extensions 3.10.0.0 urllib3 1.26.6 wasabi 0.8.2
多くのパッケージが、インストールされました。
やはり、GiNZAは仮想環境にインストールした方がよいでしょうね。
Windowsなら、IDEにPyCharmを使えば簡単に仮想環境を利用できます。
また、以下のようにコマンドでも簡単に仮想環境を利用できます。
以上、GiNZA(Transformersモデル)のインストールを説明しました。
最後は、GiNZA(Transformersモデル)の動作確認を行います。
GiNZA(Transformersモデル)の動作確認
公式に載っているサンプルコードです。
「ja_ginza_electra」を解析モデルに読み込んでいます。
import spacy nlp = spacy.load('ja_ginza_electra') doc = nlp('銀座でランチをご一緒しましょう。') for sent in doc.sents: for token in sent: print(token.i, token.orth_, token.lemma_, token.pos_, token.tag_, token.dep_, token.head.i) print('EOS')
上記を実行します。
以下のような形態素解析した結果が出れば、動作は問題ありません。
0 銀座 銀座 PROPN 名詞-固有名詞-地名-一般 obl 5 1 で で ADP 助詞-格助詞 case 0 2 ランチ ランチ NOUN 名詞-普通名詞-一般 obj 5 3 を を ADP 助詞-格助詞 case 2 4 ご ご NOUN 接頭辞 compound 5 5 一緒 一緒 VERB 名詞-普通名詞-サ変可能 ROOT 5 6 し する AUX 動詞-非自立可能 aux 5 7 ましょう ます AUX 助動詞 aux 5 8 。 。 PUNCT 補助記号-句点 punct 5 EOS
以上、GiNZA(Transformersモデル)の動作確認の説明でした。