LoginSignup
2

More than 1 year has passed since last update.

Organization

Colabで日本語対応したspaCyを動かしてみる

概要

自然言語処理用PythonライブラリのspaCyがv3.2から日本語対応し、公式の無料のオンラインコース (https://course.spacy.io/ja) も提供しています。

チュートリアルを見るだけではなくて、実際にGoogle Colaboratoryにて動かしてみましたが
執筆時のColabの環境ではすんなり動かなかったので、動くようにしたコードを共有します。

Version確認

単なるVerison確認なら
import spacy
print(spacy.__version__)
でも良いのですが、importすることによってupgradeがうまくできなかったので以下で確認します。

>>> !pip show spacy
Name: spacy
Version: 2.2.4
Summary: Industrial-strength Natural Language Processing (NLP) in Python
Home-page: https://spacy.io
Author: Explosion
Author-email: contact@explosion.ai
License: MIT
Location: /usr/local/lib/python3.7/dist-packages
Requires: srsly, requests, numpy, murmurhash, thinc, plac, wasabi, blis, cymem, catalogue, setuptools, tqdm, preshed
Required-by: fastai, en-core-web-sm

Versionが2.2.4なのでUpgradeが必要のようです。
(ちなみに下記コマンドの引数に関して、U:Upgrade, q:quietの略らしいです。)

Upgrade

>>> !pip install -U spacy -q
[K     |████████████████████████████████| 6.0 MB 4.5 MB/s 
[K     |████████████████████████████████| 42 kB 1.2 MB/s 
[K     |████████████████████████████████| 181 kB 58.8 MB/s 
[K     |████████████████████████████████| 451 kB 44.0 MB/s 
[K     |████████████████████████████████| 628 kB 48.1 MB/s 
[K     |████████████████████████████████| 10.1 MB 18.9 MB/s 
[?25h

再度Verison確認

>>> !pip show spacy
Name: spacy
Version: 3.2.1
Summary: Industrial-strength Natural Language Processing (NLP) in Python
Home-page: https://spacy.io
Author: Explosion
Author-email: contact@explosion.ai
License: MIT
Location: /usr/local/lib/python3.7/dist-packages
Requires: cymem, murmurhash, jinja2, typer, thinc, numpy, blis, tqdm, requests, packaging, preshed, langcodes, spacy-legacy, srsly, setuptools, pathy, pydantic, spacy-loggers, typing-extensions, wasabi, catalogue
Required-by: fastai, en-core-web-sm

無事にv3.2になりました。

追加のinstall

spaCyのUpgradeだけではうまく動かせず、エラー文にspacy[ja]について書いてあったので追加でinstall

>>> !pip install spacy[ja] -q
[K     |████████████████████████████████| 2.2 MB 5.3 MB/s 
[?25h  Building wheel for sudachidict-core (setup.py) ... [?25l[?25hdone

これで事前準備は完了です。

nlpオブジェクトの作成

# spaCyをインポート
>>> import spacy

# 日本語のnlpオブジェクトを作成
>>> nlp = spacy.blank("ja")

Docオブジェクトの作成、tokenの抽出

# nlpを用いて、テキストを処理することで作成
>>> doc = nlp("おはようございます!")

# Docからtokenを取り出す
>>> for token in doc:
        print(token.text)
おはよう
ござい
ます
!

これで簡単に動かすことができました!

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
What you can do with signing up
2