Dieser Artikel ist der Artikel zum 10. Tag des Professional Student Advent Calendar 2016: Lachen:
Erstens ist es heikel, ob dies KI ist oder nicht, daher besteht die Möglichkeit, dass der Titel falsch ist ... Ich habe versucht, einen professionellen Studenten-ChatBot zu erstellen, indem ich die Bemerkungen von Twitter eines professionellen Studenten gesammelt habe. ↓ Wenn Sie so etwas auf Slack sagen, wird ein professioneller Student antworten.
Inhouse Slack hat einen Bot-Kanal für einen bestimmten Blogger erstellt. Wenn Sie danach fragen, können Sie sagen, dass Sie ChatBot über Twitter erstellen. Es bleibt nichts anderes übrig, als Chatbot von Twitter eines professionellen Studenten zu machen! Deshalb habe ich angefangen, es zu machen.
Es scheint ungefähr, dass Sie es mit dem folgenden Fluss schaffen können.
Ich habe gerade die Quelle verwendet, die mein Kollege so gemacht hat, wie sie ist, deshalb werde ich diesmal in Skip ausführlich erklären. .. .. : Schweißtropfen:
Ich möchte Elastic Search nicht auf meinem Computer ausführen, daher starte ich dieses Mal CentOS mit Vagrant und führe es dort aus.
cd <Passendes Verzeichnis>
mkdir pronama-chan-bot && cd $_
vagrant init <CentOS Box Dateiname>
vagrant up
vagrant ssh
sudo yum update -y
Danach arbeiten Sie in CentOS von ↑
Es scheint, dass Java erforderlich ist, um das später beschriebene "analysis-kuromoji" zu installieren. Installieren Sie es also
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
Volltextsuchmaschine von Elastic (ein Mechanismus zum Durchsuchen von Dokumentdaten einschließlich des Zielworts aus einer großen Menge von Dokumentdaten)
Installation unter Bezugnahme auf hier
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
#Installieren Sie kuromoji für die Volltextsuche auf Japanisch
sudo /usr/share/elasticsearch/bin/plugin install analysis-kuromoji
#Eine erweiterte Version des ipa-Wörterbuchs namens neologd? Installieren Sie, weil es Toyara verwendet
sudo /usr/share/elasticsearch/bin/plugin install org.codelibs/elasticsearch-analysis-kuromoji-neologd/2.4.1
#Ein Plug-In, mit dem Sie die Ergebnisse in einem Webbrowser anzeigen können
sudo /usr/share/elasticsearch/bin/plugin install polyfractal/elasticsearch-inquisitor
#Ein Plug-In, das die elastische Suche überwachen kann
sudo /usr/share/elasticsearch/bin/plugin install royrusso/elasticsearch-HQ
- Die Erklärung für jedes Plug-In wurde von Google geschrieben, daher kann es falsch sein, m (_ _) m
sudo vi /etc/elasticsearch/elasticsearch.yml
Geändert wie folgt
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
Starteinstellungen
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
Verwenden Sie die Twitter-API-Bibliothek von Python mit dem Namen tweepy, um die vergangene Zeitleiste abzurufen und in der Datenbank zu speichern.
Ungefähres Bild.py
#Twitter API-Einstellungen
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
#Erfassung von TL (führen Sie die folgenden Schritte aus, bis alle TLs erfasst werden können)
statuses = api.user_timeline('pronama', max_id = None, count = 200)
#Verarbeiten Sie die erfassten Daten für den DB-Speicher
#Kürzung
#Speichern Sie die erfasste TL in der DB
#Kürzung
OK, wenn Sie den JSON-Satz in localhost: 9200 / _template / <template_name>
einfügen
Der Indexname wird in "Vorlage" und "Kuromoji" in "Tokenizer" festgelegt. Ich bin mir noch nicht sicher, also werde ich später nachforschen (Flagge nicht zu)
LÖSCHEN localhost: 9200 / <Indexname>
und es ist OK
Konvertieren Sie DB-Daten mit Python in json
POST mit localhost: 9200 / <Indexname> / language / _bulk --data-binary <json-Daten>
Die elastische Suche selbst sollte bisher funktionieren. Drücken Sie daher den folgenden Befehl und prüfen Sie, ob das Ergebnis zurückgegeben wird.
curl -XGET 'http://localhost:9200/<index_name>/_search?pretty' -d '
{
"query": {
"function_score": {
"functions": [
{
"random_score": {
"seed" : "999999999"
}
}
],
"query": {
"query_string": {
"query": "text.kuromoji:<Text>^100 OR text.2gram:$<Text>^10"
}
},
"score_mode": "multiply"
}
},
"size": 1,
"sort": {
"_score": {
"order": "desc"
}
},
"track_scores": true
}
'
Yay! !! Aus irgendeinem Grund lautet die Antwort von "Yaho" "Ich habe es geschafft!", Aber es scheint zu funktionieren!
Jetzt richten wir dies als SlackBot ein.
Registrieren Sie den Bot-Benutzer unter [Konfiguration hinzufügen] unter hier. Geben Sie jeden Artikel entsprechend ein. Registrieren Sie sich diesmal mit dem Namen "@pronama_chan".
Vergessen Sie nicht, das auf dem nächsten Bildschirm angezeigte "API-Token" zu notieren.
Erstellen Sie einen Kanal aus Slack.
Vergessen Sie nicht, das in ↑ erstellte @ pronama_chan
einzuladen.
Erstellen Sie einen Slack Bot mit der Python-Bibliothek slackbot.
Dies ist auch ein grobes Bild.py
from slackbot.bot import Bot
from slackbot.bot import respond_to,default_reply
bot_response(userid, word):
#POST zur elastischen Suche
response = requests.post(
'http://{}/{}/_search'.format(hostname, index_name),
<JSON-Zeichenfolge, die in die aus dem Wort generierte elastische Suche geworfen werden soll>.encode('utf-8'))
#Von dem, was gepostet wurde
return <Extrahierter Zeichenkettenschlag aus Antwort>
@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━━━ ヽ (∀ ゚) Menschen (゚ ∀ ゚) Menschen (゚ ∀) ノ ━━━ !!
Ich bin ein Anfänger in KI in einem Webshop, aber ich habe es geschafft, einen professionellen Studenten-Chatbot zu machen. Es macht Spaß, ist aber anstrengend, Techniken zu verwenden, die Sie normalerweise nicht verwenden. .. ..
Gut!
Recommended Posts