概要
自然言語処理用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)
おはよう
ござい
ます
!
これで簡単に動かすことができました!