BellAE documentation

download BellAE documentation

of 19

description

Detailed structure of BellAE algorithms & usage.

Transcript of BellAE documentation

  • 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