74
Ministerul Educatiei Nationale Universitatea „Ovidius” din Constanta Facultatea de Matematica si Informatica Master – Modelare si Tehnologii Informatice Un motor eficient de cautare in e- commerce Lucrare de disertatie Coordonator stiintific: Prof. dr. Popa Constantin Absolvent: Breda Olivian-Claudiu

Rezumat / Abstract - stirimess.files.wordpress.com€¦ · Web viewMinisterul Educatiei Nationale. Universitatea „Ovidius” din Constanta. Facultatea de Matematica si Informatica

Embed Size (px)

Citation preview

Ministerul Educatiei Nationale

Universitatea „Ovidius” din Constanta

Facultatea de Matematica si Informatica

Master – Modelare si Tehnologii Informatice

Un motor eficient de cautare in e-commerceLucrare de disertatie

Coordonator stiintific:Prof. dr. Popa Constantin

Absolvent:Breda Olivian-Claudiu

Constanta2018

Rezumat / Abstract Rezumat in limba romana: lucrarea curenta are ca tema principala motoarele de

cautare pentru magazine online. Ea e formata dintr-o aplicatie practica, care poate

prezice termeni de cautare introdusi de utilizatorul programului in mod partial eronat,

si are si facilitatea de a sorta rezultatele obtinute – o lista de laptopuri. De asemenea,

exista o parte teoretica, ce isi propune sa prezinte perspective asupra motoarelor de

cautare, trecand printr-un istoric al lor, prezentand modalitatea de functionare a unui

motor de cautare, aratand niste limitari ale motoarelor de cautare si aspecte despre

viitorul motoarelor de cautare. In lucrarea teoretica este descrisa si solutia tehnica,

care au fost scopul si obiectivul de la care am pornit, descrierea algoritmului propus.

Domeniu principal: motoarele de cautare pentru magazine online.

Domenii adiacente: e-commerce (comert electronic), programare C++, algoritmi,

inteligenta artificiala (artificial intelligence), optimizare pentru motoarele de cautare

(SEO, search engine optimization), machine learning (invatare automatizata).

Tipul lucrarii: cercetare.

English language abstract: the current paper has as its main subject search

engines for online stores. The paper consits firstly of a piece of software, which can

correct partially incorrect search terms inserted by the user of the program, and it can

also sort the final results – a list of laptops. There is also a theoretical paper, which

aims to present some perspectives on search engines, going through historical data,

presenting the functioning of a search engine, showing limitations of search engines

and aspects on the future of search engines. In the theoretical paper the technical

solution is also described, what were the aim and objective it started from, and the

description of the proposed algorithm.

Main field: search engines for online stores.

Other fields: e-commerce, C++ programming, algorithms, artificial intelligence,

search engine optimization (SEO), machine learning.

Type of work: research.

2

Cuprins

Rezumat / Abstract......................................................................................................2

Lista figurilor................................................................................................................4

Lista tabelelor..............................................................................................................4

1. Introducere...............................................................................................................5

2. Istoric si motivatie....................................................................................................9

2.1 Istoric al cautarii informatiei................................................................................9

2.2 Modalitatea de functionare a unui motor de cautare........................................17

2.3 Evaluarea eficientei unui motor de cautare......................................................19

2.4 Starea actuala a domeniului.............................................................................21

2.5 Limitarile unui motor de cautare generalist.......................................................25

2.6 Solutii potentiale pentru paginile de rezultate cautari fara niciun rezultat.........27

2.7 Viitorul motoarelor de cautare ale magazinelor online......................................28

3. Solutia propusa......................................................................................................31

3.1 Scop si obiective...............................................................................................31

3.2 Descrierea algoritmului.....................................................................................31

3.3 Utilitatea metodei..............................................................................................32

3.4 Analiza implementarii algoritmului....................................................................33

3.5 Posibilitati de extindere a algoritmului..............................................................36

4. Concluzii................................................................................................................40

Bibliografie.................................................................................................................42

Anexa 1 – masurarea complexitatii codului...............................................................45

Anexa 2 – graficul functiilor tabelului.........................................................................48

3

Lista figurilor

Figura 2.1.1 Graf directionat, reprezentand o serie de sase pagini (Langville si

Meyer, 2006)..............................................................................................................11

Figura 2.1.2 Graf pentru o retea de 4 elemente (Langville si Meyer, 2006)...............13

Figura 2.1.3 Cota de piata a cautarilor web, februarie 2018, pentru piata din SUA

(date din partea companiei Jumpshot).......................................................................16

Figura 2.2.1: Unde isi incep consumatorii din SUA cautarile de produse in online

(Keyes, 2017).............................................................................................................18

Figura 2.4.1 Analiza listei de produse a magazinelor online (Baymard.com, 2015)..24

Figura 3.4.1 Exemplu pentru numarul complex ciclomatic al lui McCabe (Tempero,

2018)..........................................................................................................................36

Lista tabelelor Tabel 2.1.1 Primele cateva iteratii ale ecuatiei anterior prezentate asupra grafului (Langville si Meyer, 2006)..........................................................................................12

Tabel 2.1.2 Cota de piata la nivel mondial, motoare de cautare (StatCounter Global Stats, 2018)................................................................................................................15

Tabel 2.4.1 Comparatie intre functiile oferite pentru diferite tipuri de cautari in unele motoare de cautare.....................................................................................................22

Tabel 2.5.1 Tipuri de continut web invizibil (Sherman si Price, 2001)..........................26

Tabel 3.4.1 Indicatori pentru a masura fiabilitatea programului propus (Littlefair, 2018)..........................................................................................................................34

4

1. Introducere Lucrarea de fata, prin continut si aplicatia realizata, se incadreaza in domeniul de

mare actualitate al motoarelor de cautare. Alegerea temei este motivata si sustinuta

de experienta de lucru de peste 10 ani in domeniu. Am putut identifica principalele

probleme ale motoarelor de cautare din magazinele online (de exemplu, o persoana

poate naviga pe site-ul Amazon si cauta o carte; unele rezultate, nerelevante, apar

mai sus ca altele, relevante, si uneori nu se obtin prin cautari rezultatele dorite).

Motivatia principala a lucrarii este data de experienta negativa avuta pe

principalele motoare de cautare pentru magazine online, fie ele din Romania sau pe

plan international. Filtrele Amazon nu functioneaza intotdeauna corect (din

perspectiva noastra), iar cautarea de produse pe site uneori nu returneaza lucrurile

potrivite (o persoana poate cauta ceva si fie nu obtine niciun fel de rezultate, fie

obtine rezultate nedorite). Iar aici este vorba de probleme pe site-ului unei companii

gigant, care a avut in 2017 vanzari de 177,9 miliarde de dolari (Kim, 2018). Intreaga

piata romaneasca de e-commerce a fost estimata de GPeC (Gala Premiilor

eCommerce, un eveniment major pentru piata de e-commerce din Romania) la 2,8

miliarde de euro (Radu, 2018), asa ca, in mod firesc, magazinele online romanesti au

avut bugete mai mici pentru investitia in motoare de cautare eficiente. Unele

probleme sunt mai mari pe site-urile romanesti de comert online. Am vrut sa aratam

o modalitate practica prin care se pot face unele imbunatatiri la un motor de cautare

cu resurse putine. Vom prezenta in lucrare inclusiv idei noi, potential utile de folosit

pentru magazinele online in viitor.

In ceea ce priveste gradul de noutate al lucrarii – solutia propusa de noi vine ca

element de noutate cu un grad de predictie asupra termenilor introdusi de utilizator.

Solutia exista deja in motoare de cautare generaliste (Google, Bing, Yahoo!, Yandex,

Baidu), sau in unele tastaturi pentru telefoanele mobile (SwiftKey pentru Android si

iOS). Ea insa nu a fost implementata in magazinele online suficient de mult. Un

exemplu foarte bun de predictie este cel oferit de tastatura de mobil a celor de la

SwiftKey. Am dorit cu programul propus de noi sa simulam unele din functionalitatile

5

de predictie pentru un eventual motor de cautare pentru produsele din magazinele

online. O mare parte din facilitatile prezentate sunt deja incluse in SwiftKey.

Scopul de la care am pornit lucrarea a fost atat de a implementa ideile pe care le

am in domeniul cautarii pentru motoarele de cautare, de a da un model practic si

verificabil, cat si de a veni cu noi idei, ca posibile rute de prospectat pentru aplicatii

viitoare. Acestea au ramas in plan pur teoretic, urmand a fi implementate de alte

entitati, in incercarea de a imbunatati performantele motoarelor de cautare din

prezent.

Descrierea fiecarui capitol:

2. Istoric si motivatie - acest capitol are o abordare mai degraba teoretica, am

prezentat aspecte ce tin de partile legate de teorie (istoric, motivatie) ale unui

motor de cautare pentru magazine online.

2.1 Istoric al cautarii informatiei - am prezentat in acest subcapitol evolutia

tehnica, de la primele colectii de documente de pe peretii pictati ai pesterilor,

mai departe pe papirus, pergament, hartie si, in final, suport electronic. Am

prezentat sistemele de organizare a informatiei, diferite solutii pentru a

cataloga informatiile. Apoi au fost prezentate detalii despre cum primele

motoare de cautare aveau dificultati in sortarea informatiilor de pe Internet. S-

a continuat cu doi algoritmi de sortare a datelor - PageRank (1998), motorul

din spatele Google, si HITS (tot 1998), un algoritm folosit initial de motorul de

cautare Teoma. Am discutat in continuare despre RankBrain, unui sistem de

inteligenta artificiala bazat pe machine learning pentru a genera rezultatele

cautarilor. Au fost prezentate apoi cotele principalelor motoare de cautare,

Google avand peste 90% din piata, si principalele motoare de cautare avand

aproape 99% din piata motoarelor de cautare la nivel mondial. Am discutat si

despre platforma de cautare din spatele YouTube si cea a Facebook.

2.2 Modalitatea de functionare a unui motor de cautare - in acest subcapitol

am aratat pentru inceput unde pornesc cautarile internautilor (Amazon, alte

motoare de cautare importante, retaileri). S-a prezentat si Teoria Setului Difuz

(Fuzzy Set Theory), o ramura a logicii difuze, si rolul ei in cautari. Au fost

descrise in continuare tipurile de cautari in metodele de obtinere a informatiei -

6

cautari de proximitate / logica difuza / cautari booleene / puterea data unor

termeni.

2.3 Evaluarea eficientei unui motor de cautare - in subcapitolul 2.3 au fost

prezentati diferiti KPI (indicatori cheie de performanta, key performance

indicators) folositi pentru evaluarea unui motor de cautare - procentul de

utilizatori care folosesc cautarea / numarul de cautari per vizita / procentul de

iesiri din pagina rezultate cautari / numarul mediu de itemi pentru o vizita cu

cautari vs. vizitele care nu au cautari / procentul cautarilor fara niciun rezultat /

cautarile cele mai frecvente / intentia de cautare.

2.4 Starea actuala a domeniului – in inceputul subcapitolului a fost prezentata

o comparatie intre functiile oferite pentru diferite tipuri de cautari in unele

motoare de cautare - abilitatea de a interpreta termenul scris gresit „Latpop” /

filtrare in rezultate / sortare rezultate / abilitatea de a interpreta „procesor

laptop” (inclusiv in engleza). Motoarele comparate au fost Google.com /

Bing.com / Amazon.com / Target.com / eBay.com / olx.ro / eMAG.ro /

Elefant.ro / F64.ro / evoMAG.ro. A fost descris apoi un studiu de uzabilitate din

2015 realizat de echipa de la Baymard Institute, in care au fost analizate cele

mai importante 50 de site-uri de e-commerce de pe piata Statelor Unite.

2.5 Limitarile unui motor de cautare generalist - in subcapitolul acesta au fost

expuse unele din limitarile motoarelor de cautare generaliste (motoarele de

cautare generaliste sunt motoare de tipul Google, Bing, Yahoo!, care cauta in

surse de date diverse, spre deosebire de cele specializate, cum sunt YouTube

sau Amazon, care cauta doar anumite tipuri de date). Exista diferite tipuri de

continut care nu sunt indexabile de motoarele de cautare generaliste, si

intelegerea acestor lucruri ajuta la alegerea unui motor de cautare pentru

nevoi specifice. Capitolul si-a propus sa arate ca exista anumite cautari pentru

care motoarele de cautare generaliste (Google, Bing, Yahoo!, Yandex, Baidu

etc.) nu sunt cele optime.

2.6 Solutii potentiale pentru paginile de rezultate cautari fara niciun rezultat –

in acest subcapitol am dat niste solutii pentru cautarile care in mod tipic nu

returneaza niciun rezultat (de exemplu, cineva cauta un produs care nu exista

pe site, sau tasteaza un cuvant gresit, rezultand un cuvant pentru care nu

7

exista rezultate in mod tipic). De asemenea, am prezentat concluziile unui

studiu comparativ intre mai multe motoare de cautare.

2.7 Viitorul motoarelor de cautare ale magazinelor online - am prezentat aici

primele incercari de aplicare a unor metode de machine learning asupra

eficientei motoarelor de cautare. Am folosit pentru aceasta o resursa de pe

site-ul Loop54, care este un SaaS (software ca serviciu, software as a service)

folosit de diferite site-uri pentru a creste vanzarile si ratele de conversie prin

imbunatatirea experientei vizitatorilor (CX, Customer eXperience).

3. Solutia propusa - am scris in acest capitol despre solutia software propusa

de catre noi pentru rezolvarea unor parti din problemele identificate in partea

teoretica.

3.1 Scop si obiective - in subcapitol au fost descrise, in mod sumar, care a fost

scopul si care au fost obiectivele cercetarii noastre - se poate face relativ

simplu un instrument care sa foloseasca predictia rezultatelor posibile, si apoi

sa filtreze rezultatele obtinute.

3.2 Descrierea algoritmului - am descris in acest subcapitol, pas dupa pas,

cum functioneaza algoritmul meu. Se citeste de la tastatura un text. Se verifica

daca programul poate prezice niste termeni alternativi: de exemplu, inversarea

unor litere in cuvant („latpop” vs. „laptop”) – au fost prezentate mai multe

solutii de acest tip. O alta functie a programului este de a cauta si sorta

cuvintele in varianta finala introdusa de la tastatura in baza de date de

laptopuri.

3.3 Utilitatea metodei - in subcapitol am prezentat utilitatea demersului. In

primul rand, functia de auto-completare termeni, iar apoi, functia de validare

date. Mai departe, odata realizata procedura pe un set de date (programul a

fost facut sa functioneze pe o baza de date pentru laptop-uri), se pot imagina

usor solutii pentru alte tipuri de date de pe site-uri de tip e-commerce.

3.4 Analiza implementarii algoritmului - subcapitolul prezinta de ce a fost ales

limbajul de programare C++ si paradigma de scriere cod programare

functionala, apoi procedura, pas cu pas, prin care a fost facut programul.

Ulterior, au fost prezentati cativa indicatori folositi pentru a masura fiabilitatea

software-ului, folosind un program numit CCCC. Au fost detaliati indicatorii

folositi, sumar.

8

3.5 Posibilitati de extindere a algoritmului - este un subcapitol in care am

prezentat diferite posibile viitoare solutii prin care se poate perfectiona

aplicatia noastra.

Lucrarea se incheie cu un capitol de concluzii si bibliografia aferenta.

9

2. Istoric si motivatie 2.1 Istoric al cautarii informatiei

Primele colectii de documente au fost inregistrate pe peretii pictati ai pesterilor.

Apoi, pana la inventia hartiei, anticii romani si greci au inregistrat informatia pe role

de papirus. Unele artefacte de papirus aveau mici etichete atasate rolelor, care

ajutau la gasirea informatiei. Cuprinsul unei lucrari au inceput sa apara in rolele din

Grecia in secolul 2 i.Hr. Ulterior, s-a scris pe pergament, straturi subtiri de piele de

animale. Pentru perioada aceasta, cele mai relevante metode de informatie erau cele

pe cale orala. (Langville si Meyer, 2006)

Inventarea hartiei, cel mai bun suport de stocare a informatiei, a crescut viteza

inregistrarii documentelor si au inceput sa apara colectii tematice. Acest lucru a fost

accelerat puternic prin inventarea presei tipografice de catre Johann Gutenberg in

1450. In anii 1700 au aparut in America biblioteci publice, la initiativa lui Benjamin

Franklin. Astfel, a crescut dorinta de a ierarhiza informatiile. (Langville si Meyer,

2006)

Primul sistem de organizare a informatiei a fost atribuit autorului roman Valerius

Maxiums, care l-a folosit in anul 3 d.Hr. pentru a organiza informatia unei carti ale lui.

Ulterior, au aparut sisteme ca sistemul decimal Dewey (1872), cataloagele de carti

(inceputul anilor 1900), microfilmul (anii 1930), sistemul MARC (MAchine Readable

Cataloging – catalog citibil de catre masini) in anii 1960. In ceea ce priveste cautarile

in baze de date pentru carti au inceput cu un sistem SMART (inteligent) al Cornell in

anii 1960. (Langville si Meyer, 2006)

In anul 1989 stocarea, accesare si cautarea colectiilor de documente a fost

revolutionata de o inventie numita World Wide Web (reteaua pentru lumea intreaga)

de catre fondatorul sau, Tim Berners-Lee. Aceasta a devenit semnalul final al

dominatiei Erei Informatiei si moartea Erei Industriale. Cu toate acestea, volumul

mare de informatie facea cautarile initiale foarte greoaie. (Langville si Meyer, 2006)

Primele motoare de cautare aveau dificultati in ierarhizarea informatiei. Lucrurile

s-au schimbat radical odata cu aparitia Google. Intr-un document datat 29 ianuarie

10

1998, "The PageRank Citation Ranking: Bringing Order to the Web" (ierarhizarea

bazata pe citari PageRank: aducand ordine in Internet), autorii, dintre care primii doi

au fondat Google (Lawrence Page, Sergey Brin, Rajeev Motwani si Terry Winograd),

prezentau PageRank, un algoritm care dadea o importanta resurselor gasite in

cautari, pe masura volumului linkurilor catre o anumita resursa (cu precizarea ca o

resursa putea acorda o valoare mai mare daca, la randul ei, avea multe linkuri).

Autorii concluzionau ca "folosind PageRank, putem ordona cautarile, in asa fel incat

paginile cele mai importante au pozitii preferentiale. In experimentele facute, asta a

dus la rezultate de calitate ridicata pentru utilizatori". (Page et al., 2018)

Documentul era o continuare a documentului „The Anatomy of a Large-Scale

Hypertextual Web Search Engine” (anatomia unui motor de cautare pe Internet pe

scala larga, si hipertextual), in care Sergey Brin si Lawrence Page prezentau motorul

de cautare in detaliu, inclusiv formula de calculare a PageRank-ului:

„Presupunem ca pagina A are linkuri de la paginile T1 ... Tn (aceste pagini o

citeaza. Parametrul d este un factor de amortizare, care poate fi setat intre 0 si 1. In

general, il stabilim la valoarea 0,85. De asemenea, C(A) este definit ca numarul de

linkuri care pornesc dinspre pagina A spre alte pagini. PageRank-ul paginii A este

definit astfel:

PR(A) = (1-d) + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))

De notat ca PageRank-ul formeaza o distributie probabilistica peste toate paginile de

Internet, asa ca suma tuturor PageRank-urilor va fi 1. PageRank-ul pentru 26 de

milioane de pagini web poate fi calculat in cateva ore pe o statie de lucru medie.”

(Brin si Page, 1998)

Intr-o lucrare aparuta in 2006 (Langville si Meyer, 2006), formula este

prezentata ca mai jos, o ecuatie simpla a sumelor, radacina carei deriva din

cercetarile bibliometrice, analiza structurii citatiilor intre lucrarile academice.

PageRank-ul paginii Pi, numita r(Pi), este suma tuturor PageRank-urilor paginii care

directioneaza catre Pi.

r (Pi )= ∑P j∈BP i

r (P j)¿ P j∨¿ ,

¿

11

unde BPi este setul paginiilor care au trimitere catre Pi (trimit backlink catre Pi in

cuvintele autorilor Sergey Brin si Lawrence Page), si |Pj| este numarul de linkuri

externe (catre alte entitati) trimise din pagina Pj. De observat ca PageRank-ul

paginilor care trimit linkuri catre entitate curenta r(Pj) din ecuatia anterior mentionata

este temperat de numarul de recomandari facute de Pj, notat |Pj|. Problema cu

ecuatia respectiva este ca valorile r(Pj), PageRank-ul paginilor care trimit catre

pagina Pi, sunt necunoscute. Pentru a trece peste aceasta problema, autorii ecuatiei

au folosit o procedura iterativa. Astfel, ei au presupus ca, la inceput, toate paginile au

un PageRank egal una cu cealalta (sa zicem, 1/n, unde n este numarul de pagini din

indexul web al lui Google). Acum regula in ecuatia prezentata este urmata pentru a

calcula r(Pi) pentru fiecare pagina Pi din index. Regula dinecuatie este aplicata in

mod succesiv, inlocuind valorile iteratiei anterioare in r(Pj). Introducem si alte notatii

pentru a defini aceasta procedura iterativa. Fie rk+1(Pi) PageRank-ul paginii Pi pentru

iteratia k + 1. Atunci,

rk +1 (Pi )= ∑P j∈B Pi

rk (P j )¿P j∨¿ .

¿ (Langville si Meyer, 2006)

Procesul este initiat cu r0(Pi) = 1/n pentru toate paginile Pi si este repetat, in

speranta ca scorurile Page Rank vor converge in final catre niste valori stabile.

Aplicand ecuatia de mai sus retelei din figura de mai jos da urmatoarele valori pentru

PageRank, dupa cateva iteratii:

Figura 2.1.1 Graf directionat, reprezentand o serie de sase pagini

(Langville si Meyer, 2006)

12

1 2

3

6 5

4

13

Iteratia 0 Iteratia 1 Iteratia 2 Rank la iteratia 2

R0(P1) = 1/6 R1(P1) = 1/18 R2(P1) = 1/36 5

R0(P2) = 1/6 R1(P2) = 5/36 R2(P2) = 1/18 4

R0(P3) = 1/6 R1(P3) = 1/12 R2(P3) = 1/36 5

R0(P4) = 1/6 R1(P4) = 1/4 R2(P4) = 17/72 1

R0(P5) = 1/6 R1(P5) = 5/36 R2(P5) = 11/72 3

R0(P6) = 1/6 R1(P6) = 1/6 R2(P6) = 14/72 2

Tabel 2.1.1 Primele cateva iteratii ale ecuatiei anterior prezentate asupra grafului

(Langville si Meyer, 2006)

Un alt algoritm al motoarelor de cautare este si HITS. Un acronim pentru

„Hypertext Induced Topic Search” (cautare de subiecte induse prin hipertext), acesta

a fost un algoritm aflat la baza Teoma, un motor de cautare lansat in 2001 si

achizitionat in acelasi an de un alt motor de cautare, Ask Jeeves Inc. (The Globe si

Mail, 2001)

HITS, algoritm inventat de Jon Kleinberg in 1998 (aproximativ in aceeasi perioada

in care Sergey Brin si Lawrence Page lucrau la algoritmul PageRank), asemenea

PageRank, foloseste structura de URL-uri pentru a crea scoruri de popularitate

asociate cu paginile web. Totusi, HITS are anumite diferente (detalii preluate din

Langville si Meyer, 2006):

Daca metoda PageRank produce un singur scor de popularitate pentru fiecare

pagina, HITS produce doua.

In timp ce PageRank-ul este independent de cautare, HITS depinde de

cautarea facuta.

HITS priveste paginile ca autoritati si huburi. O autoritate este o pagina cu

numeroase linkuri catre ea, si un hub este o pagina cu multe linkuri dinspre ea

spre alte pagini. Paginile de autoritate si huburile merita sa fie numite „bune”

atunci cand urmatoarea afirmatie circulara este valida: „Autoritatile bune au

linkuri catre ele din partea unor huburi bune si huburile bune trimit catre

autoritati bune”. Asadar, fiecare pagina este o masura a autoritatii si o masura

a unui hub.

14

Cum functioneaza algoritmul? (Langville si Meyer, 2006) Fiecare pagina i are un

scor de autoritate xi si un scor de hub yi. Fie E setul tuturor marginilor directionate in

graful de Internet si fie eij marginea directionata de la nodul i catre nodul j. Dat fiind

faptul ca fiecarei pagini i-a fost atribuita initial un scor de autoritate initiala xi si un scor

de hub yi, HITS rafineaza in mod succesiv aceste scoruri calculand:

x i(k)= ∑

j : e ji ϵEy j

(k−1 )

y i(k)= ∑

j: e jiϵEx j

(k )

, unde k = 1, 2, 3, ...

Aceste ecuatii, care au fost ecuatiile originale ale inventatorului lor, Jon

Kleinberg, pot fi scrise intr-o forma matriceala cu ajutorul matricei de adiacenta L a

grafului de URL-uri directionate. (Langville si Meyer, 2006)

1 2

3 4

Figura 2.1.2 Graf pentru o retea de 4 elemente (Langville si Meyer, 2006)

15

P1 P2 P3 P4

P1 0 1 1 0

L = P2 1 0 1 0

P3 0 1 0 1

P4 0 1 0 0

In notarea matriciala, ecuatiile precizate iau forma:

x(k) = LTy(k-1) si y(k) = Lx(k),

unde x(k) si y(k) sunt n x 1 vectori care pastreaza autoritatea aproximativa si scorurile

fiecarui hub la fiecare iteratie. (Langville si Meyer, 2006)

Algoritmul original HITS: (Langville si Meyer, 2006)

1. Se initializeaza y(0) = e, unde e este vectorul coloana al tuturor valorile de 1.

Pot fi folositi si alti vectori de inceput pozitivi.

2. Pana la convergenta, executa:

x(k) = LTy(k-1)

y(k) = Lx(k)

k = k + 1

Se normalizeaza x(k) si y(k).

Lucrurile au evoluat, pe masura ce anii au trecut. Algoritmii s-au tot schimbat,

la un moment dat Google afirma ca au 200 de factori. Intrebat despre asta, in 2010,

CEO-ul Google, Eric Schmidt, a afirmat ca nu ii poate mentiona, pentru ca sunt intr-o

continua schimbare, si, de asemenea, pentru ca sunt un secret comercial al

companiei. (Sullivan, 2010)

Potrivit informatiilor celor de la SearchEngineLand, un site important in lumea

motoarelor de cautare, „RankBrain” este numele dat de catre Google unui sistem de

inteligenta artificiala bazat pe invatare automata (machine-learning artificial

intelligence system) care este folosit pentru a genera rezultatelor cautarilor. Prin

machine learning, un calculator poate sa se invete pe sine insusi cum sa faca o

sarcina, mai degraba decat sa urmeze o procedura predefinita. La data aparitiei

articolului, algoritmul ocupa locul 3 in cele mai importante criterii dupa care un site

era afisat in rezultatele cautarilor. Scopul lui? Interpretarea rezultatelor care nu contin

cuvintele cautate in mod exact, ci cuvinte ce ar putea fi similare. Nevoia de a exista a

algoritmului venit din faptul ca Google procesa in 2016 3 miliarde de cautari zilnic, iar

in 2007 a afirmat undeva intre 20-25% din acele cautari nu au fost observate pana

atunci (nu fusesera probabil cautate niciodata pana atunci). In 2016 e posibil sa fi

16

ajuns la 15% din cautari, in continuare o valoare mare de cautari pentru care

algoritmul isi justifica existenta. Sunt cautari in special formate din multi termeni

(„long-tail”, cautari foarte specifice, dar, totusi, numeroase). (Sullivan, 2016)

Luna Google Bing Yahoo! BaiduYandex

RuYandex Altii

2017-02 92,35 2,91 2,17 1,01 0,42 0,35 0,79

2017-03 92,31 2,96 2,2 1,05 0,38 0,35 0,77

2017-04 92,48 2,89 2,01 1,11 0,36 0,35 0,79

2017-05 92,06 2,92 2,07 1,39 0,35 0,34 0,87

2017-06 91,88 2,88 2,18 1,45 0,38 0,38 0,86

2017-07 92,01 2,55 2,23 1,44 0,4 0,49 0,87

2017-08 91,64 2,52 2,32 1,53 0,36 0,5 1,13

2017-09 91,84 2,59 2,33 1,42 0,39 0,41 1,02

2017-10 91,47 2,75 2,25 1,8 0,42 0,41 0,9

2017-11 92,06 2,76 1,73 1,64 0,5 0,36 0,94

2017-12 91,79 2,75 1,61 1,66 0,57 0,39 1,24

2018-01 91,74 2,76 1,83 1,39 0,58 0,36 1,33

2018-02 91,63 2,71 1,94 1,29 0,63 0,33 1,49

Tabel 2.1.2 Cota de piata la nivel mondial, motoare de cautare (StatCounter Global

Stats, 2018)

Va puteti intreba unde au loc cautarile in 2018, nu doar cele din motoare de

cautare, ci, la modul general, pe toate platformele unde pot avea loc cautari. Date din

februarie 2018 pentru piata din SUA arata dominatia Google, care detine motorul de

cautare, Google Imagini si YouTube (cu un procent mult mai mic, si Google Harti).

De remarcat ca Amazon, cel mai mare magazin online, are o cota un pic mai mare

decat Bing, al doilea motor de cautare generalist, dupa Google. (Fishkin, 2018)

17

Figura 2.1.3 Cota de piata a cautarilor web, februarie 2018, pentru piata din SUA

(date din partea companiei Jumpshot)

Cate motoare de cautare (generale, pentru tot Internetul) exista? Poate, din

diferite surse, ati aflat ca exista „sute de motoare de cautare”. Majoritatea dintre

acestea sunt insa fie variatii ale site-urilor principale (de exemplu, Google.fr pentru

Franta sau Google.co.uk pentru Marea Britanie), fie sunt meta motoare de cautare,

care folosesc rezultatele oferite de alte motoare de cautare (Dogpile, Mamma.com,

Metacrawler). Da, exista unele motoare de cautare tematice (Wolfram|Alpha, IMDb),

18

dar motoarele cele mai vizitate au un procent apropiat de 95% din piata motoarelor

de cautare. (Grappone si Couzin, 2011)

Exista si alte tipuri de algoritmi care pot sustine un motor de cautare.

Platforma de clipuri video YouTube este al doilea motor de cautare, ce-i drept,

specializat, dupa Google, cu aproximativ 3 miliarde de cautari pe luna, un volum de

cautare mai mare decat cel al Bing, Yahoo!, AOL si Ask.com combinate. (Wagner,

2017) Lucrurile la care se uita cei 1,5 miliarde de utilizatori inregistrati ai platformei

YouTube sunt influentate de o lista de clipuri asemanatoare. De fiecare data cand un

internaut priveste un clip YouTube, i se prezinta intr-o bara laterala o lista de clipuri

asemanatoare. Acea lista e considerata cel mai important factor in cresterea cotei de

piata a YouTube. In una din putinele explicatii publice despre cum functioneaza

formula, o lucrare academica care prezinta retelele neuronale ale algoritmului,

inginerii YouTube o descriu drept una din "cele mai mari si sofisticate sisteme de

recomandare la scala industriala existente in lume". (Lewis, 2018)

Faptul ca Facebook, cea mai folosita retea sociala la nivel mondial – 2,2 miliarde

de utilizatori activi pe luna, in al 4-lea trimestru al lui 2017 (Statista, 2018) –, cu un

potential enorm in a ajuta utilizatorii in cautarea de produse si servicii pe plan local,

cu un ecosistem format din milioane de pagini de afaceri, date despre locatie ale

utilizatorilor, date de comportament, informatii demografice, rata de angajament, nu a

reusit in anii recenti sa fie un concurent serios pentru Google in cautarile de afaceri

locale poate fi un argument ca a fi relevant in cautari e o sarcina mai grea decat pare

la o analiza superficiala.

2.2 Modalitatea de functionare a unui motor de cautare

De ce este important, in primul rand, sa discutam despre eficienta unui motor de

cautare? In SUA, cota de piata a celor care isi incep cautarile de produse de

cumparat a scazut pentru Amazon de la 55 la 49% pentru Amazon, in detrimentul

motoarelor de cautare (precum Google), care au crescut de la 28 la 36%, potrivit

unui studiu Survata, citat de Bloomberg. (Keyes, 2017)

19

2015 2016 20170

10

20

30

40

50

60

Unde își încep consumatorii din SUA căuătrile de produse în online

Amazon Motoare de căutare Retaileri

Figura 2.2.1: Unde isi incep consumatorii din SUA cautarile de produse in online

(Keyes, 2017)

Date stranse de MarketingSherpa in 2007 arata ca 43% din vizitatorii unui site

web merg imediat la functia de cautare. Si clientii care folosesc caseta de cautare in

site-uri e-commerce convertesc de aproape trei ori mai mult decat cei care

navigheaza pe web in mod obisnuit. (content: MarketingSherpa, 2007)

Motoarele de cautare (care sunt, la baza, modele de obtinere a informatiei)

folosesc Teoria Setului Difuz (Fuzzy Set Theory), o ramura a logicii difuze, create de

dr. Lotfi Zadeh in 1969, pentru a descoperi conexiuni semantice intre doua cuvinte.

Mai degraba decat sa foloseasca un dictionar pentru a stabili daca doua cuvinte sunt

legate unul de celalalt, sistemele de obtinere a informatiei pot folosi o baza de data

de continut masiva pentru a isi da seama de legaturi. (Enge et al., 2012)

Tipuri de cautari in metodele de obtinere a informatiei:

Cautari de proximitate - o cautare de proximitate foloseste ordinea frazei de

cautare pentru a gasi documente asemanatoare. De exemplu cand cautati (cu

ghilimele) "mustar dulce german", specificati doar o potrivire de proximitate

precisa (termenii sa fie prezenti in aceeasi ordine). Daca se vor inlatura

ghilimelele, proximitatea termenilor de cautare tot conteaza pentru motoarele

de cautare, dar acum vor arata documentele al caror continut nu se potriveste

in mod exact cu ordinea frazei cautate, cum ar fi „mustar german dulce”.

(Enge et al., 2012)

20

Logica difuza - se refera la un tip de logica ce nu este adevarata sau falsa in

mod categoric. Un exemplu comun este daca o zi este insorita (spre exemplu,

daca este acoperita 50% de nori, este in continuare o zi insorita?). Logica de

acest tip este folosita pentru a detecta si procesa cuvintele tastate gresit.

(Enge et al., 2012)

Cautari booleene - cautarile booleene folosesc termeni precum AND (si), OR

(sau) si NOT (nu, negatie). Acest tip de logica este folosita pentru a extinde

sau reduce documentele care apar intr-o cautare. (Enge et al., 2012)

Puterea data unor termeni - acest lucru se refera la importanta unui termen de

cautare particular in cererea transmisa motorului de cautare. Ideea este de a

da un anumit grad de putere unor termeni, pentru a produce rezultate de

cautare superioare. De exemplu, prepozitiile vor primi foarte putina putere in

selectarea rezultatelor, deoarece apar in majoritatea documentelor. Nu ajuta

la selectarea unor documente. (Enge et al., 2012)

2.3 Evaluarea eficientei unui motor de cautare Exista mai mule tipuri de metrici care pot evalua eficienta unui motor de cautare.

Mai jos, cateva din acestea, dintr-un articol aparut pe blogul oficial al companiei

Adobe (Simon, 2015). Sunt mai multi KPI (indicatori cheie de performanta, key

performance indicators):

Procentul de utilizatori care folosesc cautarea – vizitatorii site-ului de analizat

isi petrec timpul navigand pe site inainte de a merge in caseta de cautare, sau

merg la ea direct de la inceput? Indicatorul, daca are valori mici pentru cei

care folosesc caseta de cautare, poate indica faptul ca exista niste experiente

anterioare neplacute fie cu acest site, fie cu alte site-uri din nisa sau industrie,

poate sugera ca exista o caseta de cautare slab vizibila si insuficient de bine

promovata sau poate arata ca site-ul este atat de prietenos cu vizitatorii, incat

acestia gasesc informatia direct, si nu au nevoie de cautari. Cu instrumente

precum cele de analytics (informatii statistice organizate pentru a fi analizate;

exemplu – Google Analytics sau Omniture pe plan international; in Romania,

Trafic.ro sau Brat.ro - Studiul de Audienta si Trafic Internet, SATI) se poate

masura acest indicator.

21

Numarul de cautari per vizita – cate cautari face fiecare vizitator. Cea mai

buna situatie este in care face doar una – o persoana cauta ceva, gaseste, si

converteste (adica devine client) imediat. Mai mult de o cautare per vizitator

poate insemna lucruri rele, cum ar fi ca o cautare a fost goala sau a gasit

lucruri nepotrivite. Cei de la Google sau alte motoare de cautare pot evalua si

ei acest indicator – sa zicem ca cineva merge la Google, cauta ceva, intra pe

un site, e nemultumit (probabil), sau e insuficient multumit, si se intoarce la

Google si face click pe un alt rezultat. Acest tip de actiune se numeste

„bounce” (intoarcere in urma unui impact). Vizitatorii intra pe un site, nu

gasesc, si se intorc in punctul de plecare, in cautarea unui rezultat mai bun.

Iarasi, acesta este un indicator de baza in instrumentele tip analytics.

Procentul de iesiri din pagina rezultate cautari – daca un vizitator paraseste

site-ul din pagina de rezultate cautari obtinuta in urma unei cautari in site, in

mod sigur site-ul are niste probleme la care ar trebui ca detinatorul site-ului sa

se uite. Cautarile ineficiente nu sunt o experienta a consumatorilor pozitiva.

Obiectivul de marketing al zilelor noastre este prezentarea unui vizitator cu

experienta pozitiva in perspectiva sa de client. Clientul ar trebui sa gaseasca

ce cautau inca din prima incercare. De remarcat ca acest procent se

coreleaza puternic cu procentul intrarilor intr-un site. Daca pe un site se intra

frecvent pe o anumita pagina a site-ului, e firesc ca pe acel site sa existe si un

procent ridicat al celor care parasesc site-ul din pagina respectiva. Totul se

reduce insa la procente – este procentul celor care parasesc pagina in linie cu

restul paginilor sau e ceva radical diferit? In functie de raspunsul la aceasta

intrebare se poate decide daca e cazul sa se ia masuri sau nu.

Numarul mediu de itemi pentru o vizita cu cautari vs. vizitele care nu au

cautari. Cheia in evaluarea acestei diferente e in procente. Aici intra o doza de

bun simt in comparatii, intr-o oarecare experienta. Ce se intampla pe site-urile

principale de e-commerce este ca se testeaza constant lucruri, in cautarea

perfectionarii.

Procentul cautarilor fara niciun rezultat – este una din situatiile in care o veste

proasta poate fi folosita in avantajul magazinului online. E bine ca detinatorul

magazinului sa se uite peste ce cautau acele persoane, care e procentul celor

care nu gasesc niciun rezultat, ce fac dupa ce ajung intr-un punct mort cu

22

cautarile? Solutii la aceste probleme am incercat sa dam si in programul

nostru – de exemplu, daca cineva cauta 4 termeni si pe site se gasesc doar 3,

programul 3 afiseaza cele mai relevante rezultate doar pentru cei 3 termeni.

Cautarile cele mai frecvente – ce cauta un vizitator? Intelegerea termenilor cei

mai frecvent folositi poate sa ajute detinatorul magazinului online sa inteleaga

de ce au venit internautii pe site. Cu aceasta informatie, se poate imbunatati

navigatia sau apelurile la actiune (butoane precum „Adauga in cos”,

„Cumpara”, „Aboneaza-te la newsletter” – posta electronica, „Contacteaza-

ne”), in asa fel incat vizitatorii sa nu apeleze atat de mult la cautari. E bine ca

detinatorul magazinului sa foloseasca instrumentele de tip analytics pentru a

imbunatati algoritmii de cautare in site. Tot aici e de mentionat si instrumentul

Google Trends (trenduri de cautare din statisticile Google), care permite

evaluarea cautarilor din industrie. Un alt instrument ar putea fi Google

Keyword Planner (planificatorul de cuvinte cheie de la Google), care foloseste

termenii cautati pentru vizitatori, si poate da informatii de tip sezonalitate, sau

costuri per click pentru campaniile de publicitate platita.

Intentia de cautare – un comportament intangibil, si, cu toate acestea critic de

inteles. Aici este vorba de a masura la ce se gandea vizitatorul in timpul vizitei

pe site. Acest lucru este legat de ROI (return of investment, rata de

rentabilitate a investitiei), pentru ca exista, de exemplu, unii vizitatori care intra

pe un site doar ca sa vada ce mai e nou, si navigheaza liber. Altii sunt acolo

strict pentru ca au nevoie de informatie, si au un model de navigare pentru a

obtine informatii (de exemplu, detalii tehnice despre un produs, sau link catre

pagina producatorului, sau un video explicativ cu produsul). Sansele de

conversie directa a acestor vizitatori sunt mici, dar e de mentionat ca prin mai

multe vizite pe un site, acesta va ramane in mintea vizitatorului, care poate

converti in client la un moment ulterior. Totusi, este de preferat ca in

instrumentul de Analytics sa existe un diferentiator clar intre clientii care fac

tranzactii si cei care doar navigheaza pe un site in scopul obtinerii de

informatii.

23

2.4 Starea actuala a domeniului Mai jos, un tabel comparativ intre mai multe motoare de cautare, din Romania, si

pe plan international:

Motor de

cautare

Abilitatea de a

interpreta

„Latpop”

Filtrare in

rezultate

Sortare

rezultate

Abilitatea de a

interpreta „procesor

laptop” (+engleza)

Google.com Da Nu Nu Da

Bing.com Da Nu Nu Nu

Amazon.com Da Da Da Nu

Target.com Da Da Da Nu

eBay.com Da Da Da Da

olx.ro Nu Da Da Nu

eMAG.ro Da Da Da Nu

Elefant.ro Nu Da Da Nu

F64.ro Da Da Da Nu

evoMAG.ro Da Da Da Nu

Tabel 2.4.1 Comparatie intre functiile oferite pentru diferite tipuri de cautari in unele

motoare de cautare

Am facut o mica cercetare comparativa intre unele magazine online, si

motoare de cautare „clasice”. De asemenea, si doua site-uri de anunturi. Mai jos,

cateva observatii.

In primul rand, motoarele de cautare „clasice” se descurca in general mai bine

la interpretarea cautarilor semantice. De exemplu, daca scriem „procesor laptop”

(sau, in engleza, „laptop processor”), ne vom astepta sa primim rezultate despre

procesoare de laptop, si nu laptopuri care au procesoare (probabil 100% din

laptopuri au procesoare), nu genti de laptopuri cu anumite procesoare, nu coolere de

procesoare de laptop. Se observa insa ca, la aceasta cautare, magazinele online

clasice esueaza in a interpreta cautarea noastra. Solutiile ar fi doua: pe de o parte sa

foloseasca inteligenta artificiala pentru a invata din cautarile anterioare (spre

exemplu, cineva cauta „procesor laptop”, nu e multumit de rezultate, apoi merge in

categoria procesoare, subcategoria procesoare laptop; acesta ar putea fi un semnal

ca acea categorie e relevanta pentru cautare), sau ar putea face reguli manuale de

24

cautare (toti cei care cauta „procesor laptop” sa fie trimisi automat in categoria

respectiva).

O a doua observatie e ca motoarele de cautare „clasice” (Google, Bing) au un

impediment major – nu au indexare instantanee a rezultatelor. Asta inseamna ca pe

un site ca Amazon (o cautare site:amazon.com la Google arata ca Google a indexat

aproximativ 145 de milioane de pagini) sau eMAG (site:eMAG.ro returneaza 25 de

milioane de pagini) Google si Bing sunt nevoiti sa indexeze (sa parcurga cu mici

roboti automat – spideri – intregul site) foarte multe pagini pentru a avea o varianta

cat mai recenta a site-ului. Desigur, asta dureaza zile, uneori saptamani. Asa ca

pentru Google si Bing asta inseamna ca nu au niciodata in index cele mai recente

variante ale paginilor de Internet. Aceste pagini pot suferi modificari, apar noi

produse, se schimba preturile, apar promotii. Din acest motiv, sortarea, cel putin cu

tehnologia de astazi, e foarte dificila. Da, Google si Bing pot „sti” care este pretul

laptopurilor si sa implementeze o solutie de sortare a rezultatelor dupa pret. Dar daca

este pretul de acum cateva zile, sau, mai rau, acum o saptamana, fara nicio

informatie despre promotii si schimbari de pret de ultim moment, rezultatele vor avea

o relevanta mai redusa. Prin urmare, se intampla ce am observat in cercetarea

noastra sumarizata in tabel – motoarele de cautare „clasice” nu au implementate

functii de filtrare / sortare rezultate, si ne asteptam ca situatia sa nu se schimbe prea

devreme, din cauza limitarilor tehnice (motoarele de cautare indexeaza relativ greu

un site mare de e-commerce).

Avem si o ultima observatie, despre predictii cuvinte. Google este un motor de

cautare care, din experienta noastra, are abilitatea de a interpreta foarte bine un

termen tastat, chiar daca e tastat cu greseli de tipul litere inversate, prea multe litere

intr-un cuvant dorit, prea putine. In unele cautari, mai nou, Google chiar ignora o

parte din cuvintele introduse, in incercarea de a fi cat mai relevant. In cautarile

noastre, am observat ca olx.ro si Elefant.ro nu interpreteaza cautarea „latpop”

(desigur, scrisa fara ghilimele, altfel si Google o va vedea ca pe o cautare corecta) ca

pe o cautare scrisa gresit. O tastatura numita SwiftKey, disponibila pe sistemele de

operare de mobil iOS (din 2014) si Android (din 2010) are bune abilitati de a prezice

cuvinte, de a invata din cuvintele pe care utilizatorii le tasteaza pe mobil. Tehnologia

din „spatele” Google, sau, la o scara mai mica, dar in continuare eficienta, a SwiftKey

25

nu consideram ca se regaseste inca in toate magazinele online. Faptul ca exista o

tehnologie accesibila oricui nu inseamna si ca toate software-urile de predictie

cuvinte invata din experienta altora si le si folosesc.

In plus, fata de ce am analizat in tabel (pentru ca e mai dificil de interpretat)

este si abilitatea de a acorda importanta diferita cuvintelor intr-o cautare. De

exemplu, primele cuvinte dintr-o cautare ar trebui sa fie mai importante decat restul.

Intr-un manual de cautare avansata pe Google, se mentioneaza diferenta intre [blue

sky] (cerul albastru si compania Blue Sky Studios) si [sky blue] (albastru cer, o

denumire folosita in alte contexte). (Edu.google.com, 2012) Pentru magazinele online

ar trebui sa conteze ordinea in care sunt scrise cuvintele, si care sunt cuvintele scrise

la inceputul frazei.

Intr-un studiu din 2015 realizat de echipa de la Baymard Institute au fost

analizate cele mai importante 50 de site-uri de e-commerce de pe piata Statelor

Unite (Baymard.com, 2015). Rezultatele sintetice ale studiului:

Figura 2.4.1 Analiza listei de produse a magazinelor online (Baymard.com, 2015)

Cofondatorul institutului a scris un articol despre rezultatele cercetarii efectuate

asupra magazinelor online respective in revista Smashing Magazine. (Holst, 2015)

Cateva observatii din articolul respectiv:

26

Doar 16% din site-urile de e-commerce cele mai importante furnizeaza

utilizatorilor o experienta de filtrare a rezultatelor rezonabil de buna. Acest

lucru se intampla din cauza lipsei unor optiuni de filtrare a rezultatelor

importante. Din datele studiului rezulta ca logica de filtrare ineficienta si

interfetele nefunctionale sunt si ele probleme.

42% din site-urile de e-commerce de top nu au anumite tipuri de filtre specifice

unor categorii pentru cateva din categoriile de produse cele mai importante.

20% din site-urile de e-commerce nu au filtre tematice, in ciuda faptului ca

vand produse cu atribute tematice evidente (sezon, stil s.a.m.d.).

Din site-urile care se ocupa de produse care sunt dependente de o

compatibilitate (de exemplu, o placa de baza e compatibila doar cu anumite

microprocesoare; sau un incarcator baterii poate lucra doar cu anumite

baterii), 32% nu au filtre de comptabilitate.

Testele au aratat ca mai mult de 10 valori filtrate necesita scurtarea

(truncation) rezultatelor pentru a fi afisate in mod corect pe ecran. Cu toate

acestea, 32% din site-uri fie au un design de scurtare insuficient, care face ca

utilizatorii sa nu observe valorile truncate (6%), sau se folosesc de ceva ce

testele au aratat ca e si mai problematic, zone de scroll intern (24%, se refera

la casete in care vizitatorii dau scroll orizontal si/sau vertical pentru a putea citi

toata informatia).

Doar 16 din site-uri promoveaza in mod activ filtre deasupra listei de produse

(aceasta este o pre-conditie pentru situatia cand se depinde mai mult de filtre

decat de categorii produse).

Abilitatea de filtrare eficienta variaza puternic de la o industrie la alta,

electronicele si industria confectiilor suferind de filtre insuficiente (pentru

fiecare din contextele lor specifice), in timp ce site-urile cu bricolaj sau

vanzatorii de produse generaliste au magazinele cu cele mai bune

performante de filtrare produse.

2.5 Limitarile unui motor de cautare generalist Am discutat in lucrare pana acum doar de lucrurile care pot fi gasite de

motoarele de cautari. Totusi, aceste motoare de cautare au limitarile lor. Sunt unele

aspecte ce tin de ordin tehnic, pe care o sa le discut mai jos, care arata ca un motor

27

de cautare are limitarile lui in a gasi informatia pe un site. Pe un site de e-commerce,

de exemplu, un motor de cautare clasic (Google, Bing, Yahoo!, Yandex, Baidu) nu

poate adauga produse in cos, nu poate compara produse, nu poate completa un

formular de cerere oferta, nu poate interpreta ce inseamna sa ai un discount la

cumpararea a doua produse in acelasi timp.

Motoarele de cautare generaliste (acestea sunt motoare de tipul Google, Bing,

Yahoo!, care cauta in surse de date diverse, spre deosebire de cele specializate,

cum sunt YouTube sau Amazon, care cauta doar anumite tipuri de date) adauga

constant facilitati si imbunatatiri serviciilor lor. Lucruri care sunt invizibile astazi pot

deveni vizibile maine, daca motoarele de cautare vor decide sa adauge capabilitatea

de a indexa lucruri pe care in prezent nu pot sau nu doresc sa indexeze. (Sherman si

Price, 2001)

Tip de continut web invizibil De ce este invizibil

Pagina care nu este conectata cu alte pagini

de internet.

Nu exista linkuri prin care robotii

motoarelor de cautare sa ajunga la

pagina.

Pagina care consta in principal din imagini,

audio sau video.

Nu exista suficient text pentru ca

motoarele de cautare sa inteleaga

despre ce e vorba in pagina.

Pagini constand in fisiere PDF (Portable

Document Format, un tip de fisier al

companiei Adobe special creat pentru

documente), sau Postscript, Flash,

Shockwave, executabile (programe) sau

fisiere comprimate (.zip, .tar etc.)

Indexabile din punct de vedere

tehnic, dar in principal ignorate, in

special din motive legate de

afaceri sau politica de functionare

a motorului de cautare.

Continut in baze de date relationale. Robotii motoarelor de cautare nu

pot completa campurile cerute in

formulare interactive.

Continut in timp real. Date efemere, cantitati enorme,

informatie care se schimba rapid.

Continut generat dinamic. Continutul particularizat este

irelevant pentru majoritatea

28

cautatorilor. Teama de capcane

pentru robotii motoarelor de

cautare.

Tabel 2.5.1 Tipuri de continut web invizibil (Sherman si Price, 2001)

2.6 Solutii potentiale pentru paginile de rezultate cautari fara niciun rezultat

In lucrarea "Designing Search: UX Strategies for eCommerce Success", autorul

Greg Nudelman afirma ca nu exista un set de reguli clare care sa garanteze o

implementare a unei pagini care nu returneaza niciun rezultat. Totusi, in lucrare, el

prezinta patru principii generale care pot furniza un bun punct de inceput (Nudelman,

2011):

1. „Nu va fie teama sa spuneti ca nu ati inteles. Indicati clar ca nu ati obtinut

niciun rezultat”, astfel incat clientul sa isi dea seama ca este o problema, si sa

o poata corecta. Daca vizitatorul intelege ca nu sunt rezultate in pagina,

problema se poate remedia prin tastarea altor termeni cheie.

2. „Axati-va pe a furniza o rezolvare. Asigurati-va ca fiecare variabila din pagina

de rezultate de cautare face ceva productiv, pentru a ajuta la rezolvarea

problemei cu niciun rezultat in cautare.” Spre exemplu, cei de la Google, cand

cineva introduce cuvinte ce par ar fi scrise gresit, intreaba internautii "Ati dorit

sa scrieti ...?" (alt termen decat cel introdus).

3. „Creati o strategie de potrivire partiala robusta. Constrangerile prea mari sunt

unele din greselile cele mai frecvente pe care le fac oamenii cand cauta pe

site-uri de e-commerce.” Daca aveti o strategie de rezultate partiale robuste,

ati putea, de exemplu, sa faceti ca o cautare sa raspunda doar la 3 termeni

din cei 5 cautati. Google face, de asemenea, si acest lucru.

4. „E bine sa aveti mai multe strategii de livrare a raspunsurilor. Obtineti rezultate

din surse diferite, pentru a furniza rezultate care sa ajute la cautarile fara

rezultat (initiale), dar in acelasi timp pastrati relevanta cautarii initiale efectuate

de vizitator.” Ce se intampla de multe ori in practica este ca sunt site-uri care

au un site de e-commerce si o functie de cautare pentru acesta, au, in plus, si

un blog (deseori pe platforma WordPress), cu o functie de cautare pentru

acesta. O integrare eficienta ar insemna ca atunci cand cineva cauta pe site

29

sa obtina si rezultate din articolele puse pe blog, dar acestea sa aiba o

prioritate mai mica decat rezultatele cu produse din site.

In concluziile unui studiu ("The effectiveness of Web search engines for retrieving

relevant ecommerce links"), autorii (Bernard J. Jansen si Paulo R. Molina), au tras

cateva concluzii despre motoarele de cautare pe care le-au analizat: Excite (un

motor de cautare generalist, existent si astazi), Froogle (un motor de cautare detinut

de Google, in prezent disparut de pe piata), Google, Overture (un motor de cautare

generalist, cumparat de Yahoo! in 2003), Yahoo! Directories (un director web al

Yahoo!, candva foarte popular, in prezent disparut; pe baza lui exista un motor de

cautare specializat): (Jansen si Molina, 2006)

1. Froogle si Yahoo! Directories, doua site-uri care au pus un accent ceva mai

mare pe e-commerce decat alte site-uri, au avut o relevanta statistica mai

mare decat Excite, Google si Overture (intre care nu s-a gasit o diferenta

statistica). De asemenea, nu a fost nicio diferenta statistica intre Froogle si

Yahoo! Directories. Ca raspuns la prima ipoteza a studiului (daca un motor de

cautare personalizat e mai relevant decat unul generalist), se pare ca aceasta

este adevarata, cele mai bune rezultate fiind obtinute din site-uri specializate.

2. A doua ipoteza a studiului a fost daca cumva primele rezultate din pagina de

cautare (de exemplu, rezultatele 1-5) sunt mai relevante decat rezultatele

urmatoare (6-10). Raspunsul a fost negativ, nu s-a observat ca primele

rezultate ar fi mai relevante decat celelalte, pentru toate motoarele de cautare

analizate.

3. In fine, o ultima ipoteza era daca cumva rezultatele organice (cele care nu

sunt sponsorizate, apar natural, fara a fi platite, asadar sunt "organice") ar fi

mai relevante decat cele platite. Raspunsul, in aceasta situatie, a fost unul

pozitiv.

2.7 Viitorul motoarelor de cautare ale magazinelor online

Loop54 este un SaaS (software ca serviciu, software as a service) bazat pe

machine learning folosit de diferite site-uri pentru a creste vanzarile si ratele de

conversie prin imbunatatirea experientei vizitatorilor (CX, Customer eXperience).

30

Intr-un articol de pe site-ul propriu, compania arata cum machine learning va

schimba viitorul cautarilor in e-commerce, unele tendinte fiind deja aplicate.

(Loop54.com, 2017)

Motoarele de cautare clasice pentru magazine online se axeaza in mod tipic pe

lucruri precum (Loop54.com, 2017):

Indexare eficienta – folosita pentru a localiza rapid datele fara a trebui sa

caute in fiecare coloana de tabel de fiecare data cand o tabela de baze de

date este accesata.

Reguli de ierarhizare bazate pe atribute - ierarhizeaza rezultatele pe baza

relevantei asteptate a cautarii unui utilizator, folosind o combinatie de metode

dependente de cautarea facuta si altele independente de cautarea efectuata.

Potrivita a cautarii relaxata (fuzzy) – potrivire a cautarii in mod aproximativ (de

exemplu, „lpatop” pentru „laptop”).

Variatii – obtinerea unor cuvinte chiar daca nu sunt in forma exacta (carte /

carti / cartile / cartea)

Impartire pe elemente (tokenization) – procesul prin care o cautare se imparte

in segmente de cuvinte, fraze, simboluri si alte parti relevante, numite

elemente (tokens).

In evolutia machine learning, algoritmii de cautare au putut face avansuri

tehnologice foarte mari in ceea ce priveste datele comportamentale. Ele au folosit

comportamentul de click, de adaugare in cos si de cumparare pentru a influenta

sortarea rezultatelor (in acest sens, sortarea nu se face exclusiv bazat pe locatia in

metadatele unui produs a unui text cautat). Machine learning a adus abilitatea

motoarelor de cautare de a intelege relatiile dintre produse, chiar inainte ca orice text

sa fie cautat sau sa se fie obtinut date de comportament. In acest fel, un motor de

cautare poate localiza produse similare sau complementare mai departe decat pe

baza unei simple categorii comune sau a unui brand de producator. Poate identifica

tipare complexe in toate metadatele si construi o arhitectura profunda in catalogul de

produse. Pornind de la aceste elemente de baza, un motor de cautare bazat pe

machine learning poate produce o lista de produse asemanatoare care nu au nicio

legatura cu cautarea efectuata. (Loop54.com, 2017).

31

Furnizarea unei liste de „produse asemanatoare” care sunt similare cu produsul la

care se uita un client poate duce la rate de conversie (din vizitator in client) crescute

si la valori medii ale cosului de cumparaturi marite, si ele. Machine learning permite

unui motor de cautare sa structureze unele relatii dintre produse care nu existat

vreodata. Facand asta, poate realiza o lista inteligenta, auto-perfectibila de „rezultate

asemanatoare”, care sa fie complet diferite de cele oferite in general de sistemele

clasice. Mai mult, acest tip de motor de cautare nu are nicio nevoie de a avea date

de comportament pentru a functiona, eliminand din strat problema unui inceput de

functionare mai dificil (de notat, totusi, ca datele de comportament sunt necesare, si

ar fi bine sa fie adaugate motorului pentru a ajuta la sortarea produselor, pentru o

relevanta crescuta). (Loop54.com, 2017)

32

3. Solutia propusa 3.1 Scop si obiective

Ne-am propus cu programul la care am lucrat sa arat ca se poate face relativ

simplu un instrument care sa foloseasca o cautare intr-o baza de date de laptopuri,

pe doua planuri – predictia unor termeni introdusi la tastatura in mod partial corect, si

apoi sortarea rezultatelor obtinute pe baza unor criterii de relevanta. Solutia gasita in

final este, inca, inferioara la modul general unor solutii dedicate precum cele ale

Google, Amazon sau eMAG, dar pe anumite segmente, solutia propusa le poate

depasi si pe cele dedicate intr-o eventuala analiza comparativa.

3.2 Descrierea algoritmului Algoritmul propus urmareste introducerea de date si cautarea intr-o baza de date

de laptopuri. Baza de date e formata din numele laptopului si URL-ul aferent de pe

site-ul eMAg.ro. Propunerea noastra e pe doua planuri: pe de o parte, am facut un

algoritm de predictie cuvinte, se introduc unul sau mai multi termeni, iar algoritmul

creat urmareste daca acei termeni sunt tastati, cumva gresit, si in a doua parte am

facut o sortare a rezultatelor care contin termenii cautati.

In prima etapa in care este construit algoritmul se citeste de la tastatura un text,

format doar din anumite caractere (litere, cifre, spatiu, cratima, punct, virgula,

ghilimele). Am facut ca textul introdus sa poata fi prelucrat de la tastatura usor, prin

folosirea unor comenzi speciale, pentru deplasarea cursorului in text, desi textul se

citeste litera cu litera, si nu ca string (text). Exista un numar maxim de cuvinte pentru

care se afiseaza predictii, 5, apoi un cuvant e necesar sa aiba intre 3 si 14 litere, si

tot stringul introdus de la tastatura trebuie sa aiba maxim 60 de caractere cu spatii (si

alte semne permise). Pentru a vedea predictii, se apasa tasta TAB, pentru a cauta

direct, fara predictii, se apasa tasta ENTER.

Programul citeste apoi dintr-un fisier text predictiile posibile pentru fiecare din

cuvinte. Predictiile au fost generate din baza de date folosita (o lista de laptopuri de

pe site-ul eMAG). Se verifica daca programul poate prezice niste termeni alternativi:

33

de exemplu, inversarea unor litere in cuvant („latpop” vs. „laptop”). Apoi, pe baza

unei matrici cu pozitia fiecarei litere de pe tastatura, programul poate interpreta daca

cuvantul „laptop” a fost tastat de fapt ca „lstpop” (pe tastatura, litera „s” este langa

litera „a”). Programul verifica in toate tastele din jurul tastei respective. O alta varianta

de predictie sunt cuvintele care incep cu un string. De asemenea, se cauta si daca

un cuvant a fost tastat cumva cu o litera in plus fata de cuvantul dorit. O alta

procedura verifica daca un termen are o litera in minus.

Daca se gaseste mai mult de o predictie, programul ofera optiunea de a alege

intre predictiile gasite.

In partea a doua a programului, se cauta cuvintele in varianta finala introdusa de

la tastatura in baza de date de laptopuri. Programul este capabil sa inteleaga

anumite echivalari, de exemplu intre termenii „DVD” si „DVD-ROM”, sau „MSDos” si

„MS-Dos” etc.

Daca un termen va fi mai la inceputul stringului introdus, acela va avea prioritate

mai mare in cautari decat un termen aflat la finalul stringului.

Daca un string are 4 termeni, dar in baza de date de laptopuri sunt doar rezultate

in care apar 3 termeni, vor fi afisati aceia.

3.3 Utilitatea metodei In primul rand, functia de auto-completare termeni. Daca se urmeaza pasii

descrisi de noi, se poate obtine o functie de auto-completare termeni foarte buna.

Apoi, functia de validare date. Cand se importa datele din baza de date a eMAG

si se impart datele pe coloane in Excel, si se sorteaza alfabetic, se pot gasi usor erori

de introducere date, care pot fi corectate. Am gasit husa de laptop in categoria

laptop-uri, titluri de laptop puse gresit (fara "," ca separator, sau cu virgula, dar fara

spatiul de dupa), ordine cuvinte din titlu nerespectata.

Mai departe, odata realizata procedura pe un set de date (noi am facut procedura

pentru laptop-uri), se pot imagina usor solutii pentru alte tipuri de date de pe site-uri

de tip e-commerce. Solutia propusa in algoritm este replicabila.

34

De asemenea, cautarea devine mult mai buna prin procesul de intelegere a unor

obiceiuri de tastare (notebook, in loc de laptop; 2 Core in loc de Dual Core), si prin

incercarea de intelegere a sensului unei cautari. Statistici de genul acesta se pot

colecta cu instrumente precum Google Analytics, si apoi folosi pentru a rafina,

constant, cautarile. E un proces repetitiv ce ar trebui sa fie constant.

3.4 Analiza implementarii algoritmului Programul a fost implementat in C++, deoarece am avut experienta ca

programatori cu programele Pascal, C si C++. Avem o oarecare expertiza in PHP si

HTML, dar am preferat sa ne axam pe scrierea de cod si algoritmi, nu neaparat in a

invata sa folosim un limbaj de programare pentru web/Internet.

De asemenea, codul a fost scris in paradigma de scriere programare

functionala, pentru ca avem expertiza in acest tip de programare.

Constructia programului a avut ca prim pas salvarea in calculator a unor pagini

HTML de descriere laptopuri de pe site-ul eMAG. Acestea au fost procesate in

calculator, pentru a obtine, in final, o lista cu nume de laptopuri (randurile impare 1,

3, 5 etc.) si de URL-uri pentru acele laptopuri (randurile pare 2, 4, 6 etc.).

Apoi, din lista respectiva am extras cele mai folosite cuvinte, si le-am folosit

pentru functie de autocompletare cuvinte (utilizatorul completeaza un string,

programul stie la ce e posibil sa ma refer).

In continuare, am facut o lista de conjunctii si prepozitii, care vor fi ignorate in

cautari.

Mai departe, am scris codul pentru a procesa aceste informatii.

Pentru ca in C++ string-urile functioneaza ceva mai atipic decat in Java, si din

cauza faptului ca experienta noastra in programare este limitata, am ajuns sa scriem

foarte mult cod. Sunt aproximativ 2.500 de linii de cod, si aproape 8.000 de cuvinte

folosite. Ce-i drept, codul are numeroase comentarii, si, pentru debugging usor, am

lasat si variantele de testare (sunt multe linii, ulterior comentate, care doar afiseaza

un status, pentru debugging usor).

35

Mai jos se prezinta cativa indicatori folositi pentru a masura fiabilitatea

software-ului. Algoritmul a fost testat folosind un program numit CCCC.

Indicator Etichet

a

Metrica globala Metrica per modul

Numar module NOM 1

Linii de cod LOC 1714 1714

Numarul ciclomatic al lui McCabe MVG 363 363

Linii de comentarii COM 347 347

LOC/COM L_C 4,939

MVG/COM M_C 1,046

Linii de cod respinse de compilator REJ 78

Tabel 3.4.1 Indicatori pentru a masura fiabilitatea programului propus (Littlefair,

2018)

Detaliere indicatori (sursa pentru textul original este un raport creat de programul

CCCC, in care sunt explicati si indicatorii: Littlefair, 2018):

NOM = Numarul de module (program principal, biblioteci folosite; noi am

folosit doar un program principal, fara biblioteci). Ne-a fost mai util sa lucram

intr-un singur program, pentru ca am putut avea o intelegere a programului

facila (in partea de sus functii de predictie, la mijloc citirea tastelor, in partea

de jos sortare rezultate. Dar daca am fi lucrat intr-o echipa, cu alte persoane

sa ne supervizeze codul, ar fi fost mai util sa fi lucrat in mai multe programe.

LOC = Linii de cod, numarul de linii care sa nu fie goale, si nici comentate,

numarate de program. Numarul respectiv este ridicat atat pentru ca nu sunt

inca un programator profesionist, cat si pentru ca am lucrat in C++, care are

mici probleme in gestionarea facila a string-urilor. Se pot gestiona, doar ca

este un pic mai dificil decat in Java, de exemplu.

COM = Linii de comentarii. De mentionat ca o mare parte din comentariile

facute de noi au fost si in continuarea unor linii de cod, asa ca numarul este

inexact. Am preferat sa punem comentarii cat mai detaliate, pentru a face

codul usor de inteles. Am lasat comentate si diferite instructiuni utile pentru

debugging. Prin de-comentarea lor se poate verifica usor in ce loc al

programului va aflati.

36

MVG = Complexitatea ciclomatica a lui McCabe. Aceasta este o masura a

complexitatii decizionale care formeaza programul. Definitia stricta a acestei

masuratori este ca este un numar de rute linear independente printru grafic

aciclic directionat, care identifica trecerea controlului unui subprogram.

Software-ul analizator CCCC masoara aceasta prin inregistrarea rezultatelor

decizionale distincte continute in fiecare functie, din care rezulta o buna

aproximare a versiunii definite formal a masuratorii. Detaliem indicatorul mai

jos. De mentionat ca recomandarea numarului optim ar fi undeva intre 10 si

15, iar la noi depaseste 350. Explicatia e ca nu am impartit programul in

module distincte.

L_C = Linii de cod pentru o linie de comentarii. Prin acest indicator se

masoara densitatea comentariilor, cu atentie la dimensiunea textului

programului. Indicatorul in cazul de fata nu este foarte precis masurat,

deoarece nu ia in considerare comentariile „inline”, cele scrise in continuarea

unei linii de cod. Totusi, consideram ca si asa se poate vedea ca am folosit

comentarii in codul nostru.

M_C = Complexitatea ciclomatica pe linia de comentarii. Folosind acest

indicator putem afla densitatea comentariilor in ceea ce priveste complexitatea

logica a programului. Detaliem mai jos despre acest indicator.

REJ = Linii de cod respinse de compilator. Indicatorul e unul specific

programului CCCC, in Dev C++ pe Windows x64 nu ni s-a reportat niciun fel

de eroare de cod.

Mai jos, cateva aspecte despre complexitatea ciclomatica a lui McCabe (sursa –

o prezentare dintr-un curs al Universitatii Auckland - Tempero, 2018).

In primul rand, cu cat este mai complexa structura codului, cu atat este mai dificil

de inteles, e mai probabil sa aiba ceva defect, va fi mai dificil de actualizat, va dura

mai mult timp realizarea lui, si va fi mai dificil de reutilizat.

Apoi, numarul complex ciclomatic al lui McCabe (McCabe’s Cyclomatic

Complexity Number, CCN) masoara numarul de cai liniare independente prin graful

programului (de vazut imaginea de mai jos, cu un graf).

v(F) = e – n + 2,

37

unde F este graful de parcurgere in cod, n numarul de noduri, e numarul de margini.

Intuitiv, pe masura ce numarul complex ciclomatic al lui McCabe devine mai

mare, codul devine mai complex. Diferite surse recomanda un CCN nu mai mare de

10-15.

Figura 3.4.1 Exemplu pentru numarul complex ciclomatic al lui McCabe (Tempero,

2018)

3.5 Posibilitati de extindere a algoritmului In primul rand, ar fi util un generator automat de filtre, se poate face un sistem

care sa foloseasca filtrele cel mai des folosite de alte persoane care au cautat ceva

similar, si sa ne fie afisate cele mai frecvent folosite filtre.

Apoi, pentru produsele in limba romana, ar fi util ca textele produselor sa poata fi

gasite indiferent daca scriu sau nu cu diacritice. Diacriticele sunt si ele de doua tipuri,

cu virgula (S/s, T/t) si cu sedila (S/s si T/t). Un motor de cautare ar trebui sa poata

interpreta orice varianta de a scrie un cuvant – cuvantul „tantari” din „plasa tantari” ar

putea fi scris in 9 feluri distincte, in functie de semnul diacritic folosit pentru „t” (si

numarul se inmulteste cu 4 daca adaugam cele 4 feluri de a scrie a: a\i\a\i).

Cum poate „invata” un site abia lansat pe piata daca se cauta frecvent „notebook”

sau „laptop”? Un raspuns, printre alte posibile solutii, ar putea fi folosirea Google

Trends, un site care permite comparatii intre termeni. Instrumentul respectiv va oferi

si noi sugestii de cautare. S-ar putea face astfel niste dictionare de echivalenta, un

motor de cautare ar putea „intelege” ca „laptop” inseamna, de fapt, „notebook”.

Desigur, ar putea fi utile si niste dictionare de sinonime, dar pentru termenii mai

38

tehnici e posibil sa nu fie suficient de moderne in exprimare, si e posibil sa se piarda

termeni mai de argou, sau exprimari imprecise, dar folosite in practica.

Uneori, lucrurile generate automat pot da erori. De exemplu, da, „notebook” poate

insemna „laptop”, dar nu ar trebui sa fie egal cu „netbook”, desi, aparent, termenii

sunt similari. Ar trebui ca listele generate automat sa fie monitorizate. Sau se poate

crea un algoritm, ceva mai complex, care sa invete din greseli. Prin studierea

comportamentului vizitatorilor, se poate determina daca pentru majoritatea „netbook”

= „notebook” – daca se observa ca vizitatorii nu sunt multumiti de afisarea de

notebookuri la cautari de netbookuri, sau daca se observa ca au fost multe produse

notebook returnate de catre cei care cautau netbookuri, se pot lua masuri corective.

Daca acest proces de corectie are loc, atunci predictia ar putea ramane.

Pentru un site cu trafic ceva mai mare, si cu o prezenta stabilita pe o anumita

piata, ar putea fi utila analiza statisticilor din instrumente precum Google Analytics,

care permit, odata facuta o configurare, monitorizarea cautarilor.

Exista si functii de cautare care sunt specifice anumitor nise. De exemplu, pentru

o persoana care cauta un parfum cu un anumit miros, ar fi relevant sa i se prezinte o

serie de parfumuri realmente asemanatoare cu acel parfum.

Filtrele de sortare pot si ele sa fie rafinate. Sa zicem ca discutam despre un

magazin de ceaiuri. Aici, in plus fata de filtre precum „ceaiuri de menta”, „ceaiuri de

sunatoare” etc., ar putea fi utile filtre pentru diferite metode de a folosi acele ceaiuri –

exista ceaiuri de raceala, pentru slabit, pentru somn linistit, pentru energie s.a. In

lumea tehnologiei, laptopurile pot fi de birou, pentru acasa (multimedia), pentru

procesare video, pentru jocuri, pentru conditii de lucru dificile (cu rezistenta la praf si

caderi). Ar ajuta daca filtrele nu ar fi exclusiv axate pe specificatii tehnice, ci ar fi si

fidele intentiei de cautare a vizitatorilor, asa cum poate fi ea interpretata de detinatorii

de magazine online. Tot legat de laptopuri, „laptopuri noi” ar fi un filtru doar cu

laptopuri lansate intr-o anumita perioada. Similar, o functie de filtrare pentru

„laptopuri ieftine”.

O problema intalnita la unele magazine este neconcordanta 100% a filtrelor cu

specificatiile produselor. Pe Amazon.com, de exemplu, unele produse sunt vandute

nu de catre Amazon in sine, ci de terte parti. Este dificil sa impui criterii coerente

39

pentru zeci (poate sute) de milioane de produse, introduse de foarte multi

comercianti. Prin urmare, uneori filtrele Amazon din cautari nu sunt precise.

O functie de sortare care lipseste multor magazine online e functia de sortare

dupa data aparitiei pe piata. E posibil sa ne placa 3 laptopuri in masura egala. Ar fi

un puternic criteriu diferentiator sa pot afla usor data lansarii pe piata a modelelor

respective.

Alte criterii de sortare, care uneori nu apar in magazinele online: sortare dupa top

vanzari (aceasta ar trebui sa fie sortarea implicita), sortare dupa numar si sentiment

comentarii, traficul pentru anumite produse, istoricul celui care cauta, laptopuri

populare in ultima luna, recomandari editoriale (ce recomanda echipa din spatele

site-ului).

Functia de predictii cuvinte (pe masura ce scriem un cuvant, sa ni se sugereze

texte in mod automat) ar putea avea ca functie aditionala abilitatea de a invata care

sunt cele mai des folosite predictii, si sa le afiseze prioritar pe acela. Apoi, sa invete

din comportamentul nostru, de utilizatori logati in site, si, odata ce am facut o

selectie, sa o afiseze pe aceea prioritar. Nu in ultimul rand o functie de tip auto-

completare, ca un utilizator sa scrie 2-3 litere si sa i se indice cuvinte de 10 litere, sa

spunem.

Mai departe, se poate lua in considerare comportamentul vizitatorilor - pe ce fac

click cand cauta, daca se intorc la rezultatele cautarii dupa ce vad un anumit produs

(ceea ce poate insemna ca nu au fost multumiti de rezultatul respectiv), ce produse

se cumpara efectiv dupa o cautare, ce produse sunt recomandate mai departe, care

este sentimentul vizitatorilor, asa cum decurge el din comentariile si notele

(ratingurile) lasate pentru produse etc. Daca se intra pe acest proces - cum

optimizam rezultatele de cautare de pe un site? - se poate ajunge cu perfectionarea

la un nivel foarte ridicat.

Pe un magazin online ne-am astepta sa gasim si niste rute predefinite foarte

bune. De exemplu, cine cauta „Laptop Asus” ar putea sa fie trimis automat in

categoria „Laptopuri”, cu filtru selectat pe „Asus”. Da, e posibil ca vizitatorii sa se

astepte sa ajunga intr-o pagina de cautari cu filtre posibile, dar e de testat si sugestia

noastra.

40

Suntem aproape siguri ca cine introduce un cod produs in functia de cautare vrea

sa ajunga direct la produsul respectiv. Pentru acel tip de cautari, am implementa o

functie de tipul „Ma simt norocos”, prezenta pe motorul de cautare Google, care sa

„trimita” automat internautii la primul (deci, cel mai relevant) rezultat gasit.

O functie pe care am implementat-o in program e ca daca o cautare nu are niciun

rezultat, sa tai din termenii introdusi.

Ar fi util ca un motor de cautare sa stie ca 2 TB = 2.000 GB (pentru hard-diskuri)

= 2.048 GB (pentru alte tipuri de cautari, oricum se poate pune ca echivalent). De

asemenea, separatorul ar trebui sa fie atat virgula, cat si punct (sa fie echivalente):

„2.048” = „2,048”.

Exista si cautari foarte provocatoare: „hard-disk laptop”. Poate vizitatorul doreste

sa primeasca o lista de hard-disk-uri pentru laptopuri. Dar acele hard-diskuri pot fi

interne sau externe. Si cautarea ar putea fi si „laptop care sa contina hard-disk, spre

deosebire de alte laptopuri, cu SSD”.

Conjunctiile, in general, ar trebui eliminate din functiile de cautare. „Cel mai nou

laptop” ar putea fi o exceptie, aici ar fi utila o sortare de la cel mai nou spre cel mai

vechi, cu toate laptopurile din magazin.

41

4. Concluzii Am incercat cu demersul nostru sa demonstram ca se poate face un motor de

cautare laptopuri care sa permita predictii cuvinte, si o sortare primara rezultate.

Raman ca posibilitati de explorat diferite sugestii pe care le-am acumulat pe masura

ce am realizat proiectul, de imbunatatire a motoarelor de cautare.

Raspundem mai jos principalelor puncte prezentate in partea introductiva:

"Am vrut sa aratam o modalitate practica prin care se pot face unele

imbunatatiri la un motor de cautare cu resurse putine." – Am lucrat cu un

limbaj de programare axat mai putin pe partea de web, C++. A fost o prima

varianta a unui potential algoritm mult mai complex. Consideram ca am

realizat o mini-performanta – am facut un algoritm care poate face atat

predictii asupra ce utilizatorul doreste sa tasteze, cat si un mic algoritm de

sortare a datelor relativ eficient. Loc de imbunatatire este suficient, mai ales

pe baza unor algoritmi de machine learning.

"Vom prezenta in lucrare inclusiv idei noi, potential utile de folosit pentru

magazinele online in viitor." – partea aceasta a fost una din cele mai

consistente in demersul noastra. Din experienta noastra personala in

domeniul optimizarii pentru motoarelor de cautare (SEO), am avut ocazia sa

interactionam cu majoritatea din principalele motoare de cautare, si am

acumulat, de-a lungul anilor, numeroase observatii despre cat de ineficiente

pot fi unele cautari. Am cautat in lucrarea noastra sa prezentam unele posibile

solutii la aceste probleme.

" Am dorit cu programul propus de noi sa simulam unele din functionalitatile de

predictie pentru un eventual motor de cautare pentru produsele din

magazinele online." – am scris mult cod pentru a face un motor de cautare cu

cateva functii de predictie distincte. Programul nostru este inca departe de

modelul pe care l-am avut, anume tastatura pentru sistemele de operare

pentru mobil Android si iOS numita SwiftKey. Insa, la nivel primar, am folosit o

parte din facilitatile oferite de tastatura si consideram ca le-am imitat cu

succes.

42

" Scopul de la care am pornit lucrarea a fost atat de a implementa ideile pe

care le am in domeniul cautarii pentru motoarele de cautare, de a da un model

practic si verificabil, cat si de a veni cu noi idei, ca posibile rute de prospectat

pentru aplicatii viitoare. Acestea au ramas in plan pur teoretic, urmand a fi

implementate de alte entitati, in incercarea de a imbunatati performantele

motoarelor de cautare din prezent." – am vorbit anterior despre ideile noi pe

care ne-am propus sa le aducem cu lucrarea si cat de bine sau rau am

realizat acest lucru. Legat de testarea abilitatilor – principala remarca negativa

pe care o avem este legata de complexitatea codului. Programul este foarte

lung, consideram ca daca am fi facut si o a doua varianta am fi putut gasi

chiar noi insine alte solutii pentru a comprima codul. Iar un programator cu

experienta bogata in programare ar putea realiza un cod semnificativ mai mic.

Per ansamblu, insa, ne declaram multumiti de rezultatul obtinut pornind de la

obiectivele initiale ale cercetarii. Un motiv in plus de satisfactie este si faptul

ca am comentat o parte insemnata din functiile folosite, si am pastrat, in corp

de comentarii, si instructiunile folosite pentru debugging (cautare erori) in

program, asa ca eventualele erori pot fi reparate mai usor prin de-comentarea

liniilor.

Ca o concluzie finala, consideram ca scopul de la care s-a pornit initial – acela de

a face o lucrare prin care sa aratam ca se poate realiza cu un algoritm realizat cu

resurse putine un program care sa aiba abilitatea de a prezice diferite elemente

folosite pentru a introduce date, iar, ulterior, abilitatea de a ierarhiza informatia pe

baza unor criterii –, a fost atins, fie doar si partial. Programul are anumite facilitati

atat in etapa de predictie cuvinte, cat si in etapa ulterioara, de cautare si sortare

rezultate. Legat de partea teoretica a demersului nostru, consideram ca si scopul

acestuia a fost atins, asa cum am aratat deja in comparatia intre obiectivele propuse

si cele pe care le-am indeplinit in mod practic.

43

Bibliografie Baymard.com. (2015). Top 50 E-Commerce Sites Ranked by Product List Usability -

Baymard Institute. [online] Disponibil la: https://baymard.com/ecommerce-product-

lists/benchmark/site-reviews [Accesat 4 Apr. 2018].

Brin, S. si Page, L. (1998). The Anatomy of a Large-Scale Hypertextual Web Search

Engine - Stanford InfoLab Publication Server. [online] Ilpubs.stanford.edu. Disponibil

la: http://ilpubs.stanford.edu:8090/361/ [Accesat 1 Apr. 2018].

content: MarketingSherpa, M. (2007). How to Improve Your Site’s Internal Search &

Lift ROI - 9 Strategies & Tips. [online] MarketingSherpa. Disponibil la:

https://www.marketingsherpa.com/article/interview/how-to-improve-your-sites

[Accesat 3 Apr. 2018].

Edu.google.com. (2012). Lesson 1.5: Word order matters (Text). [online] Disponibil

la: https://edu.google.com/coursebuilder/courses/pswg/1.2/assets/notes/Lesson1.5/

Lesson1.5Wordordermatters_Text_.html [Accesat 2 Apr. 2018].

Enge, E., Spencer, S., Stricchiola, J. si Fishkin, R. (2012). The art of SEO. 2nd ed.

Sebastopol, Calif.: O'Reilly Media, pp.47-48.

Fishkin, R. (2018). New Jumpshot 2018 Data: Where Searches Happen on the Web

(Google, Amazon, Facebook, & Beyond) | SparkToro. [online] SparkToro. Disponibil

la: https://sparktoro.com/blog/new-jumpshot-2018-data-where-searches-happen-on-

the-web-google-amazon-facebook-beyond/ [Accesat 5 Apr. 2018].

Grappone, J. si Couzin, G. (2011). Search engine optimization. 3rd ed. Indianapolis,

Ind.: Wiley Pub., p.70.

Holst, C. (2015). The Current State Of E-Commerce Filtering. [online] Smashing

Magazine. Disponibil la: https://www.smashingmagazine.com/2015/04/the-current-

state-of-e-commerce-filtering/ [Accesat 4 Apr. 2018].

Jansen, B. si Molina, P. (2006). The effectiveness of Web search engines for

retrieving relevant ecommerce links. Information Processing & Management, 42(4),

pp.1075-1098.

44

Keyes, D. (2017). Search engines are weakening Amazon’s hold on product search.

[online] Business Insider. Disponibil la: http://www.businessinsider.com/google-

search-engines-weaken-amazon-hold-on-product-search-2017-12 [Accesat 1 Apr.

2018].

Kim, E. (2018). Amazon shares jump after earnings. [online] CNBC. Disponibil la:

https://www.cnbc.com/2018/02/01/amazon-earnings-q4-2017.html [Accesat 31 Mar.

2018].

Langville, A. si Meyer, C. (2006). Google's PageRank and Beyond. Princeton:

Princeton University Press, pp.1-3; 32-33; 115-116.

Lewis, P. (2018). 'Fiction is outperforming reality': how YouTube's algorithm distorts

truth. [online] The Guardian. Disponibil la:

https://www.theguardian.com/technology/2018/feb/02/how-youtubes-algorithm-

distorts-truth [Accesat 1 Apr. 2018].

Littlefair, T. (2018). CCCC Software Metrics Report. CCCC Software Metrics Report.

Loop54.com. (2017). How machine learning is changing e-commerce site-search for

the better. [online] Disponibil la: https://www.loop54.com/blog/machine-learning-is-

changing-ecommerce-site-search-for-the-better [Accesat 4 Apr. 2018].

Nudelman, G. (2011). Designing search. Editia 1. Indianapolis, IN: Wiley, p.12.

Page, L., Brin, S., Motwani, R. si Winograd, T. (2018). The PageRank Citation

Ranking: Bringing Order to the Web. - Stanford InfoLab Publication Server. [online]

Ilpubs.stanford.edu. Disponibil la: http://ilpubs.stanford.edu:8090/422/ [Accesat 31

Mar. 2018].

Pelican, E. (2016). Modele de aproximare si simulare, Curs

Petac, E. (2018). Elaborarea lucrarii de disertatie, Seminar

Radu, A. (2018). Raportul pietei de e-commerce 2017: Romanii au cumparat online

de 2,8 miliarde de euro (UPDATE cu infografic). [online] Blogul GPeC. Disponibil la:

https://www.gpec.ro/blog/raportul-pietei-de-e-commerce-2017-romanii-au-cumparat-

online-de-28-miliarde-de-euro [Accesat 31 Mar. 2018].

Sburlan, D. (2016). Modele neconventionale de calcul, Curs

45

Sherman, C. si Price, G. (2001). The invisible web. Medford (New Jersey):

Information today, pp.56, 60.

Simon, M. (2015). The Value and Incremental ROI of Internal Site Search | Adobe

Blog. [online] Adobe Blog. Disponibil la: https://theblog.adobe.com/the-value-and-

incremental-roi-of-internal-site-search/ [Accesat 3 Apr. 2018].

StatCounter Global Stats. (2018). Search Engine Market Share Worldwide |

StatCounter Global Stats. [online] Disponibil la: http://gs.statcounter.com/search-

engine-market-shar

Statista. (2018). Facebook users worldwide 2017 | Statista. [online] Disponibil la:

https://www.statista.com/statistics/264810/number-of-monthly-active-facebook-users-

worldwide/ [Accesat 1 Apr. 2018].

Sullivan, D. (2010). Schmidt: Listing Google's 200 Ranking Factors Would Reveal

Business Secrets - Search Engine Land. [online] Search Engine Land. Disponibil la:

https://searchengineland.com/schmidt-listing-googles-200-ranking-factors-would-

reveal-business-secrets-51065 [Accesat 31 Mar. 2018].

Sullivan, D. (2016). FAQ: All about the Google RankBrain algorithm - Search Engine

Land. [online] Search Engine Land. Disponibil la: https://searchengineland.com/faq-

all-about-the-new-google-rankbrain-algorithm-234440 [Accesat 31 Mar. 2018].

Tempero, E. (2018). COMPSCI 702: Software Measurement. McCabe’s Cyclomatic

Complexity Number. [online] Disponibil la:

http://www.dcc.ufmg.br/~mtov/pmcc/cyclomatic_complexity_tempero.pdf [Accesat 3

Apr. 2018].

The Globe si Mail. (2001). AskJeeves acquires Teoma search engine. [online]

Disponibil la: https://www.theglobeandmail.com/technology/askjeeves-acquires-

teoma-search-engine/article1185212/ [Accesat 4 Apr. 2018].

Wagner, A. (2017). Are You Maximizing The Use Of Video In Your Content

Marketing Strategy. [online] Forbes.com. Disponibil la:

https://www.forbes.com/sites/forbesagencycouncil/2017/05/15/are-you-maximizing-

the-use-of-video-in-your-content-marketing-strategy/ [Accesat 1 Apr. 2018].

46

Anexa 1 – masurarea complexitatii codului

Lini

a

Obi

ectu

l

mas

urat

LOC

phy

LOC

bl

LOC

pro

LOC

com

V B(x

100)

T N1

N2

n1 n2 D E L(x1

000)

MIw

oc

MIc

w

MI

2525

prog

ram

-

v.0.

124.

cp

p 2525

579

1756

332

7261

0

1904

210:

38:3

5

4487

3829

38 387

188

1364

9676

5 50 27 77

126

Ste

rgeE

cr

an()

19 1 18 2 316

4 0:01

:14

34 34 5 20 4 1342

235

93 24 117

152

Lite

raM

ica(

) 28 1 7 20 105

3 0:00

:48

16 11 9 6 8 870

121

92 48 140

181

Ulti

mel

e_2

_Sau

_3_C

arac

tere

_..

.() 43 3 37 5 1105

42 0:41

:20

122

97 15 18 40 4464

9

25 71 25 96

225

Elim

ina_

Or

ice_

Altc

ev

a_D

ecat

_..

.() 29 3 20 7 914

31 0:26

:10

93 80 17 22 31 2826

2

32 78 34 113

256

Cuv

antu

l1

Est

eCon

tin

utIn

Cuv

ant

ul2(

)

34 2 21 12 518

19 0:12

:48

56 45 19 16 27 1384

2

37 80 40 120

291

load

_Con

j

unct

ii_si

_P

repo

zitii

()

30 4 19 7 354

7 0:03

:05

37 32 13 22 9 3346

106

85 34 119

322

load

_Fis

ier

_Lis

ta_L

ap

topu

ri()

96 12 57 29 2219

74 1:35

:54

204

158

26 44 47 1035

78

21 53 38 90

419

load

_Arr

ay

_Fro

m_F

il

e_au

toc_

tx

t() 30 4 19 7 354

7 0:03

:05

37 32 13 22 9 3346

106

85 34 119

450

Afis

eaza

_

Sug

estii

()

160

21 137

23 3250

124

3:30

:29

300

248

22 39 70 2273

36

14 39 28 67

47

611

Cau

taP

otri

vire

Exa

cta

() 43 9 30 8 679

19 0:12

:53

72 65 12 19 21 1393

2

49 75 31 106

656

Cau

taIn

ver

sare

Lite

re(

) 73 9 57 11 1391

60 1:10

:06

144

121

18 20 54 7572

4

18 61 28 89

730

Cau

taP

ozit

iaLi

tere

iPe

Tast

atur

a()

23 5 17 2 316

9 0:03

:54

34 34 11 14 13 4218

75 89 22 111

754

Cau

taLi

ter

eTas

tate

G

resi

t()

85 16 65 9 1878

69 1:26

:38

185

155

18 28 50 9356

5

20 56 24 80

841

Cau

taC

uvi

nteC

areI

nc

epC

u()

53 12 37 6 841

28 0:22

:29

87 77 15 20 29 2429

0

35 70 25 94

897

Cau

taC

uvi

nteC

uLite

r

aInP

lus(

)

68 12 53 9 1240

50 0:53

:10

129

109

17 20 46 5743

6

22 63 27 90

967

Cau

taC

uvi

nteC

uLite

r

aInM

inus

()

67 11 51 10 1177

46 0:47

:43

123

103

17 20 44 5153

8

23 63 28 92

1036

Cau

ta_S

u

gest

ii()

48 16 30 4 581

16 0:09

:21

60 50 16 23 17 1011

1

58 74 22 95

1085

impa

rte_Q

uery

_in_

C

uvin

te()

62 15 44 13 1253

55 1:01

:24

130

101

22 21 53 6631

4

19 63 33 96

1148

Citi

re_T

ast

e()

307

60 232

35 4917

124

3:30

:50

447

298

23 74 46 2277

07

22 17 25 42

1457

Ver

ifica

Da

caTe

rmen

ulA

pare

...()

46 14 26 8 717

20 0:13

:43

68 61 19 28 21 1483

0

48 74 30 104

1504

prel

ucre

az

a_Q

uery

()

938

263

624

73 1949

9

573

34:4

4:15

1539

1342

16 93 115

2250

997

9 -14

21 6

48

2443

Afis

eaza

_

Rez

ulta

te()

77 18 57 8 1806

54 1:00

:12

167

153

16 34 36 6501

7

28 59 24 83

2521

mai

n()

5 0 5 0 43 1 0:00

:04

7 6 4 6 2 86 500

125

0 125

Metricele de mai sus sunt metrici obtinute cu Testwell CMT++ (Instrument de Masura a Complexitatii Codului - Complexity Measures Tool). Programul cu care am testat a fost obtinut de aici: http://www.verifysoft.com/en.html, iar tabelul obtinut este un rezumat al tabelului furnizat de instrument (existau mai multe coloane, si cateva linii in plus, si nu exista legenda).

Explicatii:

LOCphy Numar linii codLOCbl Numar linii goale (nu contin nimic)LOCpro Numarul liniilor de program (instructiuni, declaratii)LOCcom Numarul liniilor cu comentariiV Volumul programului (dimensiune)B(x100) Numarul de buguri; B = ( E ^ (2/3) ) / 3000T Timpul de implementare; T = E / 18N1 Numarul total de operatoriN2 Numarul total de operanzin1 Numar operatori unici folositin2 Numar operanzi unici folositiD Gradul de dificultate al programului; D = ( n1 / 2 ) * ( N2 / n2 )E Efortul de implementare; E = V * DL(x1000)

Nivelul programului; L = 1 / D

MIwoc Indicele de mentenanta, fara comentariiMIcw Gradul de importanta al comentariilorMI Indicele de mentenanta

49

Anexa 2 – graficul functiilor tabelului Mai jos, se pot vedea functiile programului – cum se intrepatrund, care dintre ele

folosesc alte functii, si in ce alte functii sunt apelate. Sagetile nu au o semnificatie

aparte.

50

51