Crawling Tripadvisor Attracion Reviews - Italiano

23
Come estrarre informazioni dalle Review pubbliche di Trip Advisor Andrea Gigli https://about.me/andrea.gigli

Transcript of Crawling Tripadvisor Attracion Reviews - Italiano

Come estrarre informazioni dalle Review pubbliche di Trip Advisor

Andrea Giglihttps://about.me/andrea.gigli

Goal

• Creare un indicatore di similarità (relativa) tra città, sulla base delle recensioni pubblicate su Tripadvisor

• Recensioni riferite solo alle attrazioni di ciascuna città, non ad alberghi o ristoranti

• Misure di “vicinanza” utilizzate– Jaccard– Cosine Similarity su TF e TF-IDF

• …applicate a – Tokens– Entities

Dove abbiamo raccolto i dati (1/2)

Dove abbiamo raccolto i dati (2/2)

Quali città abbiamo analizzato (1/2)

• Citta Toscane….

Quali città abbiamo analizzato (2/2)

Cosa abbiamo analizzato

Per ogni città:1. abbiamo raccolto recensioni delle attrazioni

che potessero essere recuperate con httrack (r=4)

2. Abbiamo unito tutte le recensioni in un unico corpus

3. Abbiamo normalizzato, filtrato, effettuato lo stemming e il de-stemming dei tokens

4. Abbiamo ottenuto le entity presenti nel corpus da tagme

Trip_cloud.py

for city in city_list:print "Generating tokens and entities for {0}”.format(city)tokens,entities=get_web_data(city_list)print "Normalizing {0} entry...”.format(city)normalized = normalize_words(tokens)print "Filtering {0} entry...".format(city)filtered_t=filter_words(normalized)print "Stemming {0} entry...".format(city)stemmed = stem_words(filtered_t)stem_mapping = get_stem_mapping(filtered_t)print “Destemming {0} entry...".format(city)destemmed = destem_words(stemmed, stem_mapping)

Alcuni datiTokens Entities

Livorno 7,225 697 Massa 2,147 138 Grosseto 4,234 473 Firenze 13,129 1,492 Siena 9,994 1,105 Arezzo 8,234 1,022 Lucca 9,851 1,137 Pisa 9,056 952 Prato 6,375 833 Pistoia 9,258 1,035 New York 13,476 1,282 Londra 11,754 1,219 Antananarivo 1,146 115

105,879 11,500

Tokens EntitiesUnique

items 13,178

2,370

Come abbiamo misurato la “similarità” tra città

Per ogni coppia di città:1. Abbiamo calcolato la Jaccard Distance e la

Cosine Similarity (TF) sui tokens di ciascun corpus

2. Abbiamo calcolato la Jaccard Distance e la Cosine Similarity (TF) sulle entities di ciascun corpus

Jaccard Index – Tokens (normalizzata su scala 0-100)

Massa Grosseto Firenze Siena Arezzo Lucca Pisa Prato Pistoia New York Londra Antananarivo

Livorno 49 71 80 78 76 85 80 76 87 66 66 13Massa 46 36 32 40 39 41 35 40 21 23 26

Grosseto 63 69 69 65 68 65 65 52 49 10Firenze 97 91 92 83 66 82 86 82 0Siena 90 94 93 75 84 68 78 10

Arezzo 96 88 82 84 71 73 5Lucca 94 78 92 76 76 9Pisa 89 91 74 80 12

Prato 89 56 59 10Pistoia 67 64 12

New York 100 0Londra 2

scala 0 10 20 30 40 50 60 70 80 90 100

Jaccard Index – Entities (normalizzata su scala 0-100)

scala 0 10 20 30 40 50 60 70 80 90 100

Massa Grosseto Firenze Siena Arezzo Lucca Pisa Prato Pistoia New

York Londra Antananarivo

Livorno 20 58 46 47 44 41 41 45 53 30 24 13Massa 34 8 16 20 21 18 18 18 10 7 19

Grosseto 47 62 66 61 60 57 70 33 25 7Firenze 82 82 72 72 71 74 40 45 0Siena 91 65 71 68 86 43 42 4

Arezzo 92 88 91 100 44 47 6Lucca 77 74 95 45 35 4Pisa 75 92 42 35 3

Prato 97 39 33 6Pistoia 39 32 1

New York 59 6Londra 8

Cosine Similarity TF – Tokens(normalizzata su scala 0-100)

Massa Grosseto Firenze Siena Arezzo Lucca Pisa Prato Pistoia New York Londra Antanan

arivoLivorno 41 63 48 58 57 67 56 56 66 67 60 13Massa 48 35 28 19 20 32 28 41 35 34 17

Grosseto 57 58 49 56 59 54 60 58 47 6Firenze 88 77 71 77 67 65 76 64 11Siena 89 90 82 77 74 67 73 11

Arezzo 82 74 77 78 59 66 0Lucca 84 78 77 66 69 13Pisa 78 78 70 71 18

Prato 84 60 71 15Pistoia 59 54 29

New York 100 22Londra 24

scala 0 10 20 30 40 50 60 70 80 90 100

Cosine Similarity TF – Entities(normalizzata su scala 0-100)

scala 0 10 20 30 40 50 60 70 80 90 100

Massa Grosseto Firenze Siena Arezzo Lucca Pisa Prato Pistoia New York Londra Antananari

voLivorno 76 38 9 23 14 22 37 25 27 44 22 24Massa 97 44 63 53 70 83 60 78 100 65 77Grosseto 25 42 40 43 51 39 47 56 30 34Firenze 19 10 9 30 38 16 17 2 0Siena 30 26 44 36 32 29 16 11Arezzo 22 33 30 32 24 7 5Lucca 37 25 35 34 15 16Pisa 48 60 46 25 25Prato 42 36 21 12Pistoia 40 17 22New York 46 43Londra 21

Il peso di tokens e delle entities molto frequenti distorce la misurazione

Frasi come «Molto bella. Ci torneremo sicuramente» sono frequenti ma poco informative.

Abbiamo quindi ponderato la frequenza di tokens e entities per log(N(t)/N), dove:• N numero di città• N(t) numero di città in cui compare il token/entity tDa testare cosa cambia se • N(t) = numero di recensioni in cui compare il token (o l’entity) • N = numero di recensioni totale.

Cosine Similarity TF-IDF – Tokens(normalizzata su scala 0-100)

Massa Grosseto Firenze Siena Arezzo Lucca Pisa Prato Pistoia New York Londra Antanana

rivoLivorno 57 66 28 37 20 32 28 23 35 25 18 2Massa 45 44 24 10 28 33 32 33 10 16 1

Grosseto 43 31 22 23 27 36 23 20 34 2Firenze 94 56 56 66 36 41 50 31 5Siena 72 100 51 56 51 30 40 6

Arezzo 48 39 34 34 19 21 0Lucca 56 40 32 35 43 11Pisa 43 61 42 35 14

Prato 73 20 27 1Pistoia 31 25 8

New York 67 3Londra 5

scala 0 10 20 30 40 50 60 70 80 90 100

Cosine Similarity TF-IDF – Entities(normalizzata su scala 0-100)

scala 0 10 20 30 40 50 60 70 80 90 100

Massa Grosseto Firenze Siena Arezzo Lucca Pisa Prato Pistoia New York Londra Antananariv

oLivorno 3 4 7 11 3 3 28 5 8 4 3 2Massa 7 2 6 2 6 4 6 2 2 3 0Grosseto 10 20 7 17 8 11 6 4 2 0Firenze 38 14 15 55 51 18 3 5 0Siena 20 18 34 45 21 3 10 2Arezzo 15 11 16 12 2 2 0Lucca 18 15 23 4 3 1Pisa 49 43 3 8 0Prato 100 8 7 2Pistoia 3 1 0New York 31 1Londra 3

Poi ci abbiamo preso gusto

• Abbiamo incluso altre città italiane: Milano, Bologna, Bolzano, Bari e Palermo

• L’aumento delle città dovrebbe portare ad un aumento dell’efficacia di misurazione della Cosine Similarity Tf-IDF

Massa Grosseto Firenze Siena Arezzo Lucca Pisa Prato Pistoia New York Londra Antana

narivo Milano Bologna Bolzano Bari Palermo Cagliari

Livorno 57 56 30 43 23 30 31 32 45 25 22 4 39 19 19 56 37 37

Massa 41 52 31 11 28 35 40 48 13 21 6 63 31 50 36 34 38

Grosseto 51 38 26 24 28 41 24 18 31 2 59 47 14 63 40 43

Firenze 100 62 54 77 48 48 46 36 7 80 68 27 29 44 40

Siena 76 98 60 59 54 30 52 11 94 40 43 32 50 42

Arezzo 44 40 33 35 20 26 3 41 33 24 21 22 15

Lucca 54 38 33 31 48 14 74 30 39 31 24 30

Pisa 47 66 43 43 18 88 36 36 34 29 53

Prato 84 21 39 3 39 38 23 22 25 14

Pistoia 29 32 10 29 48 27 35 18 24

New York 76 8 43 24 32 33 18 15

Londra 10 51 47 31 26 33 20

Antanana 8 0 5 6 2 4

Milano 34 36 32 42 42

Bologna 13 31 38 11

Bolzano 20 14 13

Bari 33 38

Palermo 38

scala 0 10 20 30 40 50 60 70 80 90 100

Cosine Similarity TF-IDF – Tokens(normalizzata su scala 0-100)

scala 0 10 20 30 40 50 60 70 80 90 100

Massa Grosseto Firenze Siena Arezzo Lucca Pisa Prato Pistoia New York Londra Antana. Milano Bologna Bolzano Bari Palermo Cagliari

Livorno 3 4 5 11 2 2 31 4 6 3 3 2 7 1 2 2 2 3Massa 5 3 6 2 4 3 4 1 2 2 0 6 3 2 1 1 2Grosseto 15 24 8 18 11 9 5 3 2 0 4 4 4 2 3 3Firenze 40 13 14 60 78 19 2 4 0 12 8 3 3 3 3Siena 17 13 32 43 19 2 9 2 15 7 5 13 4 4Arezzo 12 8 13 9 2 2 0 8 6 2 3 3 1Lucca 15 10 21 3 2 1 11 4 2 4 3 3Pisa 47 43 2 6 0 22 5 3 4 3 4Prato 100 8 8 2 18 6 5 13 12 6Pistoia 1 1 0 8 6 2 3 2 2New York 33 1 6 3 3 2 1 2Londra 4 21 3 3 3 3 5Antana. 0 0 0 1 1 1Milano 17 6 4 5 6Bologna 3 8 12 2Bolzano 2 3 1Bari 5 4Palermo 4

Cosine Similarity TF-IDF – Entities(normalizzata su scala 0-100)

Grazie

Andrea Giglihttps://about.me/andrea.gigli