Team: InfO(1) Members: Postvaru tefan Ionete Snziana Supervisor: Lica Daniela Institution: Colegiul Naional Ion Luca Caragiale, Ploieti
Cuprins
I. Ce este bellAE? A. Abstract B. Concret
II. Ce trebuie sa ai si sa cunosti? A. Cerinte B. Interfata: 1. Data Base 2. Business settings 3. Advanced settings 4. Footer C. Comenzi: 1. Search 2. Price 3. Evaluate 4. Weather
III. In spatele scenei A. Engine-ul 1. Search 2. Price 3. Evaluate 4. Weather
B. Control GSM IV. Note finale... A. Puncte de lucru viitoare B. Unelte externe utilizate C. Referinte
1
I. Ce este bellAE?
A. Abstract Secolul 21 a dovedit ca informatia este cheia succesului in orice domeniu. Informatia reprezinta influenta, bani, viitor. Multumita Internetului, utilizatorii lui pot accesa aproape orice informatie de care au nevoie. A mai ramas doar o problema... il poti accesa intr-adevar oricand vrei, cat de rapid iti doresti? Desigur, un smartphone cu acces la internet aproape ca poate rezolva aceasta problema, dar hai sa ne uitam la statistici. Pana in 2015, numarul utilizatorilor de smartphone-uri va atinge 2 miliarde. Este un numar rezonabil, dar din acestia, cati vor avea acces rapid la internet 24/7? Bell Answer Engine [bellAE] vine in ajutorul acestei probleme. Obiectivul lui principal este sa aduca informatia de pe Internet celor 5.6 miliarde de persoane cu telefon mobil la momentul actual.
B. Concret Tinta aplicatiei este de a da raspunsul la interogarile utilizatorilor, intr-un timp foarte scurt, oriunde se vor afla acestia. Pe de o parte, bellAE va elimina nevoia unei conexiuni la internet si pe de alta parte va salva timp, fara a mai fi nevoie de a naviga prin toate site-urile returnate de motoarele de cautare.
Aplicatia propriu-zisa are doua module: unul care opereaza cu mesajele de la utilizatori, si motorul care evalueaza si da raspunsuri pentru fiecare intrebare.
2
Asa cum se vede in schema de mai sus, serverul principal este format dintr-un PC si un modem GSM/telefon mobil. Dupa setarea programului pe PC, fiecare persoana cu un telefon mobil poate primi informatia dorita in mai putin de 10 secunde cu doar un SMS.
3
II. Ce trebuie sa ai si sa stii? A. Cerinte
Un PC/laptop cu .NET framework ruland pe el si C++ redistribuibile
Un modem GSM sau un telefon mobil compatibil cu comenzile AT (si driverele corespunzatoare)
4
B. Interfata
Dup ace programul incarca preferintele si setarile tale ( ), Va aparea fereastra principala. Contine 3 tab-uri principale:
1. Baza de date Din aceasta sectiune iti poti administra baza de date. Pentru asta trebuie sa setezi functii definite pentru tine:
5
Adauga intrari (ctrl+a)
Sterge intrarile selectate (ctrl+d)
Editeaza intrarile selectate (ctrl+e)
Formatul standard al unei intrari este numar_telefon;nume;numar _mesaje;zi/luna/an Fiecare intrare trebuie scrisa pe alt rand.
6
Adauga un numar de mesaje contactelor selectate (ctrl+ 1/2/3/4) Pachete predefinite (din business settings) -adauga numarul dorit de mesaje (poate fi, de asemenea, si un numar negativ)
Filtreaza intrarile Intrarile vor fi automat filtrate pe masura ce scrii
2. Business settings
Aici poti sa iti setezi preferintele, in caz ca folosesti programul in cadrul afacerilor. Poti seta 4 pachete de mesaje, precum si perioada lor de valabilitate. Termenul limita se reseteaza cu fiecare plata (adaugare de mesaje).
7
3. Advanced settings
Aceste setari sunt in relatie directa cu motorul. Prin urmare, doar un utilizator avansat ar trebui sa le schimbe in anumite circumstante.
1. cat de des ar trebui motorul sa verifice daca sunt mesaje noi 2. cat de mult poate motorul sa proceseze un site 3. pe cate site-uri se face cautarea 4. limita caracterelor dintr-un SMS 5. sursa de date 6. daca sa foloseasca sau nu baza de date WolframAlpha 7. cheia accesarii bazei de date WolframAlpha
8
4. Footer
a) Modem settings
Ports number: numarul porturilor care vor fi scanate
Baud rate: the number of times per second that the carrier signal value changes state
Timeout: the timeout of the communication
Storage: locatia SMS-urilor
Get available ports: preia o lista cu device-urile conectate si porturile corespunzatoare
SMSC address: centrul de mesagerie folosit de modem
Numarul mesajelor din coada
Deschide setarile modemului (rosu - deconectat verde - conectat)
Mesaje ramase / totalul mesajelor (click configureaza)
Sterge mesajele din coada
Modemul current conectat
Porneste/Opreste motorul (rosu - oprit verde - pornit)
Din acest panel poti conecta si
configura modemul.
9
b) Set available SMS
c) Message queue
d) butonul clopotel
Poti urmari cate mesaje erau cand ai incarcat cartela si cate au mai ramas.
Cand motorul este pornit, mesajele primite sunt mai intai salvate intr-o coada, apoi procesate. In anumite circumstante, poti goli aceasta coada.
Acest buton porneste si opreste motorul. Daca este configurat coresct, va face toata treaba singur cand este pornit programul.
10
C. Comenzi
Cand motorul este pornit, utilizatorii pot pune intrebarile scriind comenzile
corespunzatoare intr-un SMS si trimitandu-l la numarul modemului. Raspunsul va fi trimis
inapoi intr-un SMS (sau mai multe).
1. Search Este functia principala a motorului. Va da raspunsul unei intrebari. [nota: fraza cautata trebuie sa fie de un interes global (ex: What are the neighbors of Romania?;What was the core at match X?), nu ceva ca: What is the name of the neighbor's dog?] Format: Derivat: Search last hour Unde: - N = numarul SMS-urilor cerute (poate fi omis daca este un singur SMS => ) - intre !> si 2. Price Gaseste cele mai bune oferte existente pe internet, ale unui produs. Format: Unde: -estimated_value = o valoare eproximativa a produsului, data de utilizator -currency = moneda in care vor fi transofmate preturile
words of the question
words of the question
product
11
3. Evaluate Calculeaza rezultatul unei ecuatii valide. Format:
4. Weather Spune conditiile meteorologice si temperaturile pentru 3 zile. Format:
Unde: - T =unitatea de masura a temperaturii in care vei primi raspunsul (c sau f)
expresion
place
12
III. In spatele scenei
A. Engine-ul
Este componenta principala a aplicatiei, ce analizeaza interogarile utilizatorilor si da raspunsul aferent.
1. Search Metoda de cautare are un scop bine definit, acela de a raspunde prompt si corect la
intrebarile utilizatorilor. Pentru aceasta, engine-ul lucreaza in doua etape:
1.A) Cautare in baza de date WolframAlpha: Luand in considerare faptul ca cea mai mare cantitate de informatie interogabila se afla in aceasta baza de date, cautarea raspunsului in ea este un prim pas logic. BellAE acceseaza API-ul WolframAlpha folosing un Developer Key. In cazul in care raspunusl esta gasit aici, acesta este returnat si procesul de cautare se opreste.
13
1.B) Cautare pe Internet Este evident faptul ca baza de date WolframAlpha contine un numar limitat de raspunsuri, comparativ cu cantitatea de date existenta pe Internet. De aceea urmatorul pas este o cautare generala.
14
Etapele algoritmului:
se prelucreaza intrebarea inlaturand cuvinte de legatura,prepozitii
se preiau primele N site-uri returnate de un motor de cautare
[implicit: N=10, motor de cautare: Google]
In cadrul sursei HTML filtrata a fiecarui site se cauta aparitii ale hint-urilor [Optimizare: algoritm de cautare KMP -> O(n+m)]
pentru fiecare aparitie a hint-urilor, se decupeaza regiuni de text din jurul lor (Snippets) de dimensiunea unui SMS(160 de caractere)
pentru fiecare regiune se extrag grupe de 1 pana la 5 cuvinte(numite N-grame) pentru care se retine frecventa, distanta fata de hint-uri, rangul site-urilor din care fac parte [Optimizare: -grupele de cuvinte sunt introduse in tabele de dispersie hash, folosind o metoda adaptata a algoritmului Rabin-Karp -> O(5n) -tabelele de dispersie sunt construite pe baza unui hashing dublu, pe un vector de seturi. Complexitate teoretica de inserare,interogare: O(log(n)); in practica complexitatea tinde sa devina constanta: O(1)]
proprietatile n-gramelor sunt normalizate folosind functii logistice urmand a fi facuta o clasificare a acestora, luandu-se in considerare si frecventa lor globala(ex: conjunctia and va avea un scor nul, deoarece are o frecventa globala foarte mare)
urmeaza a fi clasificate extractele de text(Snippets) pe baza N-gramelor din acestea
in final, va fi returnat extractul cu cel mai mare scor [Nota: extractul nu va fi in intregime raspunsul la intrebare, insa etapele prezentate au ca obiectiv returnarea unui fragment de text ce contine raspunsul corect,urmand ca utilizatorii sa-l deduca]
15
2. Price Se bazeaza pe algoritmul din Unlimited Money Tracker, modulul pentru cea mai buna oferta. Sinopsis: -cauta intr-o pagina web taguri ce contin cuvinte cheie (pret,price,product,offer etc.) -decide daca textul afisat este o fraza sau nu -incearca sa determine o moneda si un pret -daca pretul trece validarea, este adaugat in lista
3. Evaluate Se foloseste un algorimt de evaluare de expresii prezent in libraria open surce: Ciloci.Flee
4. Weather Sunt preluate datele din API-ul Google Weather.
16
B. Control GSM
Toate functiile de primire,citire,trimitere de SMS-uri sunt realizate prin comenzi AT, intr-un warper pentru platforma .NET
Cum aplicatia este conceputa sa serveasca un numar mare de utilizatori, fiecare SMS este
prelucrat intr-un thread diferit, fiind astfel posibila analiza mai multor interogari in acelasi
timp.
17
IV. Note finale... A. Puncte de lucru viitoare
imbunatatirea functiei de cautare cu NLP
integrarea API-ului Facebook Graph => functie person
suport pentru modemuri multiple
extensii pentru mai multe platforme de smartphone
B. Unelte externe utilizate
WolframAlpha API [Developer Key]
Krypton Toolkit [Free]
DB4O [Open Source]
HtmlAgilityPack [Open Source]
GSM warper [Open Source]
Ciloci.Flee [Open Source]
Lucene.Net [Apache License 2.0]
C. Referinte
https://sites.google.com/site/centrulinfo1/
http://www.youtube.com/watch?v=3Rtl-SraUFc
http://www.db4o.com/
http://www.wolframalpha.com/widgets/
http://www.componentfactory.com/product?id=3
http://flee.codeplex.com/
http://htmlagilitypack.codeplex.com/
http://www.scampers.org/steve/sms/index.htm
http://incubator.apache.org/lucene.net/
cover InfoMatrixDocumentatie RO
Top Related