[PYTHON] Bestimmen Sie die Authentizität von veröffentlichten Artikeln durch maschinelles Lernen (Google Prediction API).

Übersicht Ich kann dem Inhalt der Mundpropaganda nicht vertrauen. Ich dachte, es wäre interessant, wenn ich die Echtheit der veröffentlichten Inhalte durch maschinelles Lernen beurteilen könnte. Verwenden Sie die Google Prediction-API, um die Authentizität Ihres Beitrags zu ermitteln.

Voraussetzungen ・ Auf der Google Cloud Platform registriert (zunächst kostenlos verfügbar) -Erstellen eines Cloud Platform Console-Projekts (Abrufen einer Projekt-ID) - Sie haben Prediction und Google Cloud Storage API für Ihr Projekt aktiviert. ・ Eimererstellung - Laden Sie Trainingsdaten in den Cloud-Speicher hoch. ・ Modellname definieren -Get API-Authentifizierungsdatei (client_secrets.json) ↓ Wenn Sie es einmal mit der Google Prediction-API betrachten, können Sie das gesamte Bild sehen. https://cloud.google.com/prediction/docs/quickstart?hl=ja

Sequenzdiagramm

Screenshot 2017-05-20 13.05.20.png

prediction_service.py Ausführungsbefehl:
python prediction_service.py "k_prediction/language.txt" "language-identifier" "Projekt<img width="841" alt="Screenshot 2017-05-20 13.05.20.png " src="https://qiita-image-store.s3.amazonaws.com/0/95254/cc3adb89-1330-77e9-bf2a-f32fa94f5b55.png ">
ICH WÜRDE"

Führen Sie die Stapelverarbeitung aus (Prediction_service.py) ``` #Datei: Vorhersage_service.py

#!/usr/bin/env python

-- coding: utf-8 --

Copyright 2014 Google Inc. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

"""Simple command-line sample for the Google Prediction API Command-line application that trains on your input data. This sample does the same thing as the Hello Prediction! example. You might want to run the setup.sh script to load the sample data to Google Storage. Usage: $ python prediction_service.py "bucket/object" "model_id" "project_id" "my-xxxxx.json" You can also get help on all the command-line flags the program understands by running: $ python prediction_service.py --help To get detailed log output run: $ python prediction_service.py --logging_level=DEBUG """ from future import print_function

author = ('[email protected] (Joe Gregorio), ' '[email protected] (Marc Cohen)')

import argparse import os from pprint import pprint as pp import sys import time import MySQLdb

sys.path.append( os.path.join(os.path.dirname(os.path.realpath(file)), 'lib') )

import httplib2 from apiclient import discovery from apiclient import sample_tools from oauth2client import client from oauth2client.service_account import ServiceAccountCredentials from googleapiclient import discovery from oauth2client import tools

Time to wait (in seconds) between successive checks of training status.

SLEEP_TIME = 10 scopes=['https://www.googleapis.com/auth/prediction','https://www.googleapis.com/auth/devstorage.read_only']


 → 1. Definieren Sie Authentifizierungsinformationen

#Declare command-line flags. argparser = argparse.ArgumentParser(add_help=False) argparser.add_argument('object_name', help='Eimername/hoge.txt(Trainingsdaten)') argparser.add_argument('model_id', help='Modell-ID') argparser.add_argument('project_id', help='Projekt-ID') argparser.add_argument('credential', help='client_secrets.json')

def print_header(line): '''Format and print header block sized to length of line''' header_str = '=' header_line = header_str * len(line) print('\n' + header_line) print(line) print(header_line)

def main(argv):

create flags

parents=[argparser] parent_parsers = [tools.argparser] parent_parsers.extend(parents) parser = argparse.ArgumentParser( description=doc, formatter_class=argparse.RawDescriptionHelpFormatter, parents=parent_parsers) flags = parser.parse_args(argv[1:]) credential_file = os.path.join(os.path.dirname(os.path.realpath(file)), flags.credential) credentials = ServiceAccountCredentials.from_json_keyfile_name( credential_file, scopes=scopes)

http = credentials.authorize(http = httplib2.Http()) service = discovery.build('prediction', 'v1.6', http=http)

 → 2. Greifen Sie auf die Google Prediction API zu

try: # Get access to the Prediction API. papi = service.trainedmodels()

→ 3. List models.

# List models.
print_header('Fetching list of first ten models')
result = papi.list(maxResults=10, project=flags.project_id).execute()
print('List results:')
pp(result)
→ 4. Start training request on a data set.

# Start training request on a data set.
print_header('Submitting model training request')
body = {'id': flags.model_id, 'storageDataLocation': flags.object_name}
start = papi.insert(body=body, project=flags.project_id).execute()
print('Training results:')
pp(start)
→ 5. wait for the training to complete.

# Wait for the training to complete.
print_header('Waiting for training to complete')
while True:
  status = papi.get(id=flags.model_id, project=flags.project_id).execute()
  state = status['trainingStatus']
  print('Training state: ' + state)
  if state == 'DONE':
    break
  elif state == 'RUNNING':
    time.sleep(SLEEP_TIME)
    continue
  else:
    raise Exception('Training Error: ' + state)

  # Job has completed.
  print('Training completed:')
  pp(status)
  break
→ 6. Describe model

# Describe model.
print_header('Fetching model description')
result = papi.analyze(id=flags.model_id, project=flags.project_id).execute()
print('Analyze results:')
pp(result)
 → 7. Holen Sie sich die vorherzusagenden Daten aus der Datenbank

#DB-Aufruf
print('================')
print('Holen Sie sich die zu prognostizierenden Daten aus der Datenbank')
print('================')

if __name__ == "__main__":

  connector = MySQLdb.connect(host="??????", db="??????", user="??????", passwd="??????", charset="utf8")
  cursor = connector.cursor()

  sql = "SELECT id,message FROM `posts` WHERE id = (select MAX(id) from posts)"
  cursor.execute(sql)
  records = cursor.fetchall()
  for record in records:
      print (record[0])
      record_id=record[0]
      record_1=record[1].encode('utf-8')
  cursor.close()
  connector.close()
  #tst

# Make some predictions using the newly trained model.
print_header('Making some predictions')
for sample_text in [record_1]:
  body = {'input': {'csvInstance': [sample_text]}}
  result = papi.predict(
    body=body, id=flags.model_id, project=flags.project_id).execute()
  print('Prediction results for "%s"...' % sample_text)
  pp(result)

  import json
  array = json.dumps(result)
  data=json.loads(array)
  data2 = data['outputMulti']
  print(data2)
 → 8. Antwortdaten von der API anzeigen

  print('================')
  print('Antwortdaten von der API anzeigen')
  print('================')
  print(data2[0]['label'])
  print(data2[0]['score'])
  print(data2[1]['label'])
  print(data2[1]['score'])
  data_score=float(data2[0]['score'])-float(data2[1]['score'])
 → 9. Beurteilen Sie die Antwortdaten aus der API

  print('================')
  print('Beurteilen Sie die Antwortdaten von der API')
  print('================') 
  if data_score > 0 :
    pacentage=float(data2[0]['score'])*100
        print( "Diese Nachricht ist'"+str(pacentage)+"%''true'ist.")
        evaluate = data2[0]['label']
    score = data2[0]['score']
  else: 
    pacentage=float(data2[1]['score'])*100
    print( "Diese Nachricht ist'"+str(pacentage)+"%''false'ist.") 
        evaluate = data2[1]['label']
        score = data2[1]['score']
        print(record_id)
   #DB-Aufruf
 → 10. Reflektieren Sie das Ergebnis in der Datenbank

print('================')
print('Reflektieren Sie das Ergebnis in der Datenbank')
print('================')

if __name__ == "__main__":
  connector = MySQLdb.connect(host="?????", db="?????", user="?????", passwd="?????", charset="utf8")
  cursor = connector.cursor()
  cursor.execute('UPDATE posts SET evaluate  = (%s) WHERE id = (%s)',([evaluate],record_id))
  cursor.execute('UPDATE posts SET score  = (%s) WHERE id = (%s)',([score],record_id))
  connector.commit()
  connector.close()

if name == 'main': main(sys.argv)


 → 11. Spiegeln Sie das in der Datenbank gespeicherte Beurteilungsergebnis in dem neu veröffentlichten Artikel der WEB-Anwendung wider.

 Referenzseite
https://github.com/google/google-api-python-client/tree/master/samples/prediction

 <h2> Vorbereitung </ h2>
 -Erstellen eines Cloud Platform Console-Projekts (Abrufen einer Projekt-ID)
 - Sie haben Prediction und Google Cloud Storage API für Ihr Projekt aktiviert.
 ・ Eimererstellung
 - Laden Sie Trainingsdaten in den Cloud-Speicher hoch.
 ・ Modellname definieren
 -Get API-Authentifizierungsdatei (client_secrets.json)
https://cloud.google.com/prediction/docs/quickstart?hl=ja

 <h3> So erhalten Sie client_secrets.json </ h3>
 Ich habe c verwendet, um die API-Authentifizierung durchzuführen.
 Ich werde kurz die Prozedur zum Erstellen von client_secrets.json beschreiben.

 Verfahren
 → Registrieren Sie das Projekt in der Google Developer Console
 → Aktivieren Sie die Google Kalender-API über "API und Authentifizierung" → "API" auf der linken Seite
 → Drücken Sie links unter "API und Authentifizierung" → "Anmeldeinformationen" auf "Neue Client-ID erstellen" → "Installierte Anwendungen (andere)" und "JSON herunterladen" und speichern Sie diese als client_secrets.json.

Dateiname: Client_secrets.json

{ "web": { "client_id": "?????", "client_secret": "?????", "redirect_uris": [], "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token" } }

 <h3> Trainingsdaten erstellen </ h3>
 Was sind Trainingsdaten?
 Dies sind die Daten, die die Grundlage für die Beurteilung durch maschinelles Lernen bilden.
 Bei der Erläuterung der Trainingsdaten werde ich kurz das Lernen von Gelegenheiten erläutern.
 Es gibt ungefähr zwei Arten von Problemen, die beim maschinellen Lernen behandelt werden: "überwachtes Lernen" und "unbeaufsichtigtes Lernen".
 Die Google Prediction API ist das frühere überwachte Lernen.
 Beim überwachten Lernen besteht der Zweck darin, die Ausgabe (unsichtbar) für die angegebenen Eingabedaten (sichtbar) korrekt vorherzusagen. Die Maschine weiß jedoch nicht, was ausgegeben werden soll, selbst wenn die Eingabe nur eingegeben wird.
 Daher werden mehrere Fälle von Eingabe / Ausgabe-Paaren angegeben, die als Trainingsdaten (oder Lehrerdaten) bezeichnet werden.
 Mit anderen Worten, bitten Sie die Menschen, einige Beispiele zu nennen, die Sie löschen können, wenn Sie dies tun können.
 Auf dieser Grundlage soll eine Maschine (= Funktion) erstellt werden, die die richtige Ausgabe ausgibt, wenn neue Eingabedaten eintreffen.
 Wenn Sie genau die gleiche Eingabe erhalten, die Sie bisher gesehen haben, scheint es natürlich ausreichend zu sein, diejenige mit der gleichen Eingabe aus den Trainingsdaten auszuwählen und die Ausgabe dafür auszugeben, aber mittel Einige Eingabedaten werden in Ihren Trainingsdaten nicht angezeigt.
 Für solche Daten ist es eine Frage des überwachten Lernens, ein Lernverfahren (Lernalgorithmus) zu entwerfen, das gegebene Trainingsdaten verallgemeinert und die Fähigkeit maximiert, mit Daten unbekannter Ausgabe umzugehen. Dies ist das Hauptthema.

 <h3> Trainingsdaten </ h3>
 Wie oben erläutert, handelt es sich hierbei um einen Datensatz, der Beispiele für Eingabe- / Ausgabepaare enthält.
 Es gibt true zurück, wenn das Zeichen hoge eingegeben wird, und false, wenn das Zeichen hoge_false eingegeben wird.

train.txt

"true","hoge" "true","hoge" "true","hoge" "true","hoge" "true","hoge" "true","hoge" "true","hoge" "true","hoge" "true","hoge" "true","hoge" "false","hoge_false" "false","hoge_false" "false","hoge_false" "false","hoge_false" "false","hoge_false" "false","hoge_false" "false","hoge_false" "false","hoge_false"


 <h2> Umgebungskonstruktion </ h2>
 Beschreibt die Informationen, die zum Erstellen einer Entwicklungsumgebung erforderlich sind
 <h3> Python-Umgebung </ h3>

yum install mysql-server mysql mysql-devel

chkconfig mysqld on

chkconfig --list | grep mysql

service mysqld start

exit #<= ec2-Zurück zum Benutzer

 <h3> Installieren Sie die erforderlichen Tools (z. B. gcc), bevor Sie MySQL-Python </ h3> installieren

$ sudo yum groupinstall "Development Tools"​ Wenn es nicht funktioniert $sudo yum install gcc  MySQL-Python-Installation: ​ $ pip install MySQL-python


 <h3> Überprüfen Sie dies mit dem MySQL-Verbindungsskript </ h3>

file name : test_connection_mysql.py

import _mysql import sys from pprint import pprint as pp ​ try: con = _mysql.connect('localhost', 'root', 'root', 'prediction_dev') #Hier bearbeiten help(con) except _mysql.Error, e: print "Error %d: %s" % (e.args[0], e.args[1]) sys.exit(1) finally: if con: con.close()

$ python test_connection_mysql.py <_mysql.connection open to 'localhost' at 265f940>

Sie können ohne Fehler eine Verbindung herstellen.

 Damit ist die Umgebungskonstruktion für maschinelles Lernen mit Python abgeschlossen.


Recommended Posts

Bestimmen Sie die Authentizität von veröffentlichten Artikeln durch maschinelles Lernen (Google Prediction API).
Ich habe versucht, die Vorhersage-API des maschinellen Lernmodells von WordPress aus aufzurufen
[Python] Summiert automatisch die Gesamtzahl der von Qiita mithilfe der API veröffentlichten Artikel
Spielen Sie Musik, indem Sie auf die inoffizielle API von Google Play Music klicken
Vorhersage des Vorhandenseins oder Nichtvorhandenseins von Untreue durch maschinelles Lernen
Ein Beispiel für einen Mechanismus, der eine Vorhersage von HTTP aus dem Ergebnis des maschinellen Lernens zurückgibt
Zusammenfassung der bisher veröffentlichten Artikel (Statistik / Maschinelles Lernen / Mathematik usw.)
Ermitteln Sie die Anzahl der PVs von Qiita-Artikeln, die Sie mit API veröffentlicht haben
[Qiita API] [Statistik • Maschinelles Lernen] Ich habe versucht, die bisher veröffentlichten Artikel zusammenzufassen und zu analysieren.
Ein-Klick-Datenvorhersage für das Feld, realisiert durch vollautomatisches maschinelles Lernen
Python-Lernnotiz für maschinelles Lernen von Chainer bis zum Ende von Kapitel 2
Holen Sie sich eine Liste der Artikel, die von Benutzern mit Python 3 Qiita API v2 veröffentlicht wurden
Ich habe versucht, das Vorhandensein oder Nichtvorhandensein von Schnee durch maschinelles Lernen vorherzusagen.
Über die Entwicklungsinhalte des maschinellen Lernens (Beispiel)
Analyse der gemeinsamen Raumnutzung durch maschinelles Lernen
[Übersetzung] scikit-learn 0.18 Einführung in maschinelles Lernen durch Tutorial scikit-learn
Implementierung eines Modells, das Wechselkurse (Dollar-Yen-Kurs) durch maschinelles Lernen vorhersagt
Angemessene Preisschätzung von Mercari durch maschinelles Lernen
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 2
Holen Sie sich das Bild von "Suzu Hirose" von Google Bildersuche.
Eindrücke vom Udacity Machine Learning Engineer Nano-Abschluss
Installation von TensorFlow, einer Bibliothek für maschinelles Lernen von Google
Über das Testen bei der Implementierung von Modellen für maschinelles Lernen
Vorhersage von Zeitreihendaten durch AutoML (automatisches maschinelles Lernen)
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
Aufzeichnung der ersten Herausforderung des maschinellen Lernens mit Keras
[Python] Ermittelt die Anzahl der Aufrufe aller veröffentlichten Artikel
Nach dem Bild des Shiba-Hundes zu urteilen, indem man tief lernt, ob es mein Kind ist (1)
Eine konkrete Methode zur Vorhersage von Pferderennen und zur Simulation der Wiederherstellungsrate durch maschinelles Lernen
Ich habe versucht, die Yin- und Yang-Klassifikation hololiver Mitglieder durch maschinelles Lernen zu überprüfen
Ich habe mit Docker eine API erstellt, die den vorhergesagten Wert des maschinellen Lernmodells zurückgibt
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Regression zu bewerten
Informationen zum Kamerawechselereignis der Google Maps Android API
[Empfohlenes Tagging mit maschinellem Lernen # 1] Scraping von Hatena-Blog-Artikeln
Das Ergebnis des maschinellen Lernens von Java-Ingenieuren mit Python www
Umfrage zum Einsatz von maschinellem Lernen in realen Diensten
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Klassifizierung zu bewerten
So erhöhen Sie die Anzahl der Datensatzbilder für maschinelles Lernen
Ich möchte die Authentizität eines Elements eines numpy-Arrays bestimmen
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen
Die Geschichte des Erstellens einer Datenbank mithilfe der Google Analytics-API
Grundlagen des maschinellen Lernens (Denkmal)
Bedeutung von Datensätzen für maschinelles Lernen
4 [/] Vier Arithmetik durch maschinelles Lernen
Eine Geschichte, die mit der Installation der maschinellen Lernbibliothek JAX zusammenhängt
[Maschinelles Lernen] Überprüfen Sie die Leistung des Klassifikators anhand handgeschriebener Zeichendaten
Wie nutzt man maschinelles Lernen für die Arbeit? 01_ Den Zweck des maschinellen Lernens verstehen
Memorandum of Scraping & Machine Learning [Entwicklungstechnik] von Python (Kapitel 4)
Memorandum of Scraping & Machine Learning [Entwicklungstechnik] von Python (Kapitel 5)
Wie beurteilt die COTOHA API das Gefühl "der Mond ist schön"?
Bewerten Sie die Genauigkeit des Lernmodells durch einen Kreuztest von scikit learn
Versuchen Sie, das Triplett des Bootsrennens vorherzusagen, indem Sie das Lernen bewerten
Python-Anfänger nutzen die inoffizielle API von Google Play Music, um Musik abzuspielen
Feature Engineering für maschinelles Lernen ab Teil 1 Google Colaboratory - Validierung und Diskriminierung von Zähldaten
Versuchen Sie, den Wert des Wasserstandsmessers durch maschinelles Lernen unter Verwendung der offenen Daten von Data City Sabae vorherzusagen