Shunya Ueta

Google Colab で Spacy による NER の結果を表示するには、jupyter 引数を True にする必要がある

自然言語処理のフレームワークの Spacy を使って、Google Colab 上で NER の可視化を行う際に

import spacy


spacy.displacy.render(doc, style='ent')

と実行しても

<div class="entities" style="line-height: 2.5; direction: ltr"></br>\n<mark class="entity" style="background: #bfe1d9; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">\n    2022年\n    <span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">Date</span>\n</mark>\n、\n<mark class="entity" style="background: #ddd; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">\n    日本人\n    <span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">Nationality</span>\n</mark>\nは震撼した。</br>まだ\n<mark class="entity" style="background: #ddd; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">\n    ゾンビ\n    <span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">Insect</span>\n</mark>\nの恐怖は

生の HTML が表示されるだけで、結果がレンダリングされなかったので、そのレンダリングするための方法を記しておく。

対処方法としては、

spacy.displacy.render() 関数の jupyter 引数を True にすれば良い。

Spacy の公式ドキュメントには、1

force Jupyter rendering if auto-detection fails.

と書かれており、本来は Jupyter ノートブックからの出力を自動検出してくれるらしいのだが、Google Colab 上では自動検出されてない模様。

そのため、明示的に jupyter=True にすれば解決する。 同じような質問が Stack Overflow2 でも投稿されていた。

import spacy


nlp = spacy.load('ja_ginza_electra')
doc = """
2022年、日本人は震撼した。まだ恐怖は拭いきれておらず、ネコに癒やしを求めていた。ネコこそが癒やしなのである。もしくはフレンチブルドッグ。
"""
doc = nlp(doc)
spacy.displacy.render(doc, style='ent', jupyter=True)

colab result in spacy NER

実際に使用した Colab のリンクはこちらです。

---

関連しているかもしれない記事


📮 📧 🐏: 記事への感想のおたよりをおまちしてます。 お気軽にお送りください。 メールアドレス入力があればメールで返信させていただきます。 もちろんお返事を希望せずに単なる感想だけでも大歓迎です。

このサイトの更新情報をRSSで配信しています。 お好きなフィードリーダーで購読してみてください。

このウェブサイトの運営や著者の活動を支援していただける方を募集しています。 もしよろしければ、Buy Me a Coffee からサポート(投げ銭)していただけると、著者の活動のモチベーションに繋がります✨

#colaboratory #jupyter #python #nlp