Un motor eficient de căutare în e-commerce · 2018-06-29 · 2 Rezumat / Abstract Rezumat în...

49
Ministerul Educației Naționale Universitatea „Ovidius” din Constanța Facultatea de Matematică și Informatică Master – Modelare și Tehnologii Informatice Un motor eficient de căutare în e-commerce Lucrare de disertație Coordonator științific: Prof. dr. Popa Constantin Absolvent: Breda Olivian-Claudiu Constanța 2018

Transcript of Un motor eficient de căutare în e-commerce · 2018-06-29 · 2 Rezumat / Abstract Rezumat în...

Ministerul Educației Naționale

Universitatea „Ovidius” din Constanța

Facultatea de Matematică și Informatică

Master – Modelare și Tehnologii Informatice

Un motor eficient de căutare în e-commerce

Lucrare de disertație

Coordonator științific: Prof. dr. Popa Constantin

Absolvent: Breda Olivian-Claudiu

Constanța 2018

2

Rezumat / Abstract Rezumat în limba română: lucrarea curentă are ca temă principală motoarele de

căutare pentru magazine online. Ea e formată dintr-o aplicație practică, care poate

prezice termeni de căutare introduși de utilizatorul programului în mod parțial eronat,

și are și facilitatea de a sorta rezultatele obținute – o listă de laptopuri. De asemenea,

există o parte teoretică, ce își propune să prezinte perspective asupra motoarelor de

căutare, trecând printr-un istoric al lor, prezentând modalitatea de funcționare a unui

motor de căutare, arătând niște limitări ale motoarelor de căutare și aspecte despre

viitorul motoarelor de căutare. În lucrarea teoretică este descrisă și soluția tehnică,

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

Domeniu principal: motoarele de căutare pentru magazine online.

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

inteligență artificială (artificial intelligence), optimizare pentru motoarele de căutare

(SEO, search engine optimization), machine learning (învățare automatizată).

Tipul lucrării: 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.

3

Cuprins

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

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

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

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

2. Istoric și motivație .................................................................................................... 9

2.1 Istoric al căutării informației ................................................................................ 9

2.2 Modalitatea de funcționare a unui motor de căutare ........................................ 17

2.3 Evaluarea eficienței unui motor de căutare ...................................................... 19

2.4 Starea actuală a domeniului ............................................................................. 21

2.5 Limitările unui motor de căutare generalist ...................................................... 25

2.6 Soluții potențiale pentru paginile de rezultate căutări fără niciun rezultat ......... 27

2.7 Viitorul motoarelor de căutare ale magazinelor online ..................................... 28

3. Soluția propusă ..................................................................................................... 31

3.1 Scop și obiective .............................................................................................. 31

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

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

3.4 Analiza implementării algoritmului .................................................................... 33

3.5 Posibilități de extindere a algoritmului .............................................................. 36

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

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

Anexa 1 – măsurarea complexității codului ............................................................... 45

Anexa 2 – graficul funcțiilor tabelului ......................................................................... 48

4

Lista figurilor

Figura 2.1.1 Graf direcționat, reprezentând o serie de șase pagini (Langville și

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

Figura 2.1.2 Graf pentru o rețea de 4 elemente (Langville și Meyer, 2006)...............13

Figura 2.1.3 Cota de piață a căutărilor web, februarie 2018, pentru piața din SUA

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

Figura 2.2.1: Unde își încep consumatorii din SUA căutările de produse în 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 numărul complex ciclomatic al lui McCabe (Tempero,

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

Lista tabelelor Tabel 2.1.1 Primele câteva iterații ale ecuației anterior prezentate asupra grafului

(Langville și Meyer, 2006)..........................................................................................12

Tabel 2.1.2 Cota de piață la nivel mondial, motoare de căutare (StatCounter Global

Stats, 2018)................................................................................................................15

Tabel 2.4.1 Comparație între funcțiile oferite pentru diferite tipuri de căutări în unele

motoare de căutare.....................................................................................................22

Tabel 2.5.1 Tipuri de conținut web invizibil (Sherman și Price, 2001)..........................26

Tabel 3.4.1 Indicatori pentru a măsura fiabilitatea programului propus (Littlefair,

2018)..........................................................................................................................34

5

1. Introducere Lucrarea de față, prin conținut și aplicația realizată, se încadrează în domeniul de

mare actualitate al motoarelor de căutare. Alegerea temei este motivată și susținută

de experiența de lucru de peste 10 ani în domeniu. Am putut identifica principalele

probleme ale motoarelor de căutare din magazinele online (de exemplu, o persoană

poate naviga pe site-ul Amazon și căuta o carte; unele rezultate, nerelevante, apar mai

sus ca altele, relevante, și uneori nu se obțin prin căutări rezultatele dorite).

Motivația principală a lucrării este dată de experiența negativă avută pe principalele

motoare de căutare pentru magazine online, fie ele din România sau pe plan

internațional. Filtrele Amazon nu funcționează întotdeauna corect (din perspectiva

noastră), iar căutarea de produse pe site uneori nu returnează lucrurile potrivite (o

persoană poate căuta ceva și fie nu obține niciun fel de rezultate, fie obține rezultate

nedorite). Iar aici este vorba de probleme pe site-ului unei companii gigant, care a avut

în 2017 vânzări de 177,9 miliarde de dolari (Kim, 2018). Întreaga piață românească de

e-commerce a fost estimată de GPeC (Gala Premiilor eCommerce, un eveniment

major pentru piața de e-commerce din România) la 2,8 miliarde de euro (Radu, 2018),

așa că, în mod firesc, magazinele online românești au avut bugete mai mici pentru

investiția în motoare de căutare eficiente. Unele probleme sunt mai mari pe site-urile

românești de comerț online. Am vrut să arătăm o modalitate practică prin care se pot

face unele îmbunătățiri la un motor de căutare cu resurse puține. Vom prezenta în

lucrare inclusiv idei noi, potențial utile de folosit pentru magazinele online în viitor.

În ceea ce privește gradul de noutate al lucrării – soluția propusă de noi vine ca

element de noutate cu un grad de predicție asupra termenilor introduși de utilizator.

Soluția există deja în motoare de căutare generaliste (Google, Bing, Yahoo!, Yandex,

Baidu), sau în unele tastaturi pentru telefoanele mobile (SwiftKey pentru Android și

iOS). Ea însă nu a fost implementată în magazinele online suficient de mult. Un

exemplu foarte bun de predicție este cel oferit de tastatura de mobil a celor de la

SwiftKey. Am dorit cu programul propus de noi să simulăm unele din funcționalitățile

de predicție pentru un eventual motor de căutare pentru produsele din magazinele

online. O mare parte din facilitățile prezentate sunt deja incluse în SwiftKey.

6

Scopul de la care am pornit lucrarea a fost atât de a implementa ideile pe care le

am în domeniul căutării pentru motoarele de căutare, de a da un model practic și

verificabil, cât și de a veni cu noi idei, ca posibile rute de prospectat pentru aplicații

viitoare. Acestea au rămas în plan pur teoretic, urmând a fi implementate de alte

entități, în încercarea de a îmbunătăți performanțele motoarelor de căutare din prezent.

Descrierea fiecărui capitol:

• 2. Istoric și motivație - acest capitol are o abordare mai degrabă teoretică, am

prezentat aspecte ce țin de părțile legate de teorie (istoric, motivație) ale unui

motor de căutare pentru magazine online.

• 2.1 Istoric al căutării informației - am prezentat în acest subcapitol evoluția

tehnică, de la primele colecții de documente de pe pereții pictați ai peșterilor,

mai departe pe papirus, pergament, hârtie și, în final, suport electronic. Am

prezentat sistemele de organizare a informației, diferite soluții pentru a cataloga

informațiile. Apoi au fost prezentate detalii despre cum primele motoare de

căutare aveau dificultăți în sortarea informațiilor de pe Internet. S-a continuat cu

doi algoritmi de sortare a datelor - PageRank (1998), motorul din spatele

Google, și HITS (tot 1998), un algoritm folosit inițial de motorul de căutare

Teoma. Am discutat în continuare despre RankBrain, unui sistem de inteligență

artificială bazat pe machine learning pentru a genera rezultatele căutărilor. Au

fost prezentate apoi cotele principalelor motoare de căutare, Google având

peste 90% din piață, și principalele motoare de căutare având aproape 99% din

piața motoarelor de căutare la nivel mondial. Am discutat și despre platforma

de căutare din spatele YouTube și cea a Facebook.

• 2.2 Modalitatea de funcționare a unui motor de căutare - în acest subcapitol am

arătat pentru început unde pornesc căutările internauților (Amazon, alte

motoare de căutare importante, retaileri). S-a prezentat și Teoria Setului Difuz

(Fuzzy Set Theory), o ramură a logicii difuze, și rolul ei în căutări. Au fost

descrise în continuare tipurile de căutări în metodele de obținere a informației -

căutări de proximitate / logică difuză / căutări booleene / puterea dată unor

termeni.

• 2.3 Evaluarea eficienței unui motor de căutare - în subcapitolul 2.3 au fost

prezentați diferiți KPI (indicatori cheie de performanță, key performance

7

indicators) folosiți pentru evaluarea unui motor de căutare - procentul de

utilizatori care folosesc căutarea / numărul de căutări per vizită / procentul de

ieșiri din pagina rezultate căutări / numărul mediu de itemi pentru o vizită cu

căutări vs. vizitele care nu au căutări / procentul căutărilor fără niciun rezultat /

căutările cele mai frecvente / intenția de căutare.

• 2.4 Starea actuală a domeniului – în începutul subcapitolului a fost prezentată

o comparație între funcțiile oferite pentru diferite tipuri de căutări în unele

motoare de căutare - abilitatea de a interpreta termenul scris greșit „Latpop” /

filtrare în rezultate / sortare rezultate / abilitatea de a interpreta „procesor laptop”

(inclusiv în engleză). 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, în care au fost analizate cele mai importante 50

de site-uri de e-commerce de pe piața Statelor Unite.

• 2.5 Limitările unui motor de căutare generalist - în subcapitolul acesta au fost

expuse unele din limitările motoarelor de căutare generaliste (motoarele de

căutare generaliste sunt motoare de tipul Google, Bing, Yahoo!, care caută în

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

sau Amazon, care caută doar anumite tipuri de date). Există diferite tipuri de

conținut care nu sunt indexabile de motoarele de căutare generaliste, și

înțelegerea acestor lucruri ajută la alegerea unui motor de căutare pentru nevoi

specifice. Capitolul și-a propus să arate că există anumite căutări pentru care

motoarele de căutare generaliste (Google, Bing, Yahoo!, Yandex, Baidu etc.)

nu sunt cele optime.

• 2.6 Soluții potențiale pentru paginile de rezultate căutări fără niciun rezultat – în

acest subcapitol am dat niște soluții pentru căutările care în mod tipic nu

returnează niciun rezultat (de exemplu, cineva caută un produs care nu există

pe site, sau tastează un cuvânt greșit, rezultând un cuvânt pentru care nu există

rezultate în mod tipic). De asemenea, am prezentat concluziile unui studiu

comparativ între mai multe motoare de căutare.

• 2.7 Viitorul motoarelor de căutare ale magazinelor online - am prezentat aici

primele încercări de aplicare a unor metode de machine learning asupra

eficienței motoarelor de căutare. Am folosit pentru aceasta o resursă de pe site-

8

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

folosit de diferite site-uri pentru a crește vânzările și ratele de conversie prin

îmbunătățirea experienței vizitatorilor (CX, Customer eXperience).

• 3. Soluția propusă - am scris în acest capitol despre soluția software propusă

de către noi pentru rezolvarea unor părți din problemele identificate în partea

teoretică.

• 3.1 Scop și obiective - în subcapitol au fost descrise, în mod sumar, care a fost

scopul și care au fost obiectivele cercetării noastre - se poate face relativ simplu

un instrument care să folosească predicția rezultatelor posibile, și apoi să

filtreze rezultatele obținute.

• 3.2 Descrierea algoritmului - am descris în acest subcapitol, pas după pas, cum

funcționează algoritmul meu. Se citește de la tastatură un text. Se verifică dacă

programul poate prezice niște termeni alternativi: de exemplu, inversarea unor

litere în cuvânt („latpop” vs. „laptop”) – au fost prezentate mai multe soluții de

acest tip. O altă funcție a programului este de a căuta și sorta cuvintele în

varianta finală introdusă de la tastatură în baza de date de laptopuri.

• 3.3 Utilitatea metodei - în subcapitol am prezentat utilitatea demersului. În

primul rând, funcția de auto-completare termeni, iar apoi, funcția de validare

date. Mai departe, odată realizată procedura pe un set de date (programul a

fost făcut să funcționeze pe o bază de date pentru laptop-uri), se pot imagina

ușor soluții pentru alte tipuri de date de pe site-uri de tip e-commerce.

• 3.4 Analiza implementării algoritmului - subcapitolul prezintă de ce a fost ales

limbajul de programare C++ și paradigma de scriere cod programare

funcțională, apoi procedura, pas cu pas, prin care a fost făcut programul.

Ulterior, au fost prezentați câțiva indicatori folosiți pentru a măsura fiabilitatea

software-ului, folosind un program numit CCCC. Au fost detaliați indicatorii

folosiți, sumar.

• 3.5 Posibilități de extindere a algoritmului - este un subcapitol în care am

prezentat diferite posibile viitoare soluții prin care se poate perfecționa aplicația

noastră.

• Lucrarea se încheie cu un capitol de concluzii și bibliografia aferentă.

9

2. Istoric și motivație

2.1 Istoric al căutării informației Primele colecții de documente au fost înregistrate pe pereții pictați ai peșterilor.

Apoi, până la invenția hârtiei, anticii romani și greci au înregistrat informația pe role de

papirus. Unele artefacte de papirus aveau mici etichete atașate rolelor, care ajutau la

găsirea informației. Cuprinsul unei lucrări au început să apară în rolele din Grecia în

secolul 2 î.Hr. Ulterior, s-a scris pe pergament, straturi subțiri de piele de animale.

Pentru perioada aceasta, cele mai relevante metode de informație erau cele pe cale

orală. (Langville și Meyer, 2006)

Inventarea hârtiei, cel mai bun suport de stocare a informației, a crescut viteza

înregistrării documentelor și au început să apară colecții tematice. Acest lucru a fost

accelerat puternic prin inventarea presei tipografice de către Johann Gutenberg în

1450. În anii 1700 au apărut în America biblioteci publice, la inițiativa lui Benjamin

Franklin. Astfel, a crescut dorința de a ierarhiza informațiile. (Langville și Meyer, 2006)

Primul sistem de organizare a informației a fost atribuit autorului roman Valerius

Maxiums, care l-a folosit în anul 3 d.Hr. pentru a organiza informația unei cărți ale lui.

Ulterior, au apărut sisteme ca sistemul decimal Dewey (1872), cataloagele de cărți

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

Cataloging – catalog citibil de către mașini) în anii 1960. În ceea ce privește căutările

în baze de date pentru cărți au început cu un sistem SMART (inteligent) al Cornell în

anii 1960. (Langville și Meyer, 2006)

În anul 1989 stocarea, accesare și căutarea colecțiilor de documente a fost

revoluționată de o invenție numită World Wide Web (rețeaua pentru lumea întreagă)

de către fondatorul său, Tim Berners-Lee. Aceasta a devenit semnalul final al

dominației Erei Informației și moartea Erei Industriale. Cu toate acestea, volumul mare

de informație făcea căutările inițiale foarte greoaie. (Langville și Meyer, 2006)

Primele motoare de căutare aveau dificultăți în ierarhizarea informației. Lucrurile s-

au schimbat radical odată cu apariția Google. Într-un document datat 29 ianuarie 1998,

"The PageRank Citation Ranking: Bringing Order to the Web" (ierarhizarea bazată pe

10

citări PageRank: aducând ordine în Internet), autorii, dintre care primii doi au fondat

Google (Lawrence Page, Sergey Brin, Rajeev Motwani și Terry Winograd), prezentau

PageRank, un algoritm care dădea o importanță resurselor găsite în căutări, pe

măsura volumului linkurilor către o anumită resursă (cu precizarea că o resursă putea

acorda o valoare mai mare dacă, la rândul ei, avea multe linkuri). Autorii concluzionau

că "folosind PageRank, putem ordona căutările, în așa fel încât paginile cele mai

importante au poziții preferențiale. În experimentele făcute, asta a dus la rezultate de

calitate ridicată 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 căutare pe Internet pe

scală largă, și hipertextual), în care Sergey Brin și Lawrence Page prezentau motorul

de căutare în detaliu, inclusiv formula de calculare a PageRank-ului:

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

citează. Parametrul d este un factor de amortizare, care poate fi setat între 0 și 1. În

general, îl stabilim la valoarea 0,85. De asemenea, C(A) este definit ca numărul 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 că PageRank-ul formează o distribuție probabilistică peste toate paginile de

Internet, așa că suma tuturor PageRank-urilor va fi 1. PageRank-ul pentru 26 de

milioane de pagini web poate fi calculat în câteva ore pe o stație de lucru medie.” (Brin

și Page, 1998)

Într-o lucrare apărută în 2006 (Langville și Meyer, 2006), formula este

prezentată ca mai jos, o ecuație simplă a sumelor, rădăcina cărei derivă din cercetările

bibliometrice, analiza structurii citațiilor între lucrările academice. PageRank-ul paginii

Pi, numită r(Pi), este suma tuturor PageRank-urilor paginii care direcționează către Pi.

𝑟(𝑃𝑖) = ∑𝑟(𝑃𝑗)

|𝑃𝑗|,

𝑃𝑗∈𝐵𝑃𝑖

unde BPi este setul paginiilor care au trimitere către Pi (trimit backlink către Pi în

cuvintele autorilor Sergey Brin și Lawrence Page), și |Pj| este numărul de linkuri

11

externe (către alte entități) trimise din pagina Pj. De observat că PageRank-ul paginilor

care trimit linkuri către entitate curentă r(Pj) din ecuația anterior menționată este

temperat de numărul de recomandări făcute de Pj, notat |Pj|. Problema cu ecuația

respectivă este că valorile r(Pj), PageRank-ul paginilor care trimit către pagina Pi, sunt

necunoscute. Pentru a trece peste această problemă, autorii ecuației au folosit o

procedură iterativă. Astfel, ei au presupus că, la început, toate paginile au un

PageRank egal una cu cealaltă (să zicem, 1/n, unde n este numărul de pagini din

indexul web al lui Google). Acum regula în ecuația prezentată este urmată pentru a

calcula r(Pi) pentru fiecare pagină Pi din index. Regula dinecuație este aplicată în mod

succesiv, înlocuind valorile iterației anterioare în r(Pj). Introducem și alte notații pentru

a defini această procedură iterativă. Fie rk+1(Pi) PageRank-ul paginii Pi pentru iterația

k + 1. Atunci,

𝑟𝑘+1(𝑃𝑖) = ∑𝑟𝑘(𝑃𝑗)

|𝑃𝑗|.𝑃𝑗∈𝐵𝑃𝑖 (Langville și Meyer, 2006)

Procesul este inițiat cu r0(Pi) = 1/n pentru toate paginile Pi și este repetat, în

speranța că scorurile Page Rank vor converge în final către niște valori stabile.

Aplicând ecuația de mai sus rețelei din figura de mai jos dă următoarele valori pentru

PageRank, după câteva iterații:

Figura 2.1.1 Graf direcționat, reprezentând o serie de șase pagini

(Langville și Meyer, 2006)

1 2

3

6 5

4

12

Iterația 0 Iterația 1 Iterația 2 Rank la iterația 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 câteva iterații ale ecuației anterior prezentate asupra grafului

(Langville și Meyer, 2006)

Un alt algoritm al motoarelor de căutare este și HITS. Un acronim pentru

„Hypertext Induced Topic Search” (căutare de subiecte induse prin hipertext), acesta

a fost un algoritm aflat la baza Teoma, un motor de căutare lansat în 2001 și

achiziționat în același an de un alt motor de căutare, Ask Jeeves Inc. (The Globe și

Mail, 2001)

HITS, algoritm inventat de Jon Kleinberg în 1998 (aproximativ în aceeași perioadă

în care Sergey Brin și Lawrence Page lucrau la algoritmul PageRank), asemenea

PageRank, folosește structura de URL-uri pentru a crea scoruri de popularitate

asociate cu paginile web. Totuși, HITS are anumite diferențe (detalii preluate din

Langville și Meyer, 2006):

• Dacă metoda PageRank produce un singur scor de popularitate pentru fiecare

pagină, HITS produce două.

• În timp ce PageRank-ul este independent de căutare, HITS depinde de

căutarea făcută.

• HITS privește paginile ca autorități și huburi. O autoritate este o pagină cu

numeroase linkuri către ea, și un hub este o pagină cu multe linkuri dinspre ea

spre alte pagini. Paginile de autoritate și huburile merită să fie numite „bune”

atunci când următoarea afirmație circulară este validă: „Autoritățile bune au

linkuri către ele din partea unor huburi bune și huburile bune trimit către autorități

bune”. Așadar, fiecare pagină este o măsură a autorității și o măsură a unui

hub.

13

Cum funcționează algoritmul? (Langville și Meyer, 2006) Fiecare pagină i are un

scor de autoritate xi și un scor de hub yi. Fie E setul tuturor marginilor direcționate în

graful de Internet și fie eij marginea direcționată de la nodul i către nodul j. Dat fiind

faptul că fiecărei pagini i-a fost atribuită inițial un scor de autoritate inițială xi și un scor

de hub yi, HITS rafinează în mod succesiv aceste scoruri calculând:

𝑥𝑖(𝑘)

= ∑ 𝑦𝑗(𝑘−1)

𝑗:𝑒𝑗𝑖𝜖𝐸

𝑦𝑖(𝑘)

= ∑ 𝑥𝑗(𝑘)

𝑗:𝑒𝑗𝑖𝜖𝐸

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

Aceste ecuații, care au fost ecuațiile originale ale inventatorului lor, Jon

Kleinberg, pot fi scrise într-o formă matriceală cu ajutorul matricei de adiacență L a

grafului de URL-uri direcționate. (Langville și Meyer, 2006)

1 2

3 4

Figura 2.1.2 Graf pentru o rețea de 4 elemente (Langville și Meyer, 2006)

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

14

În notarea matricială, ecuațiile precizate iau forma:

x(k) = LTy(k-1) și y(k) = Lx(k),

unde x(k) și y(k) sunt n x 1 vectori care păstrează autoritatea aproximativă și scorurile

fiecărui hub la fiecare iterație. (Langville și Meyer, 2006)

Algoritmul original HITS: (Langville și Meyer, 2006)

1. Se inițializează y(0) = e, unde e este vectorul coloană al tuturor valorile de 1. Pot

fi folosiți și alți vectori de început pozitivi.

2. Până la convergență, execută:

x(k) = LTy(k-1)

y(k) = Lx(k)

k = k + 1

Se normalizează x(k) și y(k).

Lucrurile au evoluat, pe măsură ce anii au trecut. Algoritmii s-au tot schimbat,

la un moment dat Google afirma că au 200 de factori. Întrebat despre asta, în 2010,

CEO-ul Google, Eric Schmidt, a afirmat că nu îi poate menționa, pentru că sunt într-o

continuă schimbare, și, de asemenea, pentru că sunt un secret comercial al companiei.

(Sullivan, 2010)

Potrivit informațiilor celor de la SearchEngineLand, un site important în lumea

motoarelor de căutare, „RankBrain” este numele dat de către Google unui sistem de

inteligență artificială bazat pe învățare automată (machine-learning artificial

intelligence system) care este folosit pentru a genera rezultatelor căutărilor. Prin

machine learning, un calculator poate să se învețe pe sine însuși cum să facă o

sarcină, mai degrabă decât să urmeze o procedură predefinită. La data apariției

articolului, algoritmul ocupa locul 3 în cele mai importante criterii după care un site era

afișat în rezultatele căutărilor. Scopul lui? Interpretarea rezultatelor care nu conțin

cuvintele căutate în mod exact, ci cuvinte ce ar putea fi similare. Nevoia de a exista a

algoritmului venit din faptul că Google procesa în 2016 3 miliarde de căutări zilnic, iar

în 2007 a afirmat undeva între 20-25% din acele căutări nu au fost observate până

atunci (nu fuseseră probabil căutate niciodată până atunci). În 2016 e posibil să fi ajuns

15

la 15% din căutări, în continuare o valoare mare de căutări pentru care algoritmul își

justifică existența. Sunt căutări în special formate din mulți termeni („long-tail”, căutări

foarte specifice, dar, totuși, numeroase). (Sullivan, 2016)

Luna Google Bing Yahoo! Baidu Yandex

Ru Yandex Alții

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 piață la nivel mondial, motoare de căutare (StatCounter Global

Stats, 2018)

Vă puteți întreba unde au loc căutările în 2018, nu doar cele din motoare de

căutare, ci, la modul general, pe toate platformele unde pot avea loc căutări. Date din

februarie 2018 pentru piața din SUA arată dominația Google, care deține motorul de

căutare, Google Imagini și YouTube (cu un procent mult mai mic, și Google Hărți). De

remarcat că Amazon, cel mai mare magazin online, are o cotă un pic mai mare decât

Bing, al doilea motor de căutare generalist, după Google. (Fishkin, 2018)

16

Figura 2.1.3 Cota de piață a căutărilor web, februarie 2018, pentru piața din SUA

(date din partea companiei Jumpshot)

Câte motoare de căutare (generale, pentru tot Internetul) există? Poate, din

diferite surse, ați aflat că există „sute de motoare de căutare”. Majoritatea dintre

acestea sunt însă fie variații ale site-urilor principale (de exemplu, Google.fr pentru

Franța sau Google.co.uk pentru Marea Britanie), fie sunt meta motoare de căutare,

care folosesc rezultatele oferite de alte motoare de căutare (Dogpile, Mamma.com,

Metacrawler). Da, există unele motoare de căutare tematice (Wolfram|Alpha, IMDb),

17

dar motoarele cele mai vizitate au un procent apropiat de 95% din piața motoarelor de

căutare. (Grappone și Couzin, 2011)

Există și alte tipuri de algoritmi care pot susține un motor de căutare. Platforma

de clipuri video YouTube este al doilea motor de căutare, ce-i drept, specializat, după

Google, cu aproximativ 3 miliarde de căutări pe lună, un volum de căutare mai mare

decât cel al Bing, Yahoo!, AOL și Ask.com combinate. (Wagner, 2017) Lucrurile la care

se uită cei 1,5 miliarde de utilizatori înregistrați ai platformei YouTube sunt influențate

de o listă de clipuri asemănătoare. De fiecare dată când un internaut privește un clip

YouTube, i se prezintă într-o bară laterală o listă de clipuri asemănătoare. Acea listă e

considerată cel mai important factor în creșterea cotei de piață a YouTube. În una din

puținele explicații publice despre cum funcționează formula, o lucrare academică care

prezintă rețelele neuronale ale algoritmului, inginerii YouTube o descriu drept una din

"cele mai mari și sofisticate sisteme de recomandare la scală industrială existente în

lume". (Lewis, 2018)

Faptul că Facebook, cea mai folosită rețea socială la nivel mondial – 2,2 miliarde

de utilizatori activi pe lună, în al 4-lea trimestru al lui 2017 (Statista, 2018) –, cu un

potențial enorm în a ajuta utilizatorii în căutarea de produse și servicii pe plan local, cu

un ecosistem format din milioane de pagini de afaceri, date despre locație ale

utilizatorilor, date de comportament, informații demografice, rată de angajament, nu a

reușit în anii recenți să fie un concurent serios pentru Google în căutările de afaceri

locale poate fi un argument că a fi relevant în căutări e o sarcină mai grea decât pare

la o analiză superficială.

2.2 Modalitatea de funcționare a unui motor de căutare

De ce este important, în primul rând, să discutăm despre eficiența unui motor de

căutare? În SUA, cota de piață a celor care își încep căutările de produse de cumpărat

a scăzut pentru Amazon de la 55 la 49% pentru Amazon, în detrimentul motoarelor de

căutare (precum Google), care au crescut de la 28 la 36%, potrivit unui studiu Survata,

citat de Bloomberg. (Keyes, 2017)

18

Figura 2.2.1: Unde își încep consumatorii din SUA căutările de produse în online

(Keyes, 2017)

Date strânse de MarketingSherpa în 2007 arată că 43% din vizitatorii unui site

web merg imediat la funcția de căutare. Și clienții care folosesc caseta de căutare în

site-uri e-commerce convertesc de aproape trei ori mai mult decât cei care navighează

pe web în mod obișnuit. (content: MarketingSherpa, 2007)

Motoarele de căutare (care sunt, la bază, modele de obținere a informației)

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

dr. Lotfi Zadeh in 1969, pentru a descoperi conexiuni semantice între două cuvinte.

Mai degrabă decât să folosească un dicționar pentru a stabili dacă două cuvinte sunt

legate unul de celălalt, sistemele de obținere a informației pot folosi o bază de dată de

conținut masivă pentru a își da seama de legături. (Enge et al., 2012)

Tipuri de căutări în metodele de obținere a informației:

• Căutări de proximitate - o căutare de proximitate folosește ordinea frazei de

căutare pentru a găsi documente asemănătoare. De exemplu când căutați (cu

ghilimele) "muștar dulce german", specificați doar o potrivire de proximitate

precisă (termenii să fie prezenți în aceeași ordine). Dacă se vor înlătura

ghilimelele, proximitatea termenilor de căutare tot contează pentru motoarele

de căutare, dar acum vor arăta documentele al căror conținut nu se potrivește

în mod exact cu ordinea frazei căutate, cum ar fi „muștar german dulce”. (Enge

et al., 2012)

0

10

20

30

40

50

60

2015 2016 2017

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

Amazon Motoare de căutare Retaileri

19

• Logică difuză - se referă la un tip de logică ce nu este adevărată sau falsă în

mod categoric. Un exemplu comun este dacă o zi este însorită (spre exemplu,

dacă este acoperită 50% de nori, este în continuare o zi însorită?). Logica de

acest tip este folosită pentru a detecta și procesa cuvintele tastate greșit. (Enge

et al., 2012)

• Căutări booleene - căutările booleene folosesc termeni precum AND (și), OR

(sau) și NOT (nu, negație). Acest tip de logică este folosită pentru a extinde sau

reduce documentele care apar într-o căutare. (Enge et al., 2012)

• Puterea dată unor termeni - acest lucru se referă la importanța unui termen de

căutare particular în cererea transmisă motorului de căutare. Ideea este de a

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

superioare. De exemplu, prepozițiile vor primi foarte puțină putere în selectarea

rezultatelor, deoarece apar în majoritatea documentelor. Nu ajută la selectarea

unor documente. (Enge et al., 2012)

2.3 Evaluarea eficienței unui motor de căutare Există mai mule tipuri de metrici care pot evalua eficiența unui motor de căutare.

Mai jos, câteva din acestea, dintr-un articol apărut pe blogul oficial al companiei Adobe

(Simon, 2015). Sunt mai mulți KPI (indicatori cheie de performanță, key performance

indicators):

• Procentul de utilizatori care folosesc căutarea – vizitatorii site-ului de analizat

își petrec timpul navigând pe site înainte de a merge în caseta de căutare, sau

merg la ea direct de la început? Indicatorul, dacă are valori mici pentru cei care

folosesc caseta de căutare, poate indica faptul că există niște experiențe

anterioare neplăcute fie cu acest site, fie cu alte site-uri din nișă sau industrie,

poate sugera că există o casetă de căutare slab vizibilă și insuficient de bine

promovată sau poate arăta că site-ul este atât de prietenos cu vizitatorii, încât

aceștia găsesc informația direct, și nu au nevoie de căutări. Cu instrumente

precum cele de analytics (informații statistice organizate pentru a fi analizate;

exemplu – Google Analytics sau Omniture pe plan internațional; în România,

Trafic.ro sau Brat.ro - Studiul de Audiență și Trafic Internet, SATI) se poate

măsura acest indicator.

20

• Numărul de căutări per vizită – câte căutări face fiecare vizitator. Cea mai bună

situație este în care face doar una – o persoană caută ceva, găsește, și

convertește (adică devine client) imediat. Mai mult de o căutare per vizitator

poate însemna lucruri rele, cum ar fi că o căutare a fost goală sau a găsit lucruri

nepotrivite. Cei de la Google sau alte motoare de căutare pot evalua și ei acest

indicator – să zicem că cineva merge la Google, caută ceva, intră pe un site, e

nemulțumit (probabil), sau e insuficient mulțumit, și se întoarce la Google și face

click pe un alt rezultat. Acest tip de acțiune se numește „bounce” (întoarcere în

urma unui impact). Vizitatorii intră pe un site, nu găsesc, și se întorc în punctul

de plecare, în căutarea unui rezultat mai bun. Iarăși, acesta este un indicator

de bază în instrumentele tip analytics.

• Procentul de ieșiri din pagina rezultate căutări – dacă un vizitator părăsește site-

ul din pagina de rezultate căutări obținută în urma unei căutări în site, în mod

sigur site-ul are niște probleme la care ar trebui ca deținătorul site-ului să se

uite. Căutările ineficiente nu sunt o experiență a consumatorilor pozitivă.

Obiectivul de marketing al zilelor noastre este prezentarea unui vizitator cu

experiență pozitivă în perspectiva sa de client. Clientul ar trebui să găsească ce

căutau încă din prima încercare. De remarcat că acest procent se corelează

puternic cu procentul intrărilor într-un site. Dacă pe un site se intră frecvent pe

o anumită pagină a site-ului, e firesc ca pe acel site să existe și un procent

ridicat al celor care părăsesc site-ul din pagina respectivă. Totul se reduce însă

la procente – este procentul celor care părăsesc pagina în linie cu restul

paginilor sau e ceva radical diferit? În funcție de răspunsul la această întrebare

se poate decide dacă e cazul să se ia măsuri sau nu.

• Numărul mediu de itemi pentru o vizită cu căutări vs. vizitele care nu au căutări.

Cheia în evaluarea acestei diferențe e în procente. Aici intră o doză de bun simț

în comparații, într-o oarecare experiență. Ce se întâmplă pe site-urile principale

de e-commerce este că se testează constant lucruri, în căutarea perfecționării.

• Procentul căutărilor fără niciun rezultat – este una din situațiile în care o veste

proastă poate fi folosită în avantajul magazinului online. E bine ca deținătorul

magazinului să se uite peste ce căutau acele persoane, care e procentul celor

care nu găsesc niciun rezultat, ce fac după ce ajung într-un punct mort cu

căutările? Soluții la aceste probleme am încercat să dăm și în programul nostru

21

– de exemplu, dacă cineva caută 4 termeni și pe site se găsesc doar 3,

programul 3 afișează cele mai relevante rezultate doar pentru cei 3 termeni.

• Căutările cele mai frecvente – ce caută un vizitator? Înțelegerea termenilor cei

mai frecvent folosiți poate să ajute deținătorul magazinului online să înțeleagă

de ce au venit internauții pe site. Cu această informație, se poate îmbunătăți

navigația sau apelurile la acțiune (butoane precum „Adaugă în coș”, „Cumpără”,

„Abonează-te la newsletter” – poștă electronică, „Contactează-ne”), în așa fel

încât vizitatorii să nu apeleze atât de mult la căutări. E bine ca deținătorul

magazinului să folosească instrumentele de tip analytics pentru a îmbunătăți

algoritmii de căutare în site. Tot aici e de menționat și instrumentul Google

Trends (trenduri de căutare din statisticile Google), care permite evaluarea

căutărilor din industrie. Un alt instrument ar putea fi Google Keyword Planner

(planificatorul de cuvinte cheie de la Google), care folosește termenii căutați

pentru vizitatori, și poate da informații de tip sezonalitate, sau costuri per click

pentru campaniile de publicitate plătită.

• Intenția de căutare – un comportament intangibil, și, cu toate acestea critic de

înțeles. Aici este vorba de a măsura la ce se gândea vizitatorul în timpul vizitei

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

a investiției), pentru că există, de exemplu, unii vizitatori care intră pe un site

doar ca să vadă ce mai e nou, și navighează liber. Alții sunt acolo strict pentru

că au nevoie de informație, și au un model de navigare pentru a obține informații

(de exemplu, detalii tehnice despre un produs, sau link către pagina

producătorului, sau un video explicativ cu produsul). Șansele de conversie

directă a acestor vizitatori sunt mici, dar e de menționat că prin mai multe vizite

pe un site, acesta va rămâne în mintea vizitatorului, care poate converti în client

la un moment ulterior. Totuși, este de preferat ca în instrumentul de Analytics

să existe un diferențiator clar între clienții care fac tranzacții și cei care doar

navighează pe un site în scopul obținerii de informații.

2.4 Starea actuală a domeniului Mai jos, un tabel comparativ între mai multe motoare de căutare, din România, și

pe plan internațional:

22

Motor de

căutare

Abilitatea de a

interpreta

„Latpop”

Filtrare în

rezultate

Sortare

rezultate

Abilitatea de a

interpreta „procesor

laptop” (+engleză)

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 Comparație între funcțiile oferite pentru diferite tipuri de căutări în unele

motoare de căutare

Am făcut o mică cercetare comparativă între unele magazine online, și motoare

de căutare „clasice”. De asemenea, și două site-uri de anunțuri. Mai jos, câteva

observații.

În primul rând, motoarele de căutare „clasice” se descurcă în general mai bine

la interpretarea căutărilor semantice. De exemplu, dacă scriem „procesor laptop” (sau,

în engleză, „laptop processor”), ne vom aștepta să primim rezultate despre procesoare

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

procesoare), nu genți de laptopuri cu anumite procesoare, nu coolere de procesoare

de laptop. Se observă însă că, la această căutare, magazinele online clasice eșuează

în a interpreta căutarea noastră. Soluțiile ar fi două: pe de o parte să folosească

inteligența artificială pentru a învăța din căutările anterioare (spre exemplu, cineva

caută „procesor laptop”, nu e mulțumit de rezultate, apoi merge în categoria

procesoare, subcategoria procesoare laptop; acesta ar putea fi un semnal că acea

categorie e relevantă pentru căutare), sau ar putea face reguli manuale de căutare (toți

cei care caută „procesor laptop” să fie trimiși automat în categoria respectivă).

O a doua observație e că motoarele de căutare „clasice” (Google, Bing) au un

impediment major – nu au indexare instantanee a rezultatelor. Asta înseamnă că pe

23

un site ca Amazon (o căutare site:amazon.com la Google arată că Google a indexat

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

milioane de pagini) Google și Bing sunt nevoiți să indexeze (să parcurgă cu mici roboți

automat – spideri – întregul site) foarte multe pagini pentru a avea o variantă cât mai

recentă a site-ului. Desigur, asta durează zile, uneori săptămâni. Așa că pentru Google

și Bing asta înseamnă că nu au niciodată în index cele mai recente variante ale

paginilor de Internet. Aceste pagini pot suferi modificări, apar noi produse, se schimbă

prețurile, apar promoții. Din acest motiv, sortarea, cel puțin cu tehnologia de astăzi, e

foarte dificilă. Da, Google și Bing pot „ști” care este prețul laptopurilor și să

implementeze o soluție de sortare a rezultatelor după preț. Dar dacă este prețul de

acum câteva zile, sau, mai rău, acum o săptămână, fără nicio informație despre

promoții și schimbări de preț de ultim moment, rezultatele vor avea o relevanță mai

redusă. Prin urmare, se întâmplă ce am observat în cercetarea noastră sumarizată în

tabel – motoarele de căutare „clasice” nu au implementate funcții de filtrare / sortare

rezultate, și ne așteptăm ca situația să nu se schimbe prea devreme, din cauza

limitărilor tehnice (motoarele de căutare indexează relativ greu un site mare de

e-commerce).

Avem și o ultimă observație, despre predicții cuvinte. Google este un motor de

căutare care, din experiența noastră, are abilitatea de a interpreta foarte bine un

termen tastat, chiar dacă e tastat cu greșeli de tipul litere inversate, prea multe litere

într-un cuvânt dorit, prea puține. În unele căutări, mai nou, Google chiar ignoră o parte

din cuvintele introduse, în încercarea de a fi cât mai relevant. În căutarile noastre, am

observat că olx.ro și Elefant.ro nu interpretează căutarea „latpop” (desigur, scrisă fără

ghilimele, altfel și Google o va vedea ca pe o căutare corectă) ca pe o căutare scrisă

greșit. O tastatură numită SwiftKey, disponibilă pe sistemele de operare de mobil iOS

(din 2014) și Android (din 2010) are bune abilități de a prezice cuvinte, de a învăța din

cuvintele pe care utilizatorii le tastează pe mobil. Tehnologia din „spatele” Google, sau,

la o scară mai mică, dar în continuare eficientă, a SwiftKey nu considerăm că se

regăsește încă în toate magazinele online. Faptul că există o tehnologie accesibilă

oricui nu înseamnă și că toate software-urile de predicție cuvinte învață din experiența

altora și le și folosesc.

24

În plus, față de ce am analizat în tabel (pentru că e mai dificil de interpretat) este

și abilitatea de a acorda importanță diferită cuvintelor într-o căutare. De exemplu,

primele cuvinte dintr-o căutare ar trebui să fie mai importante decât restul. Într-un

manual de căutare avansată pe Google, se menționează diferența între [blue sky]

(cerul albastru și compania Blue Sky Studios) și [sky blue] (albastru cer, o denumire

folosită în alte contexte). (Edu.google.com, 2012) Pentru magazinele online ar trebui

să conteze ordinea în care sunt scrise cuvintele, și care sunt cuvintele scrise la

începutul frazei.

Într-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 piața 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 cercetării efectuate

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

Câteva observații din articolul respectiv:

• Doar 16% din site-urile de e-commerce cele mai importante furnizează

utilizatorilor o experiență de filtrare a rezultatelor rezonabil de bună. Acest lucru

se întâmplă din cauza lipsei unor opțiuni de filtrare a rezultatelor importante. Din

datele studiului rezultă că logica de filtrare ineficientă și interfețele nefuncționale

sunt și ele probleme.

25

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

unor categorii pentru câteva din categoriile de produse cele mai importante.

• 20% din site-urile de e-commerce nu au filtre tematice, în ciuda faptului că vând

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

• Din site-urile care se ocupă de produse care sunt dependente de o

compatibilitate (de exemplu, o placă de bază e compatibilă doar cu anumite

microprocesoare; sau un încărcător baterii poate lucra doar cu anumite baterii),

32% nu au filtre de comptabilitate.

• Testele au arătat că mai mult de 10 valori filtrate necesită scurtarea (truncation)

rezultatelor pentru a fi afișate în mod corect pe ecran. Cu toate acestea, 32%

din site-uri fie au un design de scurtare insuficient, care face ca utilizatorii să nu

observe valorile truncate (6%), sau se folosesc de ceva ce testele au arătat că

e și mai problematic, zone de scroll intern (24%, se referă la casete în care

vizitatorii dau scroll orizontal și/sau vertical pentru a putea citi toată informația).

• Doar 16 din site-uri promovează în mod activ filtre deasupra listei de produse

(aceasta este o pre-condiție pentru situația când se depinde mai mult de filtre

decât de categorii produse).

• Abilitatea de filtrare eficientă variază puternic de la o industrie la alta,

electronicele și industria confecțiilor suferind de filtre insuficiente (pentru fiecare

din contextele lor specifice), în timp ce site-urile cu bricolaj sau vânzătorii de

produse generaliste au magazinele cu cele mai bune performanțe de filtrare

produse.

2.5 Limitările unui motor de căutare generalist Am discutat în lucrare până acum doar de lucrurile care pot fi găsite de

motoarele de căutări. Totuși, aceste motoare de căutare au limitările lor. Sunt unele

aspecte ce țin de ordin tehnic, pe care o să le discut mai jos, care arată că un motor

de căutare are limitările lui în a găsi informația pe un site. Pe un site de e-commerce,

de exemplu, un motor de căutare clasic (Google, Bing, Yahoo!, Yandex, Baidu) nu

poate adăuga produse în coș, nu poate compara produse, nu poate completa un

formular de cerere ofertă, nu poate interpreta ce înseamnă să ai un discount la

cumpărarea a două produse în același timp.

26

Motoarele de căutare generaliste (acestea sunt motoare de tipul Google, Bing,

Yahoo!, care caută în surse de date diverse, spre deosebire de cele specializate, cum

sunt YouTube sau Amazon, care caută doar anumite tipuri de date) adaugă constant

facilități și îmbunătățiri serviciilor lor. Lucruri care sunt invizibile astăzi pot deveni

vizibile mâine, dacă motoarele de căutare vor decide să adauge capabilitatea de a

indexa lucruri pe care în prezent nu pot sau nu doresc să indexeze. (Sherman și Price,

2001)

Tip de conținut web invizibil De ce este invizibil

Pagină care nu este conectată cu alte pagini

de internet.

Nu există linkuri prin care roboții

motoarelor de căutare să ajungă la

pagină.

Pagină care constă în principal din imagini,

audio sau video.

Nu există suficient text pentru ca

motoarele de căutare să înțeleagă

despre ce e vorba în pagină.

Pagini constând în fișiere PDF (Portable

Document Format, un tip de fișier al companiei

Adobe special creat pentru documente), sau

Postscript, Flash, Shockwave, executabile

(programe) sau fișiere comprimate (.zip, .tar

etc.)

Indexabile din punct de vedere

tehnic, dar în principal ignorate, în

special din motive legate de afaceri

sau politica de funcționare a

motorului de căutare.

Conținut în baze de date relaționale. Roboții motoarelor de căutare nu

pot completa câmpurile cerute în

formulare interactive.

Conținut în timp real. Date efemere, cantități enorme,

informație care se schimbă rapid.

Conținut generat dinamic. Conținutul particularizat este

irelevant pentru majoritatea

căutătorilor. Teamă de capcane

pentru roboții motoarelor de

căutare.

Tabel 2.5.1 Tipuri de conținut web invizibil (Sherman și Price, 2001)

27

2.6 Soluții potențiale pentru paginile de rezultate căutări fără niciun

rezultat În lucrarea "Designing Search: UX Strategies for eCommerce Success", autorul

Greg Nudelman afirmă că nu există un set de reguli clare care să garanteze o

implementare a unei pagini care nu returnează niciun rezultat. Totuși, în lucrare, el

prezintă patru principii generale care pot furniza un bun punct de început (Nudelman,

2011):

1. „Nu vă fie teamă să spuneți că nu ați înțeles. Indicați clar că nu ați obținut niciun

rezultat”, astfel încât clientul să își dea seama că este o problemă, și să o poată

corecta. Dacă vizitatorul înțelege că nu sunt rezultate în pagină, problema se

poate remedia prin tastarea altor termeni cheie.

2. „Axați-vă pe a furniza o rezolvare. Asigurați-vă că fiecare variabilă din pagina

de rezultate de căutare face ceva productiv, pentru a ajuta la rezolvarea

problemei cu niciun rezultat în căutare.” Spre exemplu, cei de la Google, când

cineva introduce cuvinte ce par ar fi scrise greșit, întreabă internauții "Ați dorit

să scrieți ...?" (alt termen decât cel introdus).

3. „Creați o strategie de potrivire parțială robustă. Constrângerile prea mari sunt

unele din greșelile cele mai frecvente pe care le fac oamenii când caută pe site-

uri de e-commerce.” Dacă aveți o strategie de rezultate parțiale robuste, ați

putea, de exemplu, să faceți ca o căutare să răspundă doar la 3 termeni din cei

5 căutați. Google face, de asemenea, și acest lucru.

4. „E bine să aveți mai multe strategii de livrare a răspunsurilor. Obțineți rezultate

din surse diferite, pentru a furniza rezultate care să ajute la căutările fără rezultat

(inițiale), dar în același timp păstrați relevanța căutării inițiale efectuate de

vizitator.” Ce se întâmplă de multe ori în practică este că sunt site-uri care au

un site de e-commerce și o funcție de căutare pentru acesta, au, în plus, și un

blog (deseori pe platforma WordPress), cu o funcție de căutare pentru acesta.

O integrare eficientă ar însemna ca atunci când cineva caută pe site să obțină

și rezultate din articolele puse pe blog, dar acestea să aibă o prioritate mai mică

decât rezultatele cu produse din site.

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

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

28

câteva concluzii despre motoarele de căutare pe care le-au analizat: Excite (un motor

de căutare generalist, existent și astăzi), Froogle (un motor de căutare deținut de

Google, în prezent dispărut de pe piață), Google, Overture (un motor de căutare

generalist, cumpărat de Yahoo! în 2003), Yahoo! Directories (un director web al

Yahoo!, cândva foarte popular, în prezent dispărut; pe baza lui exista un motor de

căutare specializat): (Jansen și Molina, 2006)

1. Froogle și Yahoo! Directories, două site-uri care au pus un accent ceva mai

mare pe e-commerce decât alte site-uri, au avut o relevanță statistică mai mare

decât Excite, Google și Overture (între care nu s-a găsit o diferență statistică).

De asemenea, nu a fost nicio diferență statistică între Froogle și Yahoo!

Directories. Ca răspuns la prima ipoteză a studiului (dacă un motor de căutare

personalizat e mai relevant decât unul generalist), se pare că aceasta este

adevărată, cele mai bune rezultate fiind obținute din site-uri specializate.

2. A doua ipoteză a studiului a fost dacă cumva primele rezultate din pagina de

căutare (de exemplu, rezultatele 1-5) sunt mai relevante decât rezultatele

următoare (6-10). Răspunsul a fost negativ, nu s-a observat că primele rezultate

ar fi mai relevante decât celelalte, pentru toate motoarele de căutare analizate.

3. În fine, o ultimă ipoteză era dacă cumva rezultatele organice (cele care nu sunt

sponsorizate, apar natural, fără a fi plătite, așadar sunt "organice") ar fi mai

relevante decât cele plătite. Răspunsul, în această situație, a fost unul pozitiv.

2.7 Viitorul motoarelor de căutare 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 crește vânzările și ratele de

conversie prin îmbunătățirea experienței vizitatorilor (CX, Customer eXperience).

Într-un articol de pe site-ul propriu, compania arată cum machine learning va

schimba viitorul căutărilor în e-commerce, unele tendințe fiind deja aplicate.

(Loop54.com, 2017)

Motoarele de căutare clasice pentru magazine online se axează în mod tipic pe

lucruri precum (Loop54.com, 2017):

29

• Indexare eficientă – folosită pentru a localiza rapid datele fără a trebui să caute

în fiecare coloană de tabel de fiecare dată când o tabelă de baze de date este

accesată.

• Reguli de ierarhizare bazate pe atribute - ierarhizează rezultatele pe baza

relevanței așteptate a căutării unui utilizator, folosind o combinație de metode

dependente de căutarea făcută și altele independente de căutarea efectuată.

• Potrivită a căutării relaxată (fuzzy) – potrivire a căutării în mod aproximativ (de

exemplu, „lpatop” pentru „laptop”).

• Variații – obținerea unor cuvinte chiar dacă nu sunt în forma exactă (carte / cărți

/ cărțile / cartea)

• Împărțire pe elemente (tokenization) – procesul prin care o căutare se împarte

în segmente de cuvinte, fraze, simboluri și alte părți relevante, numite elemente

(tokens).

În evoluția machine learning, algoritmii de căutare au putut face avansuri

tehnologice foarte mari în ceea ce privește datele comportamentale. Ele au folosit

comportamentul de click, de adăugare în coș și de cumpărare pentru a influența

sortarea rezultatelor (în acest sens, sortarea nu se face exclusiv bazat pe locația în

metadatele unui produs a unui text căutat). Machine learning a adus abilitatea

motoarelor de căutare de a înțelege relațiile dintre produse, chiar înainte ca orice text

să fie căutat sau să se fie obținut date de comportament. În acest fel, un motor de

căutare poate localiza produse similare sau complementare mai departe decât pe baza

unei simple categorii comune sau a unui brand de producător. Poate identifica tipare

complexe în toate metadatele și construi o arhitectură profundă în catalogul de

produse. Pornind de la aceste elemente de bază, un motor de căutare bazat pe

machine learning poate produce o listă de produse asemănătoare care nu au nicio

legătură cu căutarea efectuată. (Loop54.com, 2017).

Furnizarea unei liste de „produse asemănătoare” care sunt similare cu produsul la

care se uită un client poate duce la rate de conversie (din vizitator în client) crescute

și la valori medii ale coșului de cumpărături mărite, și ele. Machine learning permite

unui motor de căutare să structureze unele relații dintre produse care nu existat

vreodată. Făcând asta, poate realiza o listă inteligentă, auto-perfectibilă de „rezultate

asemănătoare”, care să fie complet diferite de cele oferite în general de sistemele

30

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

comportament pentru a funcționa, eliminând din strat problema unui început de

funcționare mai dificil (de notat, totuși, că datele de comportament sunt necesare, și ar

fi bine să fie adăugate motorului pentru a ajuta la sortarea produselor, pentru o

relevanță crescută). (Loop54.com, 2017)

31

3. Soluția propusă

3.1 Scop și obiective Ne-am propus cu programul la care am lucrat să arăt că se poate face relativ simplu

un instrument care să folosească o căutare într-o bază de date de laptopuri, pe două

planuri – predicția unor termeni introduși la tastatură în mod parțial corect, și apoi

sortarea rezultatelor obținute pe baza unor criterii de relevanță. Soluția găsită în final

este, încă, inferioară la modul general unor soluții dedicate precum cele ale Google,

Amazon sau eMAG, dar pe anumite segmente, soluția propusă le poate depăși și pe

cele dedicate într-o eventuală analiză comparativă.

3.2 Descrierea algoritmului Algoritmul propus urmărește introducerea de date și căutarea într-o bază de date

de laptopuri. Baza de date e formată din numele laptopului și URL-ul aferent de pe

site-ul eMAg.ro. Propunerea noastră e pe două planuri: pe de o parte, am făcut un

algoritm de predicție cuvinte, se introduc unul sau mai mulți termeni, iar algoritmul creat

urmărește dacă acei termeni sunt tastați, cumva greșit, și în a doua parte am făcut o

sortare a rezultatelor care conțin termenii căutați.

În prima etapă în care este construit algoritmul se citește de la tastatură un text,

format doar din anumite caractere (litere, cifre, spațiu, cratimă, punct, virgulă,

ghilimele). Am făcut ca textul introdus să poată fi prelucrat de la tastatură ușor, prin

folosirea unor comenzi speciale, pentru deplasarea cursorului în text, deși textul se

citește literă cu literă, și nu ca string (text). Există un număr maxim de cuvinte pentru

care se afișează predicții, 5, apoi un cuvânt e necesar să aibă între 3 și 14 litere, și tot

stringul introdus de la tastatură trebuie să aibă maxim 60 de caractere cu spații (și alte

semne permise). Pentru a vedea predicții, se apasă tasta TAB, pentru a căuta direct,

fără predicții, se apasă tasta ENTER.

Programul citește apoi dintr-un fișier text predicțiile posibile pentru fiecare din

cuvinte. Predicțiile au fost generate din baza de date folosită (o listă de laptopuri de pe

site-ul eMAG). Se verifică dacă programul poate prezice niște termeni alternativi: de

32

exemplu, inversarea unor litere în cuvânt („latpop” vs. „laptop”). Apoi, pe baza unei

matrici cu poziția fiecărei litere de pe tastatură, programul poate interpreta dacă

cuvântul „laptop” a fost tastat de fapt ca „lstpop” (pe tastatură, litera „s” este lângă litera

„a”). Programul verifică în toate tastele din jurul tastei respective. O altă variantă de

predicție sunt cuvintele care încep cu un string. De asemenea, se caută și dacă un

cuvânt a fost tastat cumva cu o literă în plus față de cuvântul dorit. O altă procedură

verifică dacă un termen are o literă în minus.

Dacă se găsește mai mult de o predicție, programul oferă opțiunea de a alege între

predicțiile găsite.

În partea a doua a programului, se caută cuvintele în varianta finală introdusă de

la tastatură în baza de date de laptopuri. Programul este capabil să înțeleagă anumite

echivalări, de exemplu între termenii „DVD” și „DVD-ROM”, sau „MSDos” și „MS-Dos”

etc.

Dacă un termen va fi mai la începutul stringului introdus, acela va avea prioritate

mai mare în căutări decât un termen aflat la finalul stringului.

Dacă un string are 4 termeni, dar în baza de date de laptopuri sunt doar rezultate

în care apar 3 termeni, vor fi afișați aceia.

3.3 Utilitatea metodei În primul rând, funcția de auto-completare termeni. Dacă se urmează pașii descriși

de noi, se poate obține o funcție de auto-completare termeni foarte bună.

Apoi, funcția de validare date. Când se importă datele din baza de date a eMAG și

se împart datele pe coloane în Excel, și se sortează alfabetic, se pot găsi ușor erori de

introducere date, care pot fi corectate. Am găsit husă de laptop în categoria laptop-uri,

titluri de laptop puse greșit (fără "," ca separator, sau cu virgulă, dar fără spațiul de

după), ordine cuvinte din titlu nerespectată.

Mai departe, odată realizată procedura pe un set de date (noi am făcut procedura

pentru laptop-uri), se pot imagina ușor soluții pentru alte tipuri de date de pe site-uri de

tip e-commerce. Soluția propusă în algoritm este replicabilă.

33

De asemenea, căutarea devine mult mai bună prin procesul de înțelegere a unor

obiceiuri de tastare (notebook, în loc de laptop; 2 Core în loc de Dual Core), și prin

încercarea de înțelegere a sensului unei căutări. Statistici de genul acesta se pot

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

constant, căutările. E un proces repetitiv ce ar trebui să fie constant.

3.4 Analiza implementării algoritmului Programul a fost implementat în C++, deoarece am avut experiență ca

programatori cu programele Pascal, C și C++. Avem o oarecare expertiză în PHP și

HTML, dar am preferat să ne axăm pe scrierea de cod și algoritmi, nu neapărat în a

învăța să folosim un limbaj de programare pentru web/Internet.

De asemenea, codul a fost scris în paradigma de scriere programare

funcțională, pentru că avem expertiză în acest tip de programare.

Construcția programului a avut ca prim pas salvarea în calculator a unor pagini

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

calculator, pentru a obține, în final, o listă cu nume de laptopuri (rândurile impare 1, 3,

5 etc.) și de URL-uri pentru acele laptopuri (rândurile pare 2, 4, 6 etc.).

Apoi, din lista respectivă am extras cele mai folosite cuvinte, și le-am folosit

pentru funcție de autocompletare cuvinte (utilizatorul completează un string, programul

știe la ce e posibil să mă refer).

În continuare, am făcut o listă de conjuncții și prepoziții, care vor fi ignorate în

căutări.

Mai departe, am scris codul pentru a procesa aceste informații.

Pentru că în C++ string-urile funcționează ceva mai atipic decât în Java, și din

cauza faptului că experiența noastră în programare este limitată, am ajuns să scriem

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

folosite. Ce-i drept, codul are numeroase comentarii, și, pentru debugging ușor, am

lăsat și variantele de testare (sunt multe linii, ulterior comentate, care doar afișează un

status, pentru debugging ușor).

34

Mai jos se prezintă câțiva indicatori folosiți pentru a măsura fiabilitatea software-

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

Indicator Etichetă Metrică globală Metrică per modul

Număr module NOM 1

Linii de cod LOC 1714 1714

Numărul 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 măsura fiabilitatea programului propus (Littlefair,

2018)

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

CCCC, în care sunt explicați și indicatorii: Littlefair, 2018):

• NOM = Numărul de module (program principal, biblioteci folosite; noi am folosit

doar un program principal, fără biblioteci). Ne-a fost mai util să lucrăm într-un

singur program, pentru că am putut avea o înțelegere a programului facilă (în

partea de sus funcții de predicție, la mijloc citirea tastelor, în partea de jos

sortare rezultate. Dar dacă am fi lucrat într-o echipă, cu alte persoane să ne

supervizeze codul, ar fi fost mai util să fi lucrat în mai multe programe.

• LOC = Linii de cod, numărul de linii care să nu fie goale, și nici comentate,

numărate de program. Numărul respectiv este ridicat atât pentru că nu sunt încă

un programator profesionist, cât și pentru că am lucrat în C++, care are mici

probleme în gestionarea facilă a string-urilor. Se pot gestiona, doar că este un

pic mai dificil decât în Java, de exemplu.

• COM = Linii de comentarii. De menționat că o mare parte din comentariile făcute

de noi au fost și în continuarea unor linii de cod, așa că numărul este inexact.

Am preferat să punem comentarii cât mai detaliate, pentru a face codul ușor de

înțeles. Am lăsat comentate și diferite instrucțiuni utile pentru debugging. Prin

de-comentarea lor se poate verifica ușor în ce loc al programului vă aflați.

35

• MVG = Complexitatea ciclomatică a lui McCabe. Aceasta este o măsură a

complexității decizionale care formează programul. Definiția strictă a acestei

măsurători este că este un număr de rute linear independente printru grafic

aciclic direcționat, care identifică trecerea controlului unui subprogram.

Software-ul analizator CCCC măsoară aceasta prin înregistrarea rezultatelor

decizionale distincte conținute în fiecare funcție, din care rezultă o bună

aproximare a versiunii definite formal a măsurătorii. Detaliem indicatorul mai

jos. De menționat că recomandarea numărului optim ar fi undeva între 10 și 15,

iar la noi depășește 350. Explicația e că nu am împărțit programul în module

distincte.

• L_C = Linii de cod pentru o linie de comentarii. Prin acest indicator se măsoară

densitatea comentariilor, cu atenție la dimensiunea textului programului.

Indicatorul în cazul de față nu este foarte precis măsurat, deoarece nu ia în

considerare comentariile „inline”, cele scrise în continuarea unei linii de cod.

Totuși, considerăm că și așa se poate vedea că am folosit comentarii în codul

nostru.

• M_C = Complexitatea ciclomatică pe linia de comentarii. Folosind acest

indicator putem afla densitatea comentariilor în ceea ce privește complexitatea

logică a programului. Detaliem mai jos despre acest indicator.

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

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

eroare de cod.

Mai jos, câteva aspecte despre complexitatea ciclomatică a lui McCabe (sursa – o

prezentare dintr-un curs al Universității Auckland - Tempero, 2018).

În primul rând, cu cât este mai complexă structura codului, cu atât este mai dificil

de înțeles, e mai probabil să aibă ceva defect, va fi mai dificil de actualizat, va dura

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

Apoi, numărul complex ciclomatic al lui McCabe (McCabe’s Cyclomatic Complexity

Number, CCN) măsoară numărul de căi liniare independente prin graful programului

(de văzut imaginea de mai jos, cu un graf).

v(F) = e – n + 2,

36

unde F este graful de parcurgere în cod, n numărul de noduri, e numărul de margini.

Intuitiv, pe măsură ce numărul complex ciclomatic al lui McCabe devine mai

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

10-15.

Figura 3.4.1 Exemplu pentru numărul complex ciclomatic al lui McCabe (Tempero,

2018)

3.5 Posibilități de extindere a algoritmului În primul rând, ar fi util un generator automat de filtre, se poate face un sistem care

să folosească filtrele cel mai des folosite de alte persoane care au căutat ceva similar,

și să ne fie afișate cele mai frecvent folosite filtre.

Apoi, pentru produsele în limba română, ar fi util ca textele produselor să poată fi

găsite indiferent dacă scriu sau nu cu diacritice. Diacriticele sunt și ele de două tipuri,

cu virgulă (Ș/ș, Ț/ț) și cu sedilă (Ş/ş și Ţ/ţ). Un motor de căutare ar trebui să poată

interpreta orice variantă de a scrie un cuvânt – cuvântul „țânțari” din „plasă țânțari” ar

putea fi scris în 9 feluri distincte, în funcție de semnul diacritic folosit pentru „ț” (și

numărul se înmulțește cu 4 dacă adăugăm cele 4 feluri de a scrie â: â\î\a\i).

Cum poate „învăța” un site abia lansat pe piață dacă se caută frecvent „notebook”

sau „laptop”? Un răspuns, printre alte posibile soluții, ar putea fi folosirea Google

Trends, un site care permite comparații între termeni. Instrumentul respectiv va oferi și

noi sugestii de căutare. S-ar putea face astfel niște dicționare de echivalență, un motor

de căutare ar putea „înțelege” că „laptop” înseamnă, de fapt, „notebook”. Desigur, ar

putea fi utile și niște dicționare de sinonime, dar pentru termenii mai tehnici e posibil

37

să nu fie suficient de moderne în exprimare, și e posibil să se piardă termeni mai de

argou, sau exprimări imprecise, dar folosite în practică.

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

însemna „laptop”, dar nu ar trebui să fie egal cu „netbook”, deși, aparent, termenii sunt

similari. Ar trebui ca listele generate automat să fie monitorizate. Sau se poate crea un

algoritm, ceva mai complex, care să învețe din greșeli. Prin studierea

comportamentului vizitatorilor, se poate determina dacă pentru majoritatea „netbook”

= „notebook” – dacă se observă că vizitatorii nu sunt mulțumiți de afișarea de

notebookuri la căutări de netbookuri, sau dacă se observă că au fost multe produse

notebook returnate de către cei care căutau netbookuri, se pot lua măsuri corective.

Dacă acest proces de corecție are loc, atunci predicția ar putea rămâne.

Pentru un site cu trafic ceva mai mare, și cu o prezență stabilită pe o anumită piață,

ar putea fi utilă analiza statisticilor din instrumente precum Google Analytics, care

permit, odată făcută o configurare, monitorizarea căutărilor.

Există și funcții de căutare care sunt specifice anumitor nișe. De exemplu, pentru o

persoană care caută un parfum cu un anumit miros, ar fi relevant să i se prezinte o

serie de parfumuri realmente asemănătoare cu acel parfum.

Filtrele de sortare pot și ele să fie rafinate. Să zicem că discutăm despre un

magazin de ceaiuri. Aici, în plus față de filtre precum „ceaiuri de mentă”, „ceaiuri de

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

există ceaiuri de răceală, pentru slăbit, pentru somn liniștit, pentru energie ș.a. În lumea

tehnologiei, laptopurile pot fi de birou, pentru acasă (multimedia), pentru procesare

video, pentru jocuri, pentru condiții de lucru dificile (cu rezistență la praf și căderi). Ar

ajuta dacă filtrele nu ar fi exclusiv axate pe specificații tehnice, ci ar fi și fidele intenției

de căutare a vizitatorilor, așa cum poate fi ea interpretată de deținătorii de magazine

online. Tot legat de laptopuri, „laptopuri noi” ar fi un filtru doar cu laptopuri lansate într-

o anumită perioadă. Similar, o funcție de filtrare pentru „laptopuri ieftine”.

O problemă întâlnită la unele magazine este neconcordanța 100% a filtrelor cu

specificațiile produselor. Pe Amazon.com, de exemplu, unele produse sunt vândute

nu de către Amazon în sine, ci de terțe părți. Este dificil să impui criterii coerente pentru

38

zeci (poate sute) de milioane de produse, introduse de foarte mulți comercianți. Prin

urmare, uneori filtrele Amazon din căutări nu sunt precise.

O funcție de sortare care lipsește multor magazine online e funcția de sortare după

data apariției pe piață. E posibil să ne placă 3 laptopuri în măsură egală. Ar fi un

puternic criteriu diferențiator să pot afla ușor data lansării pe piață a modelelor

respective.

Alte criterii de sortare, care uneori nu apar în magazinele online: sortare după top

vânzări (aceasta ar trebui să fie sortarea implicită), sortare după număr și sentiment

comentarii, traficul pentru anumite produse, istoricul celui care caută, laptopuri

populare în ultima lună, recomandări editoriale (ce recomandă echipa din spatele site-

ului).

Funcția de predicții cuvinte (pe măsură ce scriem un cuvânt, să ni se sugereze

texte în mod automat) ar putea avea ca funcție adițională abilitatea de a învăța care

sunt cele mai des folosite predicții, și să le afișeze prioritar pe acela. Apoi, să învețe

din comportamentul nostru, de utilizatori logați în site, și, odată ce am făcut o selecție,

să o afișeze pe aceea prioritar. Nu în ultimul rând o funcție de tip auto-completare, ca

un utilizator să scrie 2-3 litere și să i se indice cuvinte de 10 litere, să spunem.

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

click când caută, dacă se întorc la rezultatele căutării după ce văd un anumit produs

(ceea ce poate însemna că nu au fost mulțumiți de rezultatul respectiv), ce produse se

cumpără efectiv după o căutare, ce produse sunt recomandate mai departe, care este

sentimentul vizitatorilor, așa cum decurge el din comentariile și notele (ratingurile)

lăsate pentru produse etc. Dacă se intră pe acest proces - cum optimizăm rezultatele

de căutare de pe un site? - se poate ajunge cu perfecționarea la un nivel foarte ridicat.

Pe un magazin online ne-am aștepta să găsim și niște rute predefinite foarte bune.

De exemplu, cine caută „Laptop Asus” ar putea să fie trimis automat în categoria

„Laptopuri”, cu filtru selectat pe „Asus”. Da, e posibil ca vizitatorii să se aștepte să

ajungă într-o pagină de căutări cu filtre posibile, dar e de testat și sugestia noastră.

Suntem aproape siguri că cine introduce un cod produs în funcția de căutare vrea

să ajungă direct la produsul respectiv. Pentru acel tip de căutări, am implementa o

39

funcție de tipul „Mă simt norocos”, prezentă pe motorul de căutare Google, care să

„trimită” automat internauții la primul (deci, cel mai relevant) rezultat găsit.

O funcție pe care am implementat-o în program e ca dacă o căutare nu are niciun

rezultat, să tai din termenii introduși.

Ar fi util ca un motor de căutare să știe că 2 TB = 2.000 GB (pentru hard-diskuri) =

2.048 GB (pentru alte tipuri de căutări, oricum se poate pune ca echivalent). De

asemenea, separatorul ar trebui să fie atât virgulă, cât și punct (să fie echivalente):

„2.048” = „2,048”.

Există și căutări foarte provocatoare: „hard-disk laptop”. Poate vizitatorul dorește

să primească o listă de hard-disk-uri pentru laptopuri. Dar acele hard-diskuri pot fi

interne sau externe. Și căutarea ar putea fi și „laptop care să conțină hard-disk, spre

deosebire de alte laptopuri, cu SSD”.

Conjuncțiile, în general, ar trebui eliminate din funcțiile de căutare. „Cel mai nou

laptop” ar putea fi o excepție, aici ar fi utilă o sortare de la cel mai nou spre cel mai

vechi, cu toate laptopurile din magazin.

40

4. Concluzii Am încercat cu demersul nostru să demonstrăm că se poate face un motor de

căutare laptopuri care să permită predicții cuvinte, și o sortare primară rezultate.

Rămân ca posibilități de explorat diferite sugestii pe care le-am acumulat pe măsură

ce am realizat proiectul, de îmbunătățire a motoarelor de căutare.

Răspundem mai jos principalelor puncte prezentate în partea introductivă:

• "Am vrut să arătăm o modalitate practică prin care se pot face unele îmbunătățiri

la un motor de căutare cu resurse puține." – Am lucrat cu un limbaj de

programare axat mai puțin pe partea de web, C++. A fost o primă variantă a

unui potențial algoritm mult mai complex. Considerăm că am realizat o

mini-performanță – am făcut un algoritm care poate face atât predicții asupra ce

utilizatorul dorește să tasteze, cât și un mic algoritm de sortare a datelor relativ

eficient. Loc de îmbunătățire este suficient, mai ales pe baza unor algoritmi de

machine learning.

• "Vom prezenta în lucrare inclusiv idei noi, potențial utile de folosit pentru

magazinele online în viitor." – partea aceasta a fost una din cele mai consistente

în demersul noastră. Din experiența noastră personală în domeniul optimizării

pentru motoarelor de căutare (SEO), am avut ocazia să interacționăm cu

majoritatea din principalele motoare de căutare, și am acumulat, de-a lungul

anilor, numeroase observații despre cât de ineficiente pot fi unele căutări. Am

căutat în lucrarea noastră să prezentăm unele posibile soluții la aceste

probleme.

• " Am dorit cu programul propus de noi să simulăm unele din funcționalitățile de

predicție pentru un eventual motor de căutare pentru produsele din magazinele

online." – am scris mult cod pentru a face un motor de căutare cu câteva funcții

de predicție distincte. Programul nostru este încă departe de modelul pe care l-

am avut, anume tastatura pentru sistemele de operare pentru mobil Android și

iOS numită SwiftKey. Însă, la nivel primar, am folosit o parte din facilitățile oferite

de tastatură și considerăm că le-am imitat cu succes.

41

• " Scopul de la care am pornit lucrarea a fost atât de a implementa ideile pe care

le am în domeniul căutării pentru motoarele de căutare, de a da un model practic

și verificabil, cât și de a veni cu noi idei, ca posibile rute de prospectat pentru

aplicații viitoare. Acestea au rămas în plan pur teoretic, urmând a fi

implementate de alte entități, în încercarea de a îmbunătăți performanțele

motoarelor de căutare din prezent." – am vorbit anterior despre ideile noi pe

care ne-am propus să le aducem cu lucrarea și cât de bine sau rău am realizat

acest lucru. Legat de testarea abilităților – principala remarcă negativă pe care

o avem este legată de complexitatea codului. Programul este foarte lung,

considerăm că dacă am fi făcut și o a doua variantă am fi putut găsi chiar noi

înșine alte soluții pentru a comprima codul. Iar un programator cu experiență

bogată în programare ar putea realiza un cod semnificativ mai mic. Per

ansamblu, însă, ne declarăm mulțumiți de rezultatul obținut pornind de la

obiectivele inițiale ale cercetării. Un motiv în plus de satisfacție este și faptul că

am comentat o parte însemnată din funcțiile folosite, și am păstrat, în corp de

comentarii, și instrucțiunile folosite pentru debugging (căutare erori) în program,

așa că eventualele erori pot fi reparate mai ușor prin de-comentarea liniilor.

Ca o concluzie finală, considerăm că scopul de la care s-a pornit inițial – acela de

a face o lucrare prin care să arătăm că se poate realiza cu un algoritm realizat cu

resurse puține un program care să aibă abilitatea de a prezice diferite elemente folosite

pentru a introduce date, iar, ulterior, abilitatea de a ierarhiza informația pe baza unor

criterii –, a fost atins, fie doar și parțial. Programul are anumite facilități atât în etapa

de predicție cuvinte, cât și în etapa ulterioară, de căutare și sortare rezultate. Legat de

partea teoretică a demersului nostru, considerăm că și scopul acestuia a fost atins,

așa cum am arătat deja în comparația între obiectivele propuse și cele pe care le-am

îndeplinit în mod practic.

42

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. și 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/Less

on1.5Wordordermatters_Text_.html [Accesat 2 Apr. 2018].

Enge, E., Spencer, S., Stricchiola, J. și 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. și 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. și Molina, P. (2006). The effectiveness of Web search engines for retrieving

relevant ecommerce links. Information Processing & Management, 42(4), pp.1075-

1098.

43

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. și 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. Ediția 1. Indianapolis, IN: Wiley, p.12.

Page, L., Brin, S., Motwani, R. și 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 şi simulare, Curs

Petac, E. (2018). Elaborarea lucrării de disertaţie, Seminar

Radu, A. (2018). Raportul pieței de e-commerce 2017: Românii au cumpărat 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 neconvenţionale de calcul, Curs

44

Sherman, C. și 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 și 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].

45

Anexa 1 – măsurarea complexității codului L

inia

Ob

iectu

l

su

rat

LO

Cp

hy

LO

Cb

l

LO

Cp

ro

LO

Cco

m

V

B(x

10

0)

T

N1

N2

n1

n2

D

E

L(x

100

0)

MIw

oc

MIc

w

MI

25

25

pro

gra

m-

v.0

.12

4.c

p

p

25

25

57

9

17

56

33

2

72

61

0

19

04

21

0:3

8:3

5

44

87

38

29

38

38

7

18

8

13

64

96

76

5

50

27

77

12

6

Ste

rge

Ecra

n()

19

1

18

2

31

6

4

0:0

1:1

4

34

34

5

20

4

13

42

23

5

93

24

11

7

15

2

Lite

raM

ica

(

) 28

1

7

20

10

5

3

0:0

0:4

8

16

11

9

6

8

87

0

12

1

92

48

14

0

18

1

Ultim

ele

_2

_S

au

_3_

C

ara

cte

re_

..

.()

43

3

37

5

11

05

42

0:4

1:2

0

12

2

97

15

18

40

44

64

9

25

71

25

96

22

5

Elim

ina

_O

r

ice

_A

ltce

v

a_

Decat_

..

.()

29

3

20

7

91

4

31

0:2

6:1

0

93

80

17

22

31

28

26

2

32

78

34

11

3

25

6

Cuva

ntu

l1

Este

Con

tin

utI

nC

uva

nt

ul2

()

34

2

21

12

51

8

19

0:1

2:4

8

56

45

19

16

27

13

84

2

37

80

40

12

0

29

1

loa

d_

Co

nj

un

ctii_

si_

P

rep

ozitii(

)

30

4

19

7

35

4

7

0:0

3:0

5

37

32

13

22

9

33

46

10

6

85

34

11

9

32

2

loa

d_F

isie

r

_L

ista

_La

p

top

uri

()

96

12

57

29

22

19

74

1:3

5:5

4

20

4

15

8

26

44

47

10

35

78

21

53

38

90

41

9

loa

d_

Arr

ay

_F

rom

_F

il

e_

au

toc_tx

t()

30

4

19

7

35

4

7

0:0

3:0

5

37

32

13

22

9

33

46

10

6

85

34

11

9

45

0

Afisea

za_

Su

ge

stii(

)

16

0

21

13

7

23

32

50

12

4

3:3

0:2

9

30

0

24

8

22

39

70

22

73

36

14

39

28

67

46

61

1

Ca

uta

Po

tri

vir

eE

xa

cta

(

) 43

9

30

8

67

9

19

0:1

2:5

3

72

65

12

19

21

13

93

2

49

75

31

10

6

65

6

Ca

uta

Inve

r

sa

reLite

re(

) 73

9

57

11

13

91

60

1:1

0:0

6

14

4

12

1

18

20

54

75

72

4

18

61

28

89

73

0

Ca

uta

Pozit

iaL

ite

reiP

e

Ta

sta

tura

()

23

5

17

2

31

6

9

0:0

3:5

4

34

34

11

14

13

42

18

75

89

22

11

1

75

4

Ca

uta

Lite

r

eT

asta

teG

r

esit()

85

16

65

9

18

78

69

1:2

6:3

8

18

5

15

5

18

28

50

93

56

5

20

56

24

80

84

1

Cau

taC

uvi

nte

Care

Inc

ep

Cu()

53

12

37

6

84

1

28

0:2

2:2

9

87

77

15

20

29

24

29

0

35

70

25

94

89

7

Cau

taC

uvi

nte

CuL

ite

r

aIn

Plu

s()

68

12

53

9

12

40

50

0:5

3:1

0

12

9

10

9

17

20

46

57

43

6

22

63

27

90

96

7

Cau

taC

uvi

nte

CuL

ite

r

aIn

Min

us()

67

11

51

10

11

77

46

0:4

7:4

3

12

3

10

3

17

20

44

51

53

8

23

63

28

92

10

36

Cau

ta_

Sug

estii(

)

48

16

30

4

58

1

16

0:0

9:2

1

60

50

16

23

17

10

11

1

58

74

22

95

10

85

imp

art

e_

Q

ue

ry_in

_C

uvin

te()

62

15

44

13

12

53

55

1:0

1:2

4

13

0

10

1

22

21

53

66

31

4

19

63

33

96

11

48

Citir

e_

Ta

st

e()

30

7

60

23

2

35

49

17

12

4

3:3

0:5

0

44

7

29

8

23

74

46

22

77

07

22

17

25

42

14

57

Ve

rifica

Da

ca

Te

rme

n

ulA

pa

re..

.()

46

14

26

8

71

7

20

0:1

3:4

3

68

61

19

28

21

14

83

0

48

74

30

10

4

47

15

04

pre

lucre

az

a_

Qu

ery

()

93

8

26

3

62

4

73

19

49

9

57

3

34

:44

:15

15

39

13

42

16

93

11

5

22

50

99

7

9

-14

21

6

24

43

Afisea

za_

Re

zu

lta

te()

77

18

57

8

18

06

54

1:0

0:1

2

16

7

15

3

16

34

36

65

01

7

28

59

24

83

25

21

ma

in()

5

0

5

0

43

1

0:0

0:0

4

7

6

4

6

2

86

50

0

12

5

0

12

5

Metricele de mai sus sunt metrici obținute cu Testwell CMT++ (Instrument de Măsură a Complexității

Codului - Complexity Measures Tool). Programul cu care am testat a fost obținut de aici:

http://www.verifysoft.com/en.html, iar tabelul obținut este un rezumat al tabelului furnizat de

instrument (existau mai multe coloane, și câteva linii în plus, și nu exista legenda).

Explicații:

LOCphy Număr linii cod

LOCbl Număr linii goale (nu conțin nimic)

LOCpro Numărul liniilor de program (instrucțiuni, declarații)

LOCcom Numărul liniilor cu comentarii

V Volumul programului (dimensiune)

B(x100) Numărul de buguri; B = ( E ^ (2/3) ) / 3000

T Timpul de implementare; T = E / 18

N1 Numărul total de operatori

N2 Numărul total de operanzi

n1 Număr operatori unici folosiți

n2 Număr operanzi unici folosiți

D Gradul de dificultate al programului; D = ( n1 / 2 ) * ( N2 / n2 )

E Efortul de implementare; E = V * D

L(x1000) Nivelul programului; L = 1 / D

MIwoc Indicele de mentenanță, fără comentarii

MIcw Gradul de importanță al comentariilor

MI Indicele de mentenanță

48

Anexa 2 – graficul funcțiilor tabelului Mai jos, se pot vedea funcțiile programului – cum se întrepătrund, care dintre ele

folosesc alte funcții, și în ce alte funcții sunt apelate. Săgețile nu au o semnificație

aparte.

49