Installez Lib, un système de traitement du langage naturel, pour exécuter l'application de conversation. C'est presque la même chose que ~~ -nano, mais ~~ ** J'ai eu quelques problèmes, alors j'aimerais le décrire attentivement. C'est presque comme une référence, mais certains répertoires sont différents, nous allons donc le supporter. 【référence】
$ sudo apt install mecab
$ sudo apt install libmecab-dev
$ sudo apt install mecab-ipadic-utf8
Je l'ai fait jusqu'ici.
$ mecab
Hakutaka express limité
Nom express limité,Général,*,*,*,*,Express limité,Tokyu,Tokkyu
Est un assistant,Assistance,*,*,*,*,Est,C,sensationnel
Verbe Ku,Indépendance,*,*,Kahen / Kuru,Connexion Word spéciale 2,viens,Ku,Ku
Verbe auxiliaire,*,*,*,Spécial,Forme basique,Ta,Ta,Ta
Assistant Ka,Sous-auxiliaire / assistant parallèle / assistant final,*,*,*,*,Ou,Puissance,Puissance
EOS
Vous obtiendrez la sortie ci-dessus.
$ git clone https://github.com/neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd
$ sudo bin/install-mecab-ipadic-neologd
Vous pouvez l'installer jusqu'à présent sans aucun problème. Le téléchargement du dictionnaire a pris du temps (environ 30 minutes).
Un problème est survenu ici. Dans ubuntu, le dictionnaire est installé dans le répertoire suivant, mais dans Raspbian, il semble être différent.
dicdir = /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd
Alors, recherchez le répertoire dans lequel le fichier existe. 【référence】 Rechercher des fichiers [rechercher et localiser]
$ sudo find / -name '*mecab-ipadic-neologd*'
/usr/lib/arm-linux-gnueabihf/mecab/dic/mecab-ipadic-neologd
Vous pouvez maintenant le réécrire avec la commande suivante. Au fait, veuillez vous référer à la commande vi. 【référence】 Fonctionnement de base de vi
$ sudo vi /etc/mecabrc
Alors, je l'ai réécrit comme suit.
$ cat /etc/mecabrc
;
; Configuration file of MeCab
;
; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $;
;
;dicdir = /var/lib/mecab/dic/debian
dicdir =/usr/lib/arm-linux-gnueabihf/mecab/dic/mecab-ipadic-neologd
; userdic = /home/foo/bar/user.dic
; output-format-type = wakati
; input-buffer-size = 8192
; node-format = %m\n
; bos-format = %S\n
; eos-format = EOS\n
Confirmez ensuite que le dictionnaire a changé. J'ai pu les séparer sous une forme cohérente sous le nom de "Hakutaka".
$ mecab
Hakutaka express limité
Nom express limité,Général,*,*,*,*,Express limité,Tokyu,Tokkyu
Hakutaka substantif,Nom propre,Général,*,*,*,Hakutaka,Hakutaka,Hakutaka
EOS
sudo apt install swig
sudo apt install python3-pip
sudo pip3 install mecab-python3
Maintenant, l'exemple de référence fonctionne comme ci-dessous.
$ python3 mecab_sample.py
nom,固有nom,Général,*,*,*,Hakutaka,Hakutaka,Hakutaka
Hakutaka
nom,固有nom,zone,Général,*,*,Toyama,Toyama,Toyama
Toyama
nom,固有nom,zone,Général,*,*,Kanazawa,Kanazawa,Kanazawa
Kanazawa
nom,固有nom,zone,Général,*,*,Kenrokuen,Ken Roquen,Ken Roquen
Kenrokuen
L'application de conversation utilise pyaudio car elle génère des conversations vocales. 【référence】 Installation de PyAudio | Mémorandum Python
$ sudo apt-get install python3-pyaudio
J'ai pu l'installer avec succès.
Ceci est utilisé pour générer l'audio enregistré (le nom du fichier est alphabétique) et convertir l'audio généré en texte.
$ pip3 install pykakasi --user
Vérifiez avec le code ci-dessous
# coding: utf-8
from pykakasi import kakasi
kakasi = kakasi()
kakasi.setMode('H', 'a')
kakasi.setMode('K', 'a')
kakasi.setMode('J', 'a')
conv = kakasi.getConverter()
filename = 'C'est une journée ensoleillée.jpg'
print(filename) #C'est une journée ensoleillée.jpg
print(type(filename))
print(conv.do(filename))
Exemple de sortie.
$ python3 pykakasi_ex.py
C'est une journée ensoleillée.jpg
<class 'str'>
honjitsuhaseitennari.jpg
$ uname -a
Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux
$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
$ python3 gensm_ex1.py
Commence l'entraînement
Epoch: 1
gensm_ex1.py:16: DeprecationWarning: Call to deprecated `iter` (Attribute will be removed in 4.0.0, use self.epochs instead).
model.train(sentences, epochs=model.iter, total_examples=model.corpus_count)
Epoch: 2
Epoch: 3
Epoch: 4
Epoch: 5
Epoch: 6
Epoch: 7
Epoch: 8
Epoch: 9
Epoch: 10
Epoch: 11
Epoch: 12
Epoch: 13
Epoch: 14
Epoch: 15
Epoch: 16
Epoch: 17
Epoch: 18
Epoch: 19
Epoch: 20
SENT_0
[('SENT_2', 0.08270145207643509), ('SENT_3', 0.0347767099738121), ('SENT_1', -0.08307887613773346)]
SENT_3
[('SENT_0', 0.0347767099738121), ('SENT_1', 0.02076556906104088), ('SENT_2', -0.003991239238530397)]
SENT_1
[('SENT_3', 0.02076556347310543), ('SENT_2', 0.010350690223276615), ('SENT_0', -0.08307889103889465)]
gensm_ex1.py:33: DeprecationWarning: Call to deprecated `similar_by_word` (Method will be removed in 4.0.0, use self.wv.similar_by_word() instead).
print (model.similar_by_word(u"poisson"))
[('maintenant', 0.15166150033473969), ('Mer', 0.09887286275625229), ('demain', 0.03284810855984688), ('Chat', 0.019402338191866875), ('Aboyé', -0.0008345211390405893), ('nager', -0.02624458074569702), ('maintenant日', -0.05557712912559509), ('chien', -0.0900348424911499)]
RaspberryPi4_conversation/model_skl.py /
$ python3 model_skl.py
TfidfVectorizer(analyzer='word', binary=False, decode_error='strict',
dtype=<class 'numpy.float64'>, encoding='utf-8',
input='content', lowercase=True, max_df=1.0, max_features=None,
min_df=1, ngram_range=(1, 1), norm='l2', preprocessor=None,
smooth_idf=True, stop_words=None, strip_accents=None,
sublinear_tf=False, token_pattern='(?u)\\b\\w\\w+\\b',
tokenizer=None, use_idf=True, vocabulary=None)
{'je': 5, 'Sauce soja': 6, 'ramen': 2, 'Tonkotsu': 1, 'Comme': 4, 'est': 0, 'miso': 3}
{'Sauce soja': 4, 'ramen': 1, 'Tonkotsu': 0, 'Comme': 3, 'miso': 2}
Sauce soja 4
Ramen 1
Tonkotsu 0
J'aime 3
Miso 2
['Tonkotsu', 'ramen', 'miso', 'Comme', 'Sauce soja']
(0, 4) 0.4976748316029239
(0, 1) 0.7081994831914716
(0, 0) 0.3540997415957358
(0, 3) 0.3540997415957358
(1, 1) 0.7081994831914716
(1, 0) 0.3540997415957358
(1, 3) 0.3540997415957358
(1, 2) 0.4976748316029239
{'Sauce soja': 6, 'ramen': 3, 'Tonkotsu': 2, 'Comme': 5, 'miso': 4, 'Katsudon': 1, 'Oshiyaki': 0}
(0, 6) 0.5486117771118656
(0, 3) 0.6480379064629606
(0, 2) 0.4172333972107692
(0, 5) 0.3240189532314803
(1, 3) 0.6480379064629607
(1, 2) 0.41723339721076924
(1, 5) 0.32401895323148033
(1, 4) 0.5486117771118657
(2, 3) 0.35959372325985667
(2, 5) 0.35959372325985667
(2, 1) 0.6088450986844796
(2, 0) 0.6088450986844796
[[1. 0.69902512 0.34954555]
[0.69902512 1. 0.34954555]
[0.34954555 0.34954555 1. ]]
De cette façon, je suis arrivé à l'application de conversation en toute sécurité. RaspberryPi4_conversation/auto_conversation_.py
$ python3 auto_conversation_.py -i data/conversation_n.txt -s data/stop_words.txt
data/conversation_n.txt
>Il fait beau aujourd'hui
(0.41):C'est vrai.
>Qu'est-ce que c'est
(0.55):Qu'est-ce qu'un chien
>Le chien est un chien
(0.41):Où était le chien
>C'est une ruelle là-bas
(0.46):* * * Qu'Est-ce que c'est?
>À proximité du parc
(0.00): """«Pourquoi dois-je le faire seul? Aidez-moi un peu s'il vous plaît.,"""
>Que dois-je aider
(0.46):(Oui c'est bon)
>D'une certaine manière c'est fou
(0.38):De qui parles-tu
>Vous voyez
(0.00):Dites "Awanchan", et au fait, ces gens sont allés ici, et nous sommes allés ici.
>Je ne m'en souviens pas
(0.35):Je ne suis pas idiot
>Je pense que c'est stupide
(0.33):Il semble bon.
>
Vous trouverez ci-dessous l'installation de ce dont vous avez besoin.
【référence】 How to install scipy and numpy on Ubuntu 16.04?
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install python3-numpy python3-scipy
$ sudo pip3 install numpy scipy
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: numpy in /usr/lib/python3/dist-packages (1.16.2)
Requirement already satisfied: scipy in /usr/lib/python3/dist-packages (1.1.0)
$ pip3 install --user gensim
Successfully installed boto-2.49.0 boto3-1.11.14 botocore-1.14.14 gensim-3.8.1 jmespath-0.9.4 s3transfer-0.3.3 smart-open-1.9.0
【référence】 Installation de scikit-learn dans Ubuntu
$ sudo pip3 install scikit-learn
...
Requirement already satisfied: scipy>=0.17.0 in /usr/lib/python3/dist-packages (from scikit-learn) (1.1.0)
Requirement already satisfied: numpy>=1.11.0 in /usr/lib/python3/dist-packages (from scikit-learn) (1.16.2)
Installing collected packages: joblib, scikit-learn
Successfully installed joblib-0.14.1 scikit-learn-0.22.1
・ Lib installé requis pour le système de langage naturel sur RasPi4 ・ Pour le moment, j'ai pu exécuter une application en langage naturel
・ Je veux rendre l'application de conversation un peu plus décente
C'est sur le point d'entrer. 【référence】 ・ Différence entre la liste pip et freeze
$ pip3 freeze > requirements.txt
・ RaspberryPi4_conversation / requirements.txt
$ pip3 freeze
absl-py==0.9.0
arrow==0.15.5
asn1crypto==0.24.0
astor==0.8.1
astroid==2.1.0
asttokens==1.1.13
attrs==19.3.0
automationhat==0.2.0
backcall==0.1.0
beautifulsoup4==4.7.1
bleach==3.1.0
blinker==1.4
blinkt==0.1.2
boto==2.49.0
boto3==1.11.14
botocore==1.14.14
buttonshim==0.0.2
Cap1xxx==0.1.3
certifi==2018.8.24
chardet==3.0.4
Click==7.0
colorama==0.3.7
colorzero==1.1
cookies==2.2.1
cryptography==2.6.1
cycler==0.10.0
Cython==0.29.14
decorator==4.4.1
defusedxml==0.6.0
dill==0.3.1.1
docutils==0.14
drumhat==0.1.0
entrypoints==0.3
envirophat==1.0.0
ExplorerHAT==0.4.2
Flask==1.0.2
fourletterphat==0.1.0
gast==0.3.3
gensim==3.8.1
google-pasta==0.1.8
gpiozero==1.5.1
grpcio==1.27.1
h5py==2.10.0
html5lib==1.0.1
idna==2.6
importlib-metadata==1.5.0
ipykernel==5.1.4
ipython==7.12.0
ipython-genutils==0.2.0
ipywidgets==7.5.1
isort==4.3.4
itsdangerous==0.24
jedi==0.13.2
jinja2-time==0.2.0
jmespath==0.9.4
joblib==0.14.1
jsonschema==3.2.0
jupyter==1.0.0
jupyter-client==5.3.4
jupyter-console==6.1.0
jupyter-core==4.6.1
Keras==2.3.1
Keras-Applications==1.0.8
Keras-Preprocessing==1.1.0
keyring==17.1.1
keyrings.alt==3.1.1
kiwisolver==1.1.0
klepto==0.1.8
lazy-object-proxy==1.3.1
logilab-common==1.4.2
lxml==4.3.2
make==0.1.6.post1
Markdown==3.2
MarkupSafe==1.1.0
matplotlib==3.1.3
mccabe==0.6.1
mecab-python3==0.996.3
microdotphat==0.2.1
mistune==0.8.4
mote==0.0.4
motephat==0.0.2
mypy==0.670
mypy-extensions==0.4.1
nbconvert==5.6.1
nbformat==5.0.4
notebook==6.0.3
numpy==1.16.2
oauthlib==2.1.0
olefile==0.46
opencv-python==3.4.6.27
pandocfilters==1.4.2
pantilthat==0.0.7
parso==0.3.1
pexpect==4.8.0
pgzero==1.2
phatbeat==0.1.1
pianohat==0.1.0
picamera==1.13
pickleshare==0.7.5
piglow==1.2.5
pigpio==1.44
pox==0.2.7
prometheus-client==0.7.1
prompt-toolkit==3.0.3
protobuf==3.11.3
psutil==5.5.1
ptyprocess==0.6.0
PyAudio==0.2.11
pygame==1.9.4.post1
Pygments==2.3.1
PyGObject==3.30.4
pyinotify==0.9.6
PyJWT==1.7.0
pykakasi==1.2
pylint==2.2.2
pyOpenSSL==19.0.0
pyparsing==2.4.6
pyrsistent==0.15.7
pyserial==3.4
python-apt==1.8.4.1
python-dateutil==2.8.1
PyYAML==5.3
pyzmq==18.1.1
qtconsole==4.6.0
rainbowhat==0.1.0
requests==2.21.0
requests-oauthlib==1.0.0
responses==0.9.0
roman==2.0.0
RPi.GPIO==0.7.0
RTIMULib==7.2.1
s3transfer==0.3.3
scikit-learn==0.22.1
scipy==1.1.0
scrollphat==0.0.7
scrollphathd==1.2.1
SecretStorage==2.3.1
Send2Trash==1.5.0
sense-hat==2.2.0
simplejson==3.16.0
six==1.12.0
skywriter==0.0.7
smart-open==1.9.0
sn3218==1.2.7
soupsieve==1.8
spidev==3.4
ssh-import-id==5.7
tensorboard==1.13.1
tensorflow-estimator==1.14.0
termcolor==1.1.0
terminado==0.8.3
testpath==0.4.4
thonny==3.2.6
tornado==6.0.3
touchphat==0.0.1
traitlets==4.3.3
twython==3.7.0
unicornhathd==0.0.4
wcwidth==0.1.8
webencodings==0.5.1
widgetsnbextension==3.5.1
wrapt==1.11.2
zipp==2.2.0
Recommended Posts