目次
▼ Python3.6がインストールされていること。
このページでは、venvの仮想環境(Python3.6)上にNumPyをインストールした環境で、Python対話モード(Pythonインタプリタ)にて実装サンプルを記載している。
※ Python対話モードについては下記を参考。
Python対話モード:[Python] 対話モード (インタプリタ) の使用方法
▼ 対話システムのプログラムについて
この記事で登場するサンプルプログラムは、下記参考文献『Pythonでつくる対話システム』のGitHubサポートページで提供されているプログラムをダウンロードして使用させていただく。
【参考文献】
東中 竜一郎、稲葉 通将、水上 雅博 (2020) 『Pythonでつくる対話システム』株式会社オーム社
【GitHubサポートページ】
https://github.com/dsbook/dsbook
$ sudo yum install -y https://packages.groonga.org/centos/groonga-release-latest.noarch.rpm
$ sudo yum makecache
$ sudo yum install mecab mecab-devel mecab-ipadic
$ mecab
昨日はいい天気でしたね
昨日 名詞,副詞可能,*,*,*,*,昨日,キノウ,キノー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
いい 形容詞,自立,*,*,形容詞・イイ,基本形,いい,イイ,イイ
天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ
でし 助動詞,*,*,*,特殊・デス,連用形,です,デシ,デシ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
ね 助詞,終助詞,*,*,*,*,ね,ネ,ネ
EOS
$ pip3 install mecab-python3
import MeCab
mecab = MeCab.Tagger()
# python3-mecabのバグ回避のため,空文字をparse
mecab.parse('')
# 標準入力からテキストを受け取る
text = input(">")
node = mecab.parseToNode(text)
while node:
print(node.surface, node.feature)
node = node.next
$ python
>>> import MeCab
>>>
>>> mecab = MeCab.Tagger() # MeCabのインスタンス生成
Failed when trying to initialize MeCab. Some things to check:
- If you are not using a wheel, do you have mecab installed?
- Do you have a dictionary installed? If not do this:
pip install unidic-lite
- If on Windows make sure you have this installed:
https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
- Try creating a Model with the same arguments as your Tagger; that may
give a more descriptive error message.
If you are still having trouble, please file an issue here:
https://github.com/SamuraiT/mecab-python3/issues
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/var/www/vops/lib64/python3.6/site-packages/MeCab/__init__.py", line 105, in __init__
super(Tagger, self).__init__(args)
RuntimeError
>>>
$ pip3 install unidic-lite
$ python ~/gitlocalrep/dsbook/mecab-python3_test.py
>昨日はいい天気でしたね
BOS/EOS,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*
昨日 名詞,普通名詞,副詞可能,*,*,*,キノウ,昨日,昨日,キノー,昨日,キノー,和,*,*,*,*,キノウ,キノウ,キノウ,キノウ,*,*,"2,0",C2,*
は 助詞,係助詞,*,*,*,*,ハ,は,は,ワ,は,ワ,和,*,*,*,*,ハ,ハ,ハ,ハ,*,*,*,"動詞%F2@0,名詞%F1,形容詞%F2@-1",*
いい 形容詞,非自立可能,*,*,形容詞,連体形-一般,ヨイ,良い,いい,イー,いい,イー,和,*,*,*,*,イイ,イイ,イイ,イイ,*,*,1,C3,*
天気 名詞,普通名詞,一般,*,*,*,テンキ,天気,天気,テンキ,天気,テンキ,漢,*,*,*,*,テンキ,テンキ,テンキ,テンキ,*,*,1,C1,*
でし 助動詞,*,*,*,助動詞-デス,連用形-一般,デス,です,でし,デシ,です,デス,和,*,*,*,*,デシ,デス,デシ,デス,*,*,*,"形容詞%F2@-1,動詞%F2@0,名詞%F2@1",*
た 助動詞,*,*,*,助動詞-タ,終止形-一般,タ,た,た,タ,た,タ,和,*,*,*,*,タ,タ,タ,タ,*,*,*,"動詞%F2@1,形容詞%F4@-2",*
ね 助詞,終助詞,*,*,*,*,ネ,ね,ね,ネ,ね,ネ,和,*,*,*,*,ネ,ネ,ネ,ネ,*,*,*,"動詞%F1,名詞%F1,形容詞%F1",*
BOS/EOS,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*
$ python ~/gitlocalrep/dsbook/mecab-python3_test.py
>>昨日はいい天気でしたね
Traceback (most recent call last):
File "~/gitlocalrep/dsbook/mecab-python3_test.py", line 11, in
node = mecab.parseToNode(text)
TypeError: in method 'Tagger_parseToNode', argument 2 of type 'char const *'
$ LANG=ja_JP.UTF8
$ nkf -w8 --overwrite ~/gitlocalrep/dsbook/mecab-python3_test.py
$ source /var/www/vops/bin/activate # 仮想環境起動
$ pip3.6 install PySide2 # PySide2をインストール
Collecting PySide2
Downloading https://files.pythonhosted.org/packages/24/39/348e72c1607ac12915e1809e9092e09aa239bc48ace41d51253179e635bb/PySide2-5.15.0-5.15.0-cp35.cp36.cp37.cp38-abi3-manylinux1_x86_64.whl (170.8MB)
100% |################################| 170.8MB 53kB/s
Collecting shiboken2==5.15.0 (from PySide2)
Downloading https://files.pythonhosted.org/packages/34/09/89ea79363e71233ee39f08c497efd8b34b1dd1e26f1905f18555b3cb1b1a/shiboken2-5.15.0-5.15.0-cp35.cp36.cp37.cp38-abi3-manylinux1_x86_64.whl (856kB)
100% |################################| 860kB 10.0MB/s
Installing collected packages: shiboken2, PySide2
Successfully installed PySide2-5.15.0 shiboken2-5.15.0
<?xml version="1.0" encoding="UTF-8"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="ask_place">
<state id="ask_place">
<transition event="place" target="ask_date"/>
</state>
<state id="ask_date">
<transition event="date" target="ask_type"/>
</state>
<state id="ask_type">
<transition event="type" target="tell_info"/>
</state>
<final id="tell_info"/>
</scxml>