rezumat / abstract - stirimess.files.wordpress.com€¦  · web viewcuprinsul unei lucrări au...

74
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

Upload: hoangcong

Post on 19-Sep-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

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-commerceLucrare de disertație

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

Absolvent:Breda Olivian-Claudiu

Constanța2018

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.

2

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

3

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

4

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

5

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.

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

6

- 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

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

7

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-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.

8

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

10

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

bazată pe 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.

r (Pi )= ∑P j∈BP i

r (P j)¿ P j∨¿ ,

¿

11

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

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,

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

rk (P j )¿P j∨¿ .

¿ (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)

12

1 2

3

6 5

4

13

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.

14

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:

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 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)

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

Î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

16

ajuns 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! BaiduYandex

RuYandex 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)

17

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),

18

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)

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 îș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)

20

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.

21

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

22

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

nostru – 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.

23

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:

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

24

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

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

25

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.

Î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:

26

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.

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

27

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.

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

28

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)

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

29

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

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).

30

Î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):

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).

31

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

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)

32

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:

33

de 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ă.

34

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).

35

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.

36

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,

37

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

38

tehnici e posibil 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

39

pentru 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ă.

40

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

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.

41

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.

42

" 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.

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. ș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/

Lesson1.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.

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. ș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

45

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].

46

Anexa 1 – măsurarea complexității codului

Lini

a

Obi

ectu

l

măs

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 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 codLOCbl Număr linii goale (nu conțin nimic)LOCpro Numărul liniilor de program (instrucțiuni, declarații)LOCcom Numărul liniilor cu comentariiV Volumul programului (dimensiune)B(x100) Numărul de buguri; B = ( E ^ (2/3) ) / 3000T Timpul de implementare; T = E / 18N1 Numărul total de operatoriN2 Numărul total de operanzin1 Număr operatori unici folosițin2 Număr operanzi unici folosițiD 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 mentenanță, fără comentariiMIcw Gradul de importanță al comentariilorMI Indicele de mentenanță

49

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.

50

51