28 Aug 2020
Unter Gentoo ist die Installation des Chatterbots ein wenig diffiziler. Das liegt am –user Zwang von pip. Man kriegst aber trotzdem hin. Ein Installationsprotokoll.
Als Test-Program für die Installation wird charlie.py verwendet. Die Dokumentation ist hier zu finden: https://chatterbot.readthedocs.io/en/stable/examples.html#simple-example
#!/usr/bin/python3.6
from chatterbot import ChatBot
from chatterbot.trainers import ListTrainer
# Create a new chat bot named Charlie
chatbot = ChatBot('Charlie')
trainer = ListTrainer(chatbot)
trainer.train([
"Hi, can I help you?",
"Sure, I'd like to book a flight to Iceland.",
"Your flight has been booked."
])
# Get a response to the input text 'I would like to book a flight.'
response = chatbot.get_response('I would like to book a flight.')
print(response)
chrissie@fehmarn ~ $ python --version
Python 3.6.11
chrissie@fehmarn ~ $ pip install --user chatterbot
Collecting chatterbot
Downloading ChatterBot-1.0.8-py2.py3-none-any.whl (63 kB)
|################################| 63 kB 149 kB/s
Collecting mathparse<0.2,>=0.1
Downloading mathparse-0.1.2-py3-none-any.whl (7.2 kB)
Collecting python-dateutil<2.9,>=2.8
Downloading python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
|################################| 227 kB 1.8 MB/s
Collecting sqlalchemy<1.4,>=1.3
Downloading SQLAlchemy-1.3.19-cp36-cp36m-manylinux2010_x86_64.whl (1.3 MB)
|################################| 1.3 MB 1.6 MB/s
Requirement already satisfied: pytz in /usr/lib64/python3.6/site-packages (from chatterbot) (2020.1)
Requirement already satisfied: six>=1.5 in /usr/lib64/python3.6/site-packages (from python-dateutil<2.9,>=2.8->chatterbot) (1.15.0)
Installing collected packages: mathparse, python-dateutil, sqlalchemy, chatterbot
Successfully installed chatterbot-1.0.8 mathparse-0.1.2 python-dateutil-2.8.1 sqlalchemy-1.3.19
chrissie@fehmarn ~ $ ./charlie.py
ModuleNotFoundError: No module named 'spacy'
chrissie@fehmarn ~ $ pip install --user spacy
Collecting spacy
[...]
chrissie@fehmarn ~ $ ./charlie.py
Traceback (most recent call last):
File "./charlie.py", line 7, in <module>
chatbot = ChatBot('Charlie')
File "/home/chrissie/.local/lib64/python3.6/site-packages/chatterbot/chatterbot.py", line 28, in __init__
self.storage = utils.initialize_class(storage_adapter, **kwargs)
File "/home/chrissie/.local/lib64/python3.6/site-packages/chatterbot/utils.py", line 33, in initialize_class
return Class(*args, **kwargs)
File "/home/chrissie/.local/lib64/python3.6/site-packages/chatterbot/storage/sql_storage.py", line 20, in __init__
super().__init__(**kwargs)
File "/home/chrissie/.local/lib64/python3.6/site-packages/chatterbot/storage/storage_adapter.py", line 21, in __init__
'tagger_language', languages.ENG
File "/home/chrissie/.local/lib64/python3.6/site-packages/chatterbot/tagging.py", line 13, in __init__
self.nlp = spacy.load(self.language.ISO_639_1.lower())
File "/home/chrissie/.local/lib64/python3.6/site-packages/spacy/__init__.py", line 30, in load
return util.load_model(name, **overrides)
File "/home/chrissie/.local/lib64/python3.6/site-packages/spacy/util.py", line 170, in load_model
return load_model_from_package(name, **overrides)
File "/home/chrissie/.local/lib64/python3.6/site-packages/spacy/util.py", line 190, in load_model_from_package
cls = importlib.import_module(name)
File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'en'
Hier fehlt nicht das Python-Modul en, sondern das Spicy-Modul en. Wegen der Gentoo-Beschränkungen kann es nicht mit python -m spacy download en installiert werden. Der Vorgang muss manuell durchgeführt werden, und auch ein Symlink mit en muss angelegt werden. Für andere Sprachen ist es obligatorisch, dass das richtige Modul gewählt werden muss.
chrissie@fehmarn ~ $ wget https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.3.1/en_core_web_sm-2.3.1.tar.gz
chrissie@fehmarn ~ $ pip install --user en_core_web_sm-2.3.1.tar.gz
Processing ./en_core_web_sm-2.3.1.tar.gz
cd /home/chrissie/.local/lib64/python3.6/site-packages/
ln -s en_core_web_sm en
chrissie@fehmarn ~ $ ./charlie.py
List Trainer: [####################] 100%
Your flight has been booked
Cheers!