LoginSignup
4
1

More than 1 year has passed since last update.

GiNZAで複数文章を1文ずつに分解する

Last updated at Posted at 2022-11-30

はじめに

長文を1文ずつに分解するのに標記の方法を試したので、メモとして。

やりたいこと

例えば、次のような文章を1文ずつに分解したい。

明日、銀座でランチしましょう。イタリアンはどうですか?おすすめの店があるのですが。今日の夜までに返事くださいね!電話でもメールでもOKです。

これをGiNZAで簡単にできそうでしたのでcolabで試してみました。

内容

従来型モデルを使う方法とtransformer使って性能を向上させたモデルを使う方法の2種があるようです。後者の方が誤りが少ないようですが、その分、モデルのダウンロードやGPU環境の準備(ただしCPUでも出来る)などがあるので、実行するハードルがちょっと上がります。

GiNZA + 従来型モデルを試す。

!pip install ginza ja_ginza
import spacy

nlp = spacy.load('ja_ginza')
doc = nlp('明日、銀座でランチしましょう。イタリアンはどうですか?おすすめの店があるのですが。今日の夜までに返事くださいね!電話でもメールでもOKです。')
for sent in doc.sents:
    print(sent)

結果は下記になりました。

明日、銀座でランチしましょう。
イタリアンはどうですか?
おすすめの店があるのですが。
今日の夜までに返事くださいね!
電話でもメールでもOKです。

GiNZA + Transformersモデルを試す

公式ページによるとメモリ16GB以上必要とのこと。

!pip install -U ginza ja_ginza_electra
!pip install -U ginza https://github.com/megagonlabs/ginza/releases/download/latest/ja_ginza_electra-latest-with-model.tar.gz
# GPUを使う場合。CPUで実行したい場合は下記は実行しないこと
!pip install -U "spacy[cuda110]" 
import spacy

nlp = spacy.load('ja_ginza')
doc = nlp('明日、銀座でランチしましょう。イタリアンはどうですか?おすすめの店があるのですが。今日の夜までに返事くださいね!電話でもメールでもOKです。')
for sent in doc.sents:
    print(sent)

GPU実行時の結果は下記になりました。

明日、銀座でランチしましょう。
イタリアンはどうですか?
おすすめの店があるのですが。
今日の夜までに返事くださいね!
電話でもメールでもOKです。

CPU実行時の結果は下記になりました。ワーニングが出ますが同じように結果はでます。

/usr/local/lib/python3.7/dist-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')
明日、銀座でランチしましょう。
イタリアンはどうですか?
おすすめの店があるのですが。
今日の夜までに返事くださいね!
電話でもメールでもOKです。

所感など

  • 「従来型」はライブラリもそこまで不要で、CPU環境でも実行でき、実行に重いデータのダウンロードが不要なため、気軽に試せる。
  • 一方で「GiNZA + Transformersモデル」はモデルのサイズが圧縮ファイルで800MB近くもあり、メモリも16GBバイト以上必要など実行のハードルが少しだけある印象。長文で実施した場合、文書量が多いとき、トークンまで分解するときなどは、「GiNZA + Transformersモデル」でGPU活用が良さそうですが、近いうちに多いデータ量で試してみたい。

参考

実行環境

4
1
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
4
1