La începutul anului 2011, un sistem informatic de înțelegere a limbajului natural, numit IBM Watson, a reușit să bată toți concurenții umani într-un spectacol de joc quiz-numit Jeopardy! A fost un eveniment istoric și a fost probabil punctul în care publicul larg a început să-și dea seama că inteligența artificială nu mai era chestiunea science fiction.
În acel moment, Watson a fugit pe un supercomputer și nu putea decât să răspundă la întrebări despre întrebări. Astăzi, totuși, a fost transformat într-un sistem mult mai versatil, și o mulțime de capabilități sunt disponibile peste nor.
În această serie de tutoriale, vă vom arăta cum să utilizați diverse servicii oferite de IBM Watson Developer Cloud în aplicațiile Android. În acest tutorial introductiv, veți învăța cum să lucrați cu IBM Bluemix, Watson Java SDK și serviciul de analizoare ton Watson pentru a crea o aplicație Android simplă care poate identifica emoțiile prezente în orice text.
Pentru a putea urmări, veți avea nevoie de:
Serviciile Watson pot fi accesate numai prin platforma cloud IBM Bluemix. Aceasta înseamnă că le puteți utiliza în aplicația dvs. numai după ce le-ați activat în consola Bluemix și ați obținut acreditările necesare.
Începeți prin conectarea la consola și navigând la Servicii> Watson.
Apoi, apăsați pe Creați serviciul Watson pentru a vedea toate serviciile Watson disponibile pentru dvs..
Pentru moment, deoarece suntem interesați doar de analizarea tonului emoțional în textul scris, selectați Analizor de tonuri serviciu.
În ecranul următor, schimbați numele serviciului la ceva semnificativ și apăsați pe Crea buton.
Serviciul de analiză a tonurilor va fi acum activat pentru contul dvs. și se va genera un set de acreditări de autentificare. Pentru a vedea ce acreditări sunt, deschideți Serviciul de acreditare și selectați Vizualizați acreditările acțiune.
Salvați conținutul documentului JSON într-un fișier de pe computer. Îți sugerez să numești dosarul credentials.json.
SDK-ul Watson Java vă face foarte ușor să comunicați cu orice serviciu Watson. Pentru a putea să o utilizați în proiectul dvs., adăugați-l ca pe un compila
dependența în aplicaţia
ale modulului build.gradle fişier.
compilați com.ibm.watson.developer_cloud: java-sdk: 3.7.2 '
Pentru acest tutorial, veți avea nevoie de încă două biblioteci: Commons IO, pentru a simplifica operațiile de fișiere IO și Android Design Support, pentru a putea utiliza câteva widget-uri pentru Material Design. Adăugați-le și la fel compila
dependențe.
compilați comuni-io: commons-io: 2.5 'compilați com.android.support:design:23.4.0'
Veți avea nevoie de asemenea INTERNET
permisiunea de a comunica cu serverele IBM, deci adăugați următoarea linie la AndroidManifest.xml fişier:
În cele din urmă, apăsați pe Sincronizați acum pentru a finaliza configurația proiectului.
Pentru a comunica cu serviciul de analiză a tonurilor Watson, trebuie să utilizați ToneAnalyzer
clasă. Constructorul său așteaptă ca argument argumentul unui șir de date, pe care îl va utiliza pentru a determina automat versiunea serviciului de analizoare ton.
final ToneAnalyzer tonAnalyzer = nou ToneAnalyzer ("2017-07-01");
Rețineți că data ar trebui să fie întotdeauna un șir static. Acest lucru vă ajută să vă asigurați că aplicația dvs. nu se oprește atunci când o nouă versiune a serviciului introduce modificări de rupere.
ToneAnalyzer
instanță trebuie să fie configurat să utilizeze acreditările dvs., deci mișcați credentials.json fișierul pe care l-ați creat mai devreme în acest tutorial, la proiectul dvs. res / raw pliant.
Apoi, trebuie să extrageți valorile nume de utilizator
și parola
chei din fișierul JSON. Următorul cod vă arată cum să faceți acest lucru rapid folosind IOUtils
și obiect JSON
clase:
Certificările JSONObject = noul JSONObject (IOUtils.toString (getResources (). OpenRawResource (R.raw.credentials), "UTF-8")); // Convertiți fișierul într-un obiect JSON // Extrageți cele două valori String username = credentials.getString ("username"); String parola = credentials.getString ("parola");
Acum puteți completa configurația ToneAnalyzer
instanță apelând setUsernameAndPassword ()
metodă.
toneAnalyzer.setUsernameAndPassword (nume de utilizator, parolă);
Aplicația noastră are nevoie de o interfață care să permită utilizatorului să introducă câteva propoziții și să apese un buton pentru a începe analiza tonurilor. Cu alte cuvinte, trebuie să creați acum un aspect simplu care să conțină un Editează textul
widget și a Buton
widget.
Poți, opțional, să arunci și a TextInputLayout
pentru a vă asigura că Editează textul
widget-ul respectă instrucțiunile din Material Design.
În consecință, adăugați următorul cod în fișierul XML de aspect al activității dvs .:
Analiza tonului trebuie să înceapă de îndată ce utilizatorul apasă butonul. Prin urmare, trebuie să adăugați un handler de evenimente pe clic la Buton
widget folosind setOnClickListener ()
metodă. Înainte de a face acest lucru, cu toate acestea, nu uitați să obțineți o referință la widget folosind findViewById ()
metodă.
Buton analyzeButton = (buton) findViewById (R.id.analyze_button); analyzeButton.setOnClickListener (noul View.OnClickListener () @Override public void onClick (Vizualizare vizualizare) // Mai mult cod aici);
În interiorul handler-ului evenimentului on-click, primul lucru pe care trebuie să-l faceți este să determinați ce a introdus utilizatorul în Editează textul
widget folosind getText ()
metodă.
EditareText userInput = (EditText) findViewById (R.id.user_input); ultimul String textToAnalyze = userInput.getText (). toString ();
Ca toate serviciile Watson, serviciul de analizoare ton oferă multe caracteristici diferite. De exemplu, ea poate identifica emotiile, stilul limbajului și tendințele sociale în ceea ce îi privește. De asemenea, poate funcționa cu documente JSON, text simplu și HTML. Prin urmare, pentru a le utiliza eficient, trebuie să specificați explicit caracteristicile de care aveți nevoie utilizând a ToneOptions
obiect, care poate fi ușor creat folosind ToneOptions.Builder
clasă.
Pentru moment, vom folosi serviciul numai pentru a enumera toate emoțiile prezente într-un șir de text simplu. Iată cum creați a ToneOptions
obiect spunând astfel:
Opțiunile ToneOptions = nou ToneOptions.Builder () .addTone (Tone.EMOTION) .html (false) .build ();
Acum puteți compune o solicitare de analiză a sunetului prin apelarea getTone ()
care se așteaptă ca un șir care conține textul să fie analizat și a ToneOptions
obiect ca singurele sale argumente. Pentru a executa cererea în mod asincron, trebuie de asemenea să apelați Puneți în coadă ()
metodă, care ia o ServiceCallback
instanță ca argument.
tonAnalyzer.getTone (textToAnalyze, opțiuni) .enqueue (nou ServiceCallback() @Override public void onResponse (răspuns ToneAnalysis) // Mai mult cod aici @Override public void onFailure (Excepție e) e.printStackTrace (); );
În interiorul onResponse ()
metodă a ServiceCallback
clasa, aveți acces la un ToneAnalysis
obiect. Prin apelarea lui getDocumentTone ()
, puteți determina tonul general al textului pe care l-ați transmis serviciului.
Valoarea returnată a getDocumentTone ()
este o metodă ElementTone
obiect care conține o listă de categorii de tonuri. Pentru că am afirmat mai devreme că nu ne interesează decât categoria de emoții, lista va conține doar un singur element. Prin urmare, iată cum extragi scorurile pentru toate emoțiile pe care le-a detectat serviciul:
Listăscoruri = answer.getDocumentTone () .getTones () .get (0) .getTones ();
Așa cum v-ați putea aștepta, a ToneScore
obiect reprezintă o singură emoție. Are o Dubla
conținând scorul real și a Şir
spunându-ți numele emoției. Dacă scorul este mai mare de 0,5, înseamnă că există o șansă bună ca emoția să fie exprimată în text.
Să alegem acum numai acele emoții ale căror scoruri sunt mai mari de 0,5 și să le folosim pentru a crea un mesaj care poate fi afișat utilizatorului folosind Paine prajita
.
String detectedTones = ""; pentru (scor ToneScore: scoruri) if (score.getScore ()> 0.5f) detectTones + = score.getName () + ""; String final toastMessage = "Următoarele emoții au fost detectate: \ n \ n" + detectedTones.toUpperCase ();
Deoarece onResponse ()
metoda rulează pe fir diferit, trebuie să vă asigurați că creați și afișați Paine prajita
numai după ce a sunat runOnUiThread ()
metodă.
runOnUiThread (noul Runnable () @Override public void run () Toast.makeText (getBaseContext (), toastMessage, Toast.LENGTH_LONG) .show (););
Aplicația este acum gata. Dacă o rulați, introduceți câteva propoziții și începeți analiza, veți putea vedea cu precizie că Watson identifică cu exactitate emoțiile prezente în textul dvs..
În acest tutorial, ați creat o aplicație Android care poate utiliza serviciul de analiză a tonurilor IBM Watson pentru a îndeplini sarcina complexă de a ghici emotiile exprimate într-o bucată de text. Ați învățat, de asemenea, elementele de bază ale utilizării Watson Java SDK și a consolei IBM Bluemix.
Pentru a afla mai multe despre acest serviciu, vă puteți referi la documentația oficială.
Între timp, puteți să consultați unele dintre celelalte postări ale noastre despre utilizarea mașinilor de învățare pentru aplicațiile dvs. Android chiar aici pe Envato Tuts+!