Cet article est l'article du 10e jour du Calendrier de l'Avent étudiant professionnel 2016: rire:
En premier lieu, il est délicat qu'il s'agisse d'IA ou non, il est donc possible que le titre soit erroné ... J'ai essayé de faire un ChatBot étudiant professionnel en collectant les remarques du Twitter d'étudiant professionnel. ↓ Si vous dites quelque chose comme ça sur Slack, un étudiant professionnel vous répondra.
En interne, Slack a créé un canal Bot pour un certain blogueur, et si vous le demandez, vous pouvez dire que vous créez ChatBot à partir de Twitter. Il n'y a pas d'autre choix que de créer Chatbot à partir du Twitter d'étudiant professionnel! C'est pourquoi j'ai commencé à le faire.
En gros, il semble que vous puissiez le faire avec le flux suivant.
Je viens d'utiliser la source que mon collègue a faite telle quelle, donc je vais l'expliquer en détail cette fois dans Skip. .. .. : gouttes de sueur:
Je ne veux pas exécuter Elastic Search sur ma machine, donc cette fois je vais démarrer CentOS avec Vagrant et l'exécuter là-bas.
cd <Annuaire approprié>
mkdir pronama-chan-bot && cd $_
vagrant init <Nom du fichier CentOS Box>
vagrant up
vagrant ssh
sudo yum update -y
Après cela, travaillez dans CentOS de ↑
Il semble que Java soit nécessaire pour installer ʻanalysis-kuromoji` décrit plus tard, alors installez-le
sudo yum install -y wget
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u65-b17/jdk-8u65-linux-x64.rpm
sudo rpm -ivh jdk-8u65-linux-x64.rpm
java -version
Moteur de recherche en texte intégral fourni par Elastic (un mécanisme de recherche de données de document, y compris le mot cible, à partir d'une grande quantité de données de document)
Installez en vous référant à ici
sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
sudo vi /etc/yum.repos.d/elasticsearch.repo
/etc/yum.repos.d/elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
sudo yum install -y elasticsearch
#Installez kuromoji pour une recherche en texte intégral en japonais
sudo /usr/share/elasticsearch/bin/plugin install analysis-kuromoji
#Une version étendue du dictionnaire ipa appelée neologd? Installer car il utilise Toyara
sudo /usr/share/elasticsearch/bin/plugin install org.codelibs/elasticsearch-analysis-kuromoji-neologd/2.4.1
#Un plug-in qui vous permet de visualiser les résultats dans un navigateur Web
sudo /usr/share/elasticsearch/bin/plugin install polyfractal/elasticsearch-inquisitor
#Un plug-in qui peut surveiller Elastic Search
sudo /usr/share/elasticsearch/bin/plugin install royrusso/elasticsearch-HQ
- L'explication de chaque plug-in a été écrite par google, il se peut donc qu'elle soit erronée m (_ _) m
sudo vi /etc/elasticsearch/elasticsearch.yml
Modifié comme suit
http.compression: true
network.publish_host: "0.0.0.0"
network.host: "0.0.0.0"
network.bind_host: "0.0.0.0"
transport.tcp.port: 9300
transport.tcp.compress: true
http.port: 9200
Paramètres de démarrage
sudo chkconfig elasticsearch on
sudo service elasticsearch start
sudo yum install -y git
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
pyenv install anaconda3-4.1.1
pyenv rehash
pyenv global anaconda3-4.1.1
python --version
Utilisez la bibliothèque Python pour l'API Twitter appelée tweepy pour obtenir la chronologie passée et la sauvegarder dans la base de données.
Image approximative.py
#Paramètres de l'API Twitter
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
#Acquisition de TL (exécutez ce qui suit jusqu'à ce que tous les TL puissent être acquis)
statuses = api.user_timeline('pronama', max_id = None, count = 200)
#Traiter les données acquises pour le stockage DB
#réduction
#Enregistrer le TL acquis dans DB
#réduction
OK si vous METTEZ le JSON défini dans localhost: 9200 / _template / <template_name>
Le nom de l'index est défini dans template
, et kuromoji
est défini dans tokenizer
. Je ne suis pas encore sûr de cela, donc j'enquêterai plus tard
SUPPRIMER localhost: 9200 / <index_name>
et c'est OK
Convertir les données DB en json à l'aide de Python
POST avec localhost: 9200 / <index_name> / speech / _bulk --data-binary <json data>
Elastic Search lui-même devrait fonctionner jusqu'à présent, alors appuyez sur la commande suivante et vérifiez si le résultat est renvoyé.
curl -XGET 'http://localhost:9200/<index_name>/_search?pretty' -d '
{
"query": {
"function_score": {
"functions": [
{
"random_score": {
"seed" : "999999999"
}
}
],
"query": {
"query_string": {
"query": "text.kuromoji:<Texte>^100 OR text.2gram:$<Texte>^10"
}
},
"score_mode": "multiply"
}
},
"size": 1,
"sort": {
"_score": {
"order": "desc"
}
},
"track_scores": true
}
'
Yay! !! Pour une raison quelconque, la réponse de "Yaho" est "Je l'ai fait!", Mais cela semble fonctionner!
Maintenant, configurons cela comme un SlackBot.
Enregistrez l'utilisateur Bot depuis [Ajouter une configuration] sous ici. Saisissez chaque élément de manière appropriée. Cette fois, inscrivez-vous avec le nom "@pronama_chan".
N'oubliez pas de noter le "jeton API" affiché sur l'écran suivant.
Créez une chaîne depuis Slack.
N'oubliez pas d'inviter le @ pronama_chan
créé dans ↑.
Créez un robot Slack à l'aide de la bibliothèque [slackbot] de Python (https://github.com/lins05/slackbot).
C'est aussi une image approximative.py
from slackbot.bot import Bot
from slackbot.bot import respond_to,default_reply
bot_response(userid, word):
#POST à Elastic Search
response = requests.post(
'http://{}/{}/_search'.format(hostname, index_name),
<Chaîne JSON à envoyer à Elastic Search générée à partir de Word>.encode('utf-8'))
#De ce qui a été publié
return <Chaîne de caractères extraite de la réponse>
@respond_to('(.*)')
def chat(message, word):
response = bot_response(message._get_user_id(), word)
message.reply(response)
def main():
bot = Bot()
bot.run()
if __name__ == "__main__":
main()
Kita━━━ ヽ (∀ ゚) personnes (゚ ∀ ゚) personnes (゚ ∀) ノ ━━━ !!
Je suis un débutant en IA dans une boutique en ligne, mais j'ai réussi à faire un étudiant professionnel Chatbot. C'est amusant mais fatigant d'utiliser des techniques que vous n'utilisez pas normalement. .. ..
Bien!
Recommended Posts