Ubuntu + Python3.10で形態素解析GiNZAを使う
POSTED BY
2023-04-28
2023-04-28
当方環境Ubuntu Server 22.04 LTSで自然言語処理エンジンGiNZAを動かしたメモ。
システムにはすでに/usr/bin/python3があるので、pipを入れる。
which python3 /usr/bin/python3 which pip
wget https://bootstrap.pypa.io/get-pip.py python3 get-pip.py
export PATH="$PATH:$HOME/.local/bin" which pip /home/snote/.local/bin/pip
python3 -V Python 3.10.6 pip -V pip 23.1.2 from /home/snote/.local/lib/python3.10/site-packages/pip (python 3.10)
こちらの公式ページを参考に、セットアップ、テストを行う。
https://megagonlabs.github.io/ginza/
モジュールのインストール
pip install -U ginza ja_ginza
単独コマンドのテスト
echo "私は明日東京タワーから羽田に行き、飛行機で旭川へ行く予定です。" | ginza # text = 私は明日東京タワーから羽田に行き、飛行機で旭川へ行く予定です。 1 私 私 PRON 代名詞 _ 9 nsubj _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|NP_B|Reading=ワタクシ 2 は は ADP 助詞-係助詞 _ 1 case _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Reading=ハ 3 明日 明日 ADV 名詞-普通名詞-副詞可能 _ 9 obl _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|Reading=アス 4 東京 東京 PROPN 名詞-固有名詞-地名-一般 _ 5 compound _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=CONT|NP_B|Reading= トウキョウ|NE=B-FAC|ENE=B-School 5 タワー タワー NOUN 名詞-普通名詞-一般 _ 9 obl _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SEM_HEAD|NP_I|Reading=タワ ー|NE=I-FAC|ENE=I-School 6 から から ADP 助詞-格助詞 _ 5 case _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Reading=カラ 7 羽田 羽田 PROPN 名詞-固有名詞-人名-姓 _ 9 obl _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|NP_B|Reading=ハタ|NE=B-GPE|ENE=B-Location_Other 8 に に ADP 助詞-格助詞 _ 7 case _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Reading=ニ 9 行き 行く VERB 動詞-非自立可能 _ 15 advcl _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|Inf=五段-カ行,連用形-一般|Reading=イキ 10 、 、 PUNCT 補助記号-読点 _ 9 punct _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=CONT|Reading=、 11 飛行機 飛行機 NOUN 名詞-普通名詞-一般 _ 15 obl _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|NP_B|Reading=ヒコ ウキ 12 で で ADP 助詞-格助詞 _ 11 case _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Reading=デ 13 旭川 旭川 PROPN 名詞-固有名詞-地名-一般 _ 15 obl _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|NP_B|Reading=アサ ヒカワ|NE=B-GPE|ENE=B-City 14 へ へ ADP 助詞-格助詞 _ 13 case _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Reading=ヘ 15 行く 行く VERB 動詞-非自立可能 _ 16 acl _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|Inf=五段-カ行,連体形-一般|Reading=イク 16 予定 予定 NOUN 名詞-普通名詞-サ変可能 _ 0 root _ SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=ROOT|NP_B|Reading=ヨテイ 17 です です AUX 助動詞 _ 16 cop _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Inf=助動詞-デス,終止形-一般|Reading=デス 18 。 。 PUNCT 補助記号-句点 _ 16 punct _ SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=CONT|Reading=。
Pythonスクリプトからの呼び出し
test_ginza.py
import spacy nlp = spacy.load('ja_ginza') doc = nlp('私は明日東京タワーから羽田に行き、飛行機で旭川へ行く予定です。') for sent in doc.sents: for token in sent: print( token.i, token.orth_, token.lemma_, token.norm_, token.morph.get("Reading"), token.pos_, token.morph.get("Inflection"), token.tag_, token.dep_, token.head.i, ) print('EOS')
今回は「2. GiNZA + 従来型モデル」を入れているので、ja_ginza_electraをja_ginzaに修正。
python3 test_ginza.py 0 私 私 私 ['ワタクシ'] PRON [] 代名詞 nsubj 8 1 は は は ['ハ'] ADP [] 助詞-係助詞 case 0 2 明日 明日 明日 ['アス'] ADV [] 名詞-普通名詞-副詞可能 obl 8 3 東京 東京 東京 ['トウキョウ'] PROPN [] 名詞-固有名詞-地名-一般 compound 4 4 タワー タワー タワー ['タワー'] NOUN [] 名詞-普通名詞-一般 obl 8 5 から から から ['カラ'] ADP [] 助詞-格助詞 case 4 6 羽田 羽田 羽田 ['ハタ'] PROPN [] 名詞-固有名詞-人名-姓 obl 8 7 に に に ['ニ'] ADP [] 助詞-格助詞 case 6 8 行き 行く 行く ['イキ'] VERB ['五段-カ行;連用形-一般'] 動詞-非自立可能 advcl 14 9 、 、 、 ['、'] PUNCT [] 補助記号-読点 punct 8 10 飛行機 飛行機 飛行機 ['ヒコウキ'] NOUN [] 名詞-普通名詞-一般 obl 14 11 で で で ['デ'] ADP [] 助詞-格助詞 case 10 12 旭川 旭川 旭川 ['アサヒカワ'] PROPN [] 名詞-固有名詞-地名-一般 obl 14 13 へ へ へ ['ヘ'] ADP [] 助詞-格助詞 case 12 14 行く 行く 行く ['イク'] VERB ['五段-カ行;連体形-一般'] 動詞-非自立可能 acl 15 15 予定 予定 予定 ['ヨテイ'] NOUN [] 名詞-普通名詞-サ変可能 ROOT 15 16 です です です ['デス'] AUX ['助動詞-デス;終止形-一般'] 助動詞 cop 15 17 。 。 。 ['。'] PUNCT [] 補助記号-句点 punct 15 EOS
仕方ないんだけど、「東京」と「タワー」が分かれてしまっているのが残念。スポットデータベースを参照するようなことができれば良いのですが…。
【前の記事】pipコマンドをインストールする
Android
iPhone/iPad
Flutter
MacOS
Windows
Debian
Ubuntu
CentOS
FreeBSD
RaspberryPI
HTML/CSS
C/C++
PHP
Java
JavaScript
Node.js
Swift
Python
MatLab
Amazon/AWS
CORESERVER
Google
仮想通貨
LINE
OpenAI/ChatGPT
IBM Watson
Microsoft Azure
Xcode
VMware
MySQL
PostgreSQL
Redis
Groonga
Git/GitHub
Apache
nginx
Postfix
SendGrid
Hackintosh
Hardware
Fate/Grand Order
ウマ娘
将棋
ドラレコ
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!ご連絡は以下アドレスまでお願いします★
【キーワード検索】
【最近の記事】【全部の記事】
Intel Macbook2020にBootCampで入れたWindows11 Pro 23H2のBluetoothを復活させるWindowsのデスクトップ画面をそのまま配信するための下準備
WindowsでGPUの状態を確認するには(ASUS系監視ソフトの自動起動を停止する)
CORESERVER v1プランからさくらインターネットスタンダートプランへ引っ越しメモ
さくらインターネットでPython MecabをCGIから使う
さくらインターネットのPHPでAnalytics-G4 APIを使う
インクルードパスの調べ方
【Git】特定ファイルを除外する.gitignore
【Ubuntu/Debian】NVIDIA関係のドライバを自動アップデートさせない
【Python】Spacyを使用して文章から出発地と目的地を抜き出す
【人気の記事】【全部の記事】
進研ゼミチャレンジタッチをAndroid端末化する【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
Windows版Google Driveが使用中と言われアンインストールできない場合
VirtualBoxの仮想マシンをWindows起動時に自動起動し終了時に自動サスペンドする
【Apache】サーバーに同時接続可能なクライアント数を調整する
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合
【Linux】iconv/libiconvをソースコードからインストール
Ubuntu Server 21.10でイーサリアムブロックチェーン【その5】
【カテゴリーリンク】
Android
iPhone/iPad
Flutter
MacOS
Windows
Debian
Ubuntu
CentOS
FreeBSD
RaspberryPI
HTML/CSS
C/C++
PHP
Java
JavaScript
Node.js
Swift
Python
MatLab
Amazon/AWS
CORESERVER
Google
仮想通貨
LINE
OpenAI/ChatGPT
IBM Watson
Microsoft Azure
Xcode
VMware
MySQL
PostgreSQL
Redis
Groonga
Git/GitHub
Apache
nginx
Postfix
SendGrid
Hackintosh
Hardware
Fate/Grand Order
ウマ娘
将棋
ドラレコ