LoginSignup
3
0

More than 1 year has passed since last update.

GiNZA で形態素解析やってみた(インストールで少しだけハマった)

Posted at

突如形態素解析をしてみたくなりました。
以前 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

:astonished: :exclamation: :exclamation:

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 のあと、プロンプトに戻らない・・・。
:astonished: :exclamation: :exclamation:

インタラクティブモードだからです

問題ではありません。
引数なしで ginza を実行したので、標準入力からの入力待ちになっていただけでした。

ので、そのまま形態素解析したい文章を打ってみます。

銀座でランチをご一緒しましょう。

ドキドッ :exclamation: ドキドキする間もなく、一瞬で結果が出力されました。

/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 中村 勘九郎(歌舞伎役者))

いい感じです!

形態素解析を楽しみたいと思います。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0