突如形態素解析をしてみたくなりました。
以前 MeCab をやったことがありますが、いまは GiNZA だというのでやってみました。
下記の WSL 環境です。
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
Python 3.8 です。
$ python3 --version
Python 3.8.10
ginza のインストール
Google 先生に聞いて公式サイトを探索。
そして、説明書通りにインストールですが、その前に venv 環境を作ります。
(pipenv をよく使うのですが、今は venv が公式だということで、今回は venv にしてみました)
$ mkdir ginza-trial
$ cd ginza-trial
$ python3 -m venv .venv
$ source .venv/bin/activate
そして ginza を公式の説明通りにインストールします。
公式サイトの「実行環境」のセクションです。
初めてなので何もインストールしていないハズですが、一応アンインストールから行います。
$ pip uninstall ginza ja_ginza_electra
$ pip uninstall ja_ginza
$ pip uninstall ja_ginza_electra
そして、インストールです。
$ pip install -U ginza ja_ginza_electra
やったぜ、実行だ!
$ ginza
Traceback (most recent call last):
...(長い長いトレースバック)...
ImportError: tokenizers>=0.10.1,<0.11 is required for a normal functioning of this module, but found tokenizers==0.12.1.
Try: pip install transformers -U or pip install -e '.[dev]' if you're working with git master
tokenizer のバージョン修正
今回、tokenizer 0.12.5 がインストールされたのですが、次のような状態です。
- ginza が依存する transformers は、 tokenizers>=0.10.1,<0.11 を要求します。
- ginza が依存する sudachitra は、 tokenizers>=0.10.3 を要求します。
そこで、 tokenizers 0.10.3 をインストールすることにしました。
$ pip install tokenizers==0.10.3
ginza を実行だ!
説明にある通り、初回実行のため Tarnsformers のモデルのダウンロードが始まりました。
成功です!!
ダウンロードの完了を待ちます。
400MB以上あり、数分かかりました。
$ ginza
Cannot find the requested files in the cached path and outgoing traffic has been disabled. To enable model look-ups and downloads online, set 'local_files_only' to False.
trying to download model from huggingface hub: megagonlabs/transformers-ud-japanese-electra-base-ginza-510 ...
Downloading: 100%|██████████████████████████████████████████████████████████████████████| 815/815 [00:00<00:00, 271kB/s]
Downloading: 100%|███████████████████████████████████████████████████████████████████| 414M/414M [02:25<00:00, 2.98MB/s]
succeded
むむ、succeded のあと、プロンプトに戻らない・・・。
インタラクティブモードだからです
問題ではありません。
引数なしで ginza を実行したので、標準入力からの入力待ちになっていただけでした。
ので、そのまま形態素解析したい文章を打ってみます。
銀座でランチをご一緒しましょう。
ドキドッ ドキドキする間もなく、一瞬で結果が出力されました。
/home/munehiro/trials/ginza/.venv/lib/python3.8/site-packages/torch/amp/autocast_mode.py:198: UserWarning: User provided device_type of 'cuda', but CUDA is not available. Disabling
warnings.warn('User provided device_type of \'cuda\', but CUDA is not available. Disabling')
# text = 銀座でランチをご一緒しましょう。
1 銀座 銀座 PROPN 名詞-固有名詞-地名-一般 _ 6 obl _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|NP_B|Reading=ギンザ|NE=B-GPE|ENE=B-City
2 で で ADP 助詞-格助詞 _ 1 case _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Reading=デ
3 ランチ ランチ NOUN 名詞-普通名詞-一般 _ 6 obj _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|NP_B|Reading=ランチ
4 を を ADP 助詞-格助詞 _ 3 case _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Reading=ヲ
5 ご ご NOUN 接頭辞 _ 6 compound _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=CONT|Reading=ゴ
6 一緒 一緒 VERB 名詞-普通名詞-サ変可能 _ 0 root _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=ROOT|Reading=イッショ
7 し する AUX 動詞-非自立可能 _ 6 aux _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Inf=サ行変格,連用形-一般|Reading=シ
8 ましょう ます AUX 助動詞 _ 6 aux _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Inf=助動詞-マス,意志推量形|Reading=マショウ
9 。 。 PUNCT 補助記号-句点 _ 6 punct _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=CONT|Reading=。
公式説明通りの結果がでました!
「CUDA 持ってないな、お前」という警告が出ていますが、事実なので気にしないことにします。
他の文章もやってみましょう。
メロスは激怒した
# text = メロスは激怒した
1 メロス メロス NOUN 名詞-普通名詞-一般 _ 3 nsubj _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|NP_B|Reading=メロス
2 は は ADP 助詞-係助詞 _ 1 case _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Reading=ハ
3 激怒 激怒 VERB 名詞-普通名詞-サ変可能 _ 0 root _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=ROOT|Reading=ゲキド
4 し する AUX 動詞-非自立可能 _ 3 aux _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Inf=サ行変格,連用形-一般|Reading=シ
5 た た AUX 助動詞 _ 3 aux _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Inf=助動詞-タ,終止形-一般|Reading=タ
型をしっかり覚えた後に、型破りになれる。
# text = 型をしっかり覚えた後に、型破りになれる。
1 型 型 NOUN 名詞-普通名詞-一般 _ 4 obj _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|NP_B|Reading=カタ
2 を を ADP 助詞-格助詞 _ 1 case _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Reading=ヲ
3 しっかり しっかり ADV 副詞 _ 4 advmod _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|Reading=シッカリ
4 覚え 覚える VERB 動詞-一般 _ 6 acl _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|Inf=下一段-ア行,連用形-一般|Reading=オボエ
5 た た AUX 助動詞 _ 4 aux _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Inf=助動詞-タ,連体形-一般|Reading=タ
6 後 後 NOUN 名詞-普通名詞-副詞可能 _ 11 obl _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|NP_B|Reading=アト
7 に に ADP 助詞-格助詞 _ 6 case _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Reading=ニ
8 、 、 PUNCT 補助記号-読点 _ 6 punct _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=CONT|Reading=、
9 型破り 型破り ADJ 形状詞-一般 _ 11 advcl _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|Reading=カタヤブリ
10 に だ AUX 助動詞 _ 9 aux _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Inf=助動詞-ダ,連用形-ニ|Reading=ニ
11 なれる なれる VERB 動詞-非自立可能 _ 0 root _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=ROOT|Inf=下一段-ラ行,終止形-一般|Reading=ナレル
12 。 。 PUNCT 補助記号-句点 _ 11 punct _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=CONT|Reading=。
(http://www.hoku-iryo-u.ac.jp/~amefuto/maximum%20the%20maxim/effort1.html No.4 - A - 11 中村 勘九郎(歌舞伎役者))
いい感じです!
形態素解析を楽しみたいと思います。