├── CarouselClass.py ├── OutputParser.py ├── README.md ├── Rinput ├── en.R ├── it.R ├── itastopwords.rda └── sent.csv ├── ScrapeAdvisor.py ├── ScraperClass.py ├── ipak.R ├── requirements.txt └── res └── about.png /CarouselClass.py: -------------------------------------------------------------------------------- 1 | import os 2 | import time 3 | import logging 4 | 5 | from pathlib import Path 6 | from kivy.app import App 7 | from kivy.uix.carousel import Carousel 8 | from kivy.uix.image import AsyncImage 9 | from OutputParser import OutputParser 10 | 11 | logging.basicConfig(level=logging.INFO) 12 | logger = logging.getLogger(__name__) 13 | 14 | 15 | # Carousel for sliding graphs 16 | class CarouselApp(App): 17 | def __init__(self, **kwargs): 18 | super().__init__(**kwargs) 19 | self.lang = "" 20 | 21 | def set_lang(self, arg): 22 | self.lang = arg 23 | 24 | def build(self): 25 | # create the Routput directory if not exists 26 | try: 27 | os.mkdir("Routput") 28 | except OSError: 29 | logger.info("Routput directory already exists") 30 | else: 31 | logger.info("Successfully created the directory Routput") 32 | 33 | # create OutputParser object to parse analysis output 34 | output_parser = OutputParser() 35 | output_parser.parse() 36 | output_parser.save() 37 | output_parser.to_image() 38 | time.sleep(1) 39 | 40 | # create Carousel object 41 | carousel = Carousel(direction='right') 42 | 43 | # and add images from Routput 44 | try: 45 | if Path("Routput/stats.png").is_file(): 46 | image1 = AsyncImage(source="Routput/stats.png", nocache=True) 47 | carousel.add_widget(image1) 48 | 49 | if Path("Routput/locations.png").is_file(): 50 | image2 = AsyncImage(source="Routput/locations.png", nocache=True) 51 | carousel.add_widget(image2) 52 | 53 | if Path("Routput/neg_rev.png").is_file(): 54 | image3 = AsyncImage(source="Routput/neg_rev.png", nocache=True) 55 | carousel.add_widget(image3) 56 | 57 | if Path("Routput/pos_rev.png").is_file(): 58 | image4 = AsyncImage(source="Routput/pos_rev.png", nocache=True) 59 | carousel.add_widget(image4) 60 | 61 | # if Path("Routput/world_map.png").is_file() and os.path.getsize("Routput/world_map.png") > 3000: 62 | # image5 = AsyncImage(source="Routput/world_map.png", nocache=True) 63 | # carousel.add_widget(image5) 64 | 65 | if Path("Routput/rev_per_week.png").is_file(): 66 | image6 = AsyncImage(source="Routput/rev_per_week.png", nocache=True) 67 | carousel.add_widget(image6) 68 | 69 | if Path("Routput/25_most_common_words.png").is_file(): 70 | image7 = AsyncImage(source="Routput/25_most_common_words.png", nocache=True) 71 | carousel.add_widget(image7) 72 | 73 | if Path("Routput/25_wordclouds.png").is_file(): 74 | image8 = AsyncImage(source="Routput/25_wordclouds.png", nocache=True) 75 | carousel.add_widget(image8) 76 | 77 | if Path("Routput/9_growing.png").is_file(): 78 | image9 = AsyncImage(source="Routput/9_growing.png", nocache=True) 79 | carousel.add_widget(image9) 80 | 81 | if Path("Routput/9_decreasing.png").is_file(): 82 | image10 = AsyncImage(source="Routput/9_decreasing.png", nocache=True) 83 | carousel.add_widget(image10) 84 | 85 | if Path("Routput/sent_afinn.png").is_file(): 86 | image11 = AsyncImage(source="Routput/sent_afinn.png", nocache=True) 87 | carousel.add_widget(image11) 88 | 89 | # check if reviews are in Italian or English 90 | if output_parser.get_lang() == "en": 91 | logger.info("[*] Reviews are in English") 92 | if Path("Routput/sent_bing.png").is_file(): 93 | image12 = AsyncImage(source="Routput/sent_bing.png", nocache=True) 94 | carousel.add_widget(image12) 95 | else: 96 | logger.info("[*] Reviews are in Italian") 97 | if Path("Routput/25_not_follows.png").is_file(): 98 | image12 = AsyncImage(source="Routput/25_not_follows.png", nocache=True) 99 | carousel.add_widget(image12) 100 | 101 | if Path("Routput/not_follows.png").is_file(): 102 | image13 = AsyncImage(source="Routput/not_follows.png", nocache=True) 103 | carousel.add_widget(image13) 104 | 105 | except Exception as e: 106 | logger.error(e) 107 | 108 | return carousel 109 | -------------------------------------------------------------------------------- /OutputParser.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | import re 4 | import textwrap 5 | 6 | from PIL import Image, ImageDraw, ImageFont 7 | 8 | logging.basicConfig(level=logging.INFO) 9 | logger = logging.getLogger(__name__) 10 | 11 | 12 | # parse the output file made by R to retrieve information 13 | class OutputParser: 14 | def __init__(self): 15 | self.diz = {} 16 | self.stats = "" 17 | self.pos_rev = "" 18 | self.neg_rev = "" 19 | self.lang = "" 20 | self.locations = "" 21 | 22 | def get_lang(self): 23 | return self.lang 24 | 25 | # parse the .txt file 26 | def parse(self): 27 | filepath = "Routput/out.txt" 28 | if os.path.isfile(filepath): 29 | try: 30 | with open(filepath) as f: 31 | line = f.readline() 32 | cnt = 1 33 | while line: 34 | if (cnt == 1): 35 | if "it" in line: 36 | self.lang = "it" 37 | else: 38 | self.lang = "en" 39 | 40 | if cnt == 2: 41 | line = line.split()[1] 42 | line = line.replace(" ", "") 43 | self.diz["num_rev"] = line 44 | 45 | if cnt == 3: 46 | line = line.replace("[1]", "") 47 | line = line.replace("\"", "") 48 | line = line.replace(" ", "") 49 | self.diz["from_date"] = line 50 | 51 | if cnt == 4: 52 | line = line.replace("[1]", "") 53 | line = line.replace("\"", "") 54 | line = line.replace(" ", "") 55 | self.diz["to_date"] = line 56 | 57 | if "bigram" in line: 58 | lines = "" 59 | for x in range(0, 11): 60 | line = f.readline().rstrip() 61 | if "" in line: 62 | lines = "\n" 63 | cnt += 1 64 | elif x == 10: 65 | lines += line[0:2] + "). " + line[3:-1].capitalize() + "(" + line[ 66 | -1] + ")" + "\n" 67 | cnt += 1 68 | else: 69 | lines += " " + line[1] + "). " + line[3:-1].capitalize() + "(" + line[ 70 | -1] + ")" + "\n" 71 | cnt += 1 72 | lines = lines.replace(" ", "", 1) # removes only the first white space which occurs 73 | lines = re.sub(' +', ' ', lines) 74 | self.diz["bigram"] = lines 75 | 76 | if "trigram" in line: 77 | lines = "" 78 | for x in range(0, 11): 79 | line = f.readline().rstrip() 80 | if "" in line: 81 | lines = "\n" 82 | cnt += 1 83 | elif x == 10: 84 | lines += line[0:2] + "). " + line[3:-1].capitalize() + "(" + line[ 85 | -1] + ")" + "\n" 86 | cnt += 1 87 | else: 88 | lines += " " + line[1] + "). " + line[3:-1].capitalize() + "(" + line[ 89 | -1] + ")" + "\n" 90 | cnt += 1 91 | lines = lines.replace(" ", "", 1) # removes only the first white space which occurs 92 | lines = re.sub(' +', ' ', lines) 93 | self.diz["trigram"] = lines 94 | 95 | if "pos_rev" in line: 96 | for x in range(0, 1): 97 | line = f.readline().rstrip() 98 | line = line.replace("[1]", "") 99 | line = line.replace(" ", "", 1) 100 | self.diz["pos_rev"] = line 101 | 102 | if "neg_rev" in line: 103 | for x in range(0, 1): 104 | line = f.readline().rstrip() 105 | line = line.replace("[1]", "") 106 | line = line.replace(" ", "", 1) 107 | self.diz["neg_rev"] = line 108 | 109 | if "cities" in line: 110 | lines = "" 111 | cnt += 1 112 | line = f.readline().rstrip() 113 | if "tibble" in line: 114 | i = int(line.split()[3]) 115 | i += 3 116 | for x in range(0, i): 117 | line = f.readline().rstrip() 118 | if "" in line: 119 | lines = "\n" 120 | cnt += 1 121 | 122 | elif "city" in line: 123 | lines = "\n" 124 | cnt += 1 125 | 126 | elif "Groups" in line: 127 | lines = "\n" 128 | cnt += 1 129 | 130 | elif "" in line: 131 | line = line.replace("<", "") 132 | line = line.replace(">", "") 133 | splitted = line.split() 134 | lines += 2 * " " + splitted[0] + "). " + str( 135 | " ".join(splitted[1:-1])) + " (" + str(splitted[-1]) + ")" "\n" 136 | cnt += 1 137 | 138 | elif x > 11: # if number became 10, add only one space 139 | splitted = line.split() 140 | lines += " " + splitted[0] + "). " + str( 141 | " ".join(splitted[1:-1])).capitalize() + " (" + str(splitted[-1]) + ")" "\n" 142 | cnt += 1 143 | 144 | else: 145 | splitted = line.split() 146 | lines += 2 * " " + splitted[0] + "). " + str( 147 | " ".join(splitted[1:-1])).capitalize() + " (" + str(splitted[-1]) + ")" "\n" 148 | cnt += 1 149 | 150 | # lines = lines.replace(" ", "", 1) # removes only the first white space which occurs 151 | # lines = re.sub(' +', ' ', lines) 152 | self.diz["cities"] = lines 153 | 154 | if "states" in line: 155 | lines = "" 156 | cnt += 1 157 | line = f.readline().rstrip() 158 | if "tibble" in line: 159 | i = int(line.split()[3]) 160 | i += 2 161 | for x in range(0, i): 162 | line = f.readline().rstrip() 163 | if "" in line: 164 | lines = "\n" 165 | cnt += 1 166 | 167 | elif "state" in line: 168 | lines = "\n" 169 | cnt += 1 170 | 171 | elif "" in line: 172 | line = line.replace("<", "") 173 | line = line.replace(">", "") 174 | splitted = line.split() 175 | lines += 2 * " " + splitted[0] + "). " + str( 176 | " ".join(splitted[1:-1])) + " (" + str( 177 | splitted[-1]) + ")" "\n" 178 | cnt += 1 179 | 180 | elif x > 11: # if number became 10, add only one space 181 | splitted = line.split() 182 | lines += " " + splitted[0] + "). " + str( 183 | " ".join(splitted[1:-1])).capitalize() + " (" + str(splitted[-1]) + ")" "\n" 184 | cnt += 1 185 | 186 | else: 187 | splitted = line.split() 188 | lines += 2 * " " + splitted[0] + "). " + str( 189 | " ".join(splitted[1:-1])).capitalize() + " (" + str(splitted[-1]) + ")" "\n" 190 | cnt += 1 191 | 192 | # lines = lines.replace(" ", "", 1) # removes only the first white space which occurs 193 | # lines = re.sub(' +', ' ', lines) 194 | self.diz["states"] = lines 195 | 196 | line = f.readline().rstrip() 197 | cnt += 1 198 | f.close() 199 | 200 | except Exception as e: 201 | logger.error(e) 202 | 203 | else: 204 | logger.error("[X]" + filepath + " doesn't exist") 205 | 206 | # save the text 207 | def save(self): 208 | for x, y in self.diz.items(): 209 | if x == "pos_rev": 210 | if self.lang == "en": 211 | self.pos_rev += ("Most positive review:\n" + "\n".join(textwrap.wrap(y, width=115)) + "\n\n") 212 | else: 213 | self.pos_rev += ("Recensione più positiva:\n" + "\n".join(textwrap.wrap(y, width=115)) + "\n\n") 214 | 215 | elif x == "neg_rev": 216 | if self.lang == "en": 217 | self.neg_rev += ("Most negative review:\n" + "\n".join(textwrap.wrap(y, width=115)) + "\n\n") 218 | else: 219 | self.neg_rev += ("Recensione più negativa:\n" + "\n".join(textwrap.wrap(y, width=115)) + "\n\n") 220 | 221 | elif x == "cities": 222 | if self.lang == "en": 223 | self.locations += ("Top 10 users' cities:" + y + "\n\n") 224 | else: 225 | self.locations += ("Le top 10 città di provenienza degli utenti:" + y + "\n\n") 226 | 227 | elif x == "states": 228 | if self.lang == "en": 229 | self.locations += ("Top 10 users' states:" + y + "\n\n") 230 | else: 231 | self.locations += ("I top 10 Stati di provenienza gli utenti:" + y + "\n\n") 232 | 233 | else: 234 | if x == "num_rev": 235 | if self.lang == "en": 236 | self.stats += ("Number of reviews: " + y + "\n\n") 237 | else: 238 | self.stats += ("Numero di recensioni: " + y + "\n\n") 239 | 240 | elif x == "from_date": 241 | if self.lang == "en": 242 | self.stats += ("From: " + y + "\n\n") 243 | else: 244 | self.stats += ("Da: " + y + "\n\n") 245 | 246 | elif x == "to_date": 247 | if self.lang == "en": 248 | self.stats += ("To: " + y + "\n\n") 249 | else: 250 | self.stats += ("A: " + y + "\n\n") 251 | 252 | elif x == "bigram": 253 | if self.lang == "en": 254 | self.stats += ("Most common pair of consecutive words and number of occurrences: " + y + "\n\n") 255 | else: 256 | self.stats += ( 257 | "Le coppie più popolari di parole consecutive e numero di occorrenze:" + y + "\n\n") 258 | 259 | elif x == "trigram": 260 | if self.lang == "en": 261 | self.stats += ("Most common trio of consecutive words and number of occurrences: " + y + "\n\n") 262 | else: 263 | self.stats += ("I trii più popolari di parole consecutive e numero di occorrenze:" + y + "\n\n") 264 | 265 | # put text into image 266 | def to_image(self): 267 | img1 = Image.new('RGB', (1920, 1080), color=(73, 109, 137)) 268 | img2 = Image.new('RGB', (1920, 1080), color=(73, 109, 137)) 269 | img3 = Image.new('RGB', (1920, 1080), color=(73, 109, 137)) 270 | img4 = Image.new('RGB', (1920, 1080), color=(73, 109, 137)) 271 | 272 | font = ImageFont.truetype("C:\Windows\Fonts\Verdana.ttf", 30) 273 | 274 | d1 = ImageDraw.Draw(img1) 275 | d1.text((50, 10), self.stats, fill=(255, 255, 0), font=font) 276 | img1.save('Routput/stats.png') 277 | 278 | d2 = ImageDraw.Draw(img2) 279 | d2.text((50, 50), self.pos_rev, fill=(255, 255, 0), font=font) 280 | img2.save('Routput/pos_rev.png') 281 | 282 | d3 = ImageDraw.Draw(img3) 283 | d3.text((50, 50), self.neg_rev, fill=(255, 255, 0), font=font) 284 | img3.save('Routput/neg_rev.png') 285 | 286 | d4 = ImageDraw.Draw(img4) 287 | d4.text((50, 50), self.locations, fill=(255, 255, 0), font=font) 288 | img4.save('Routput/locations.png') 289 | 290 | # Example 291 | # o = OutputParser() 292 | # o.parse() 293 | # o.save() 294 | # o.to_image() 295 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | Project logo 4 |

5 | 6 |

scrapeadvisor

7 | 8 |
9 | 10 | [![Status](https://img.shields.io/badge/status-active-success.svg)]() 11 | [![License](https://img.shields.io/badge/license-GPL3-blue.svg)](/LICENSE) 12 | 13 |
14 | 15 | --- 16 | 17 |

18 | A user-friendly python-based GUI which provides sentiment analysis of users' reviews toward a specific TripAdvisor facility 19 |
20 |

21 | 22 | ## Table of Contents 23 | 24 | - [About](#about) 25 | - [Getting Started](#getting_started) 26 | - [Run](#run) 27 | - [Usage](#usage) 28 | - [Statistics](#statistics) 29 | - [Supported Languages](#languages) 30 | - [Built Using](#built_using) 31 | - [Authors](#authors) 32 | - [Acknowledgments](#acknowledgement) 33 | - [Disclaimer](#disclaimer) 34 | 35 | ## About 36 | 37 | If you're reading, dear Tripadvisor, Inc., hire me! 38 | 39 | ## Getting Started 40 | 41 | ### Prerequisites 42 | 43 | - [Python](https://www.python.org/downloads/) installed 44 | - [R](https://cran.r-project.org/bin/windows/base/) installed 45 | 46 | ### Installing 47 | 48 | Make sure you've all Python dependencies installed with: 49 | 50 | ```console 51 | scrape@advisor:~$ pip3 install -r requirements.txt 52 | ``` 53 | 54 | Also, the following R packages are needed: 55 | 56 | - dplyr 57 | - readr 58 | - lubridate 59 | - ggplot2 60 | - tidytext 61 | - tidyverse 62 | - stringr 63 | - tidyr 64 | - scales 65 | - broom 66 | - purrr 67 | - widyr 68 | - igraph 69 | - ggraph 70 | - SnowballC 71 | - wordcloud 72 | - reshape2 73 | - TeachingDemos 74 | 75 | You can manually install missing ones with: 76 | 77 | ```R 78 | install.packages("library_name") 79 | ``` 80 | 81 | or run [this script](https://github.com/blackeko/scrapeadvisor/blob/master/ipak.R) (credit to [@stevenworthington](https://gist.github.com/stevenworthington)) to install them all. 82 | 83 | ### Note 84 | 85 | For Italian language support, **TextWiller** library must be installed.
86 | To do that: 87 | 88 | ```R 89 | install.packages("devtools") 90 | install_github("livioivil/TextWiller") 91 | ``` 92 | 93 | ## Run 94 | 95 | In order to launch *scrapeadvisor* GUI, run: 96 | 97 | ```console 98 | scrape@advisor:~$ python3 ScrapeAdvisor.py 99 | ``` 100 | 101 | ## Usage 102 | 103 | ### Insert URL 104 | 105 | 1. Insert the main page URL of a TripAdvisor structure (pub/restaurant/hotel/whatever) in the **URL bar** and click **Enter** (or press Enter) 106 | 2. Wait until **"Reviews Loaded"** label appears (may take time, depending on number of reviews) 107 | 108 | ### Show Reviews 109 | 110 | After the download is finished, press **"Show Reviews"** to see all the downloaded reviews. 111 | 112 | ### Sentiment Analysis 113 | 114 | After the download is finished, press **"Sentiment Analysis"** button and wait: all the graphs related to the facility will appear follow after, so you can **swipe** between them. 115 | 116 | ## Statistics 117 | 118 | - Frequent **couple/trio of consecutive words** (bigrams/trigrams) 119 | - Most **positive/negative review** 120 | - Top **positive/negative sentiments** of users 121 | - The **trending/shrinking words** 122 | - **Users' main cities** 123 | 124 | ## Screenshot 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 |
136 | 137 | ## Supported Languages 138 | 139 | - English 140 | - Italian 141 | 142 | ## Built Using 143 | 144 | - [Kivy](https://kivy.org/#home) - GUI 145 | - [Beautiful Soup](https://www.crummy.com/software/BeautifulSoup/bs4/doc/) - HTML scraping 146 | - [R](https://www.r-project.org/about.html) - Sentiment Analysis 147 | 148 | 149 | ## Acknowledgements 150 | 151 | - [@susanli2016](https://github.com/susanli2016) - [Web Scraping TripAdvisor](https://towardsdatascience.com/scraping-tripadvisor-text-mining-and-sentiment-analysis-for-hotel-reviews-cc4e20aef333) 152 | - [TextWiller](https://github.com/livioivil/TextWiller) - For providing Italian stop words and lexicon 153 | - All the other [packages](#about) - Thank you for being you 154 | 155 | ## Disclaimer 156 | 157 | *Scrapeadvisor* is provided under this License on an AS-IS basis, **without warranty of any kind**, either expressed, implied, or statutory, including, without limitation, warranties that the *scrapeadvisor* is free of defects, merchantable, fit for a particular purpose or non-infringing. 158 | 159 | To the extent permitted under Law, *scrapeadvisor* is provided under an AS-IS basis. The *scrapeadvisor* Team shall never, and without any limit, be liable for any damage, cost, expense or any other payment incurred as a result of *scrapeadvisor*'s actions, failure, bugs and/or any other interaction between *scrapeadvisor* and end-equipment, computers, other software or any 3rd party, end-equipment, computer or services. 160 | 161 | We **do not encourage** running *scrapeadvisor* against Tripadvisor without prior mutual consent. The *scrapeadvisor* Team accept no liability and are not responsible for any misuse or damage caused by *scrapeadvisor*. 162 | -------------------------------------------------------------------------------- /Rinput/en.R: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env Rscript 2 | args = commandArgs(trailingOnly=TRUE) 3 | args <- commandArgs(TRUE) 4 | filename <- as.character(args[1]) 5 | library(dplyr) 6 | library(readr) 7 | library(lubridate) 8 | library(ggplot2) 9 | library(tidytext) 10 | library(tidyverse) 11 | library(stringr) 12 | library(tidyr) 13 | library(scales) 14 | library(broom) 15 | library(purrr) 16 | library(widyr) 17 | library(igraph) 18 | library(ggraph) 19 | library(SnowballC) 20 | library(wordcloud) 21 | library(reshape2) 22 | library(TeachingDemos) 23 | library(rworldmap) 24 | theme_set(theme_minimal()) 25 | 26 | 27 | # min & max date 28 | df <- read_csv(filename) 29 | #df <- df[complete.cases(df), ] # remove row if one of the attr value is NA 30 | Sys.setlocale("LC_TIME", "C") 31 | df$review_date <- as.Date(df$review_date,format = "%B %d, %Y") 32 | setwd("Routput") 33 | txtStart("out.txt", commands=FALSE, results=TRUE, append=FALSE, visible.only=FALSE) 34 | print("en") 35 | dim(df); min(df$review_date); max(df$review_date) 36 | txtStop() 37 | 38 | # numbers rev per week 39 | png("rev_per_week.png", width = 1920, height = 1080, res=300) 40 | df %>% 41 | count(Week = round_date(review_date, "week")) %>% 42 | ggplot(aes(Week, n)) + 43 | geom_line() + 44 | ggtitle('The Number of Reviews Per Week') 45 | dev.off() 46 | 47 | 48 | # most common words 49 | df <- tibble::rowid_to_column(df, "ID") 50 | df <- df %>% 51 | mutate(review_date = as.POSIXct(review_date, origin = "1970-01-01"), month = round_date(review_date, "month")) 52 | 53 | 54 | # locations 55 | locations <- df %>% 56 | group_by(user_location) %>% 57 | summarise(count = length(user_location)) 58 | 59 | # cities and States 60 | locations <- locations %>% 61 | separate(user_location, into = c("city", "state"), sep = ", ") 62 | 63 | 64 | 65 | # top 10 cities 66 | top_cities <- arrange(locations, desc(count)) 67 | 68 | txtStart("out.txt", commands=FALSE, results=TRUE, append=TRUE, visible.only=FALSE) 69 | print("cities") 70 | top_cities %>% 71 | select(city, count) %>% 72 | group_by(city) %>% 73 | head(10) 74 | txtStop() 75 | 76 | 77 | # top 10 States 78 | top_states <- locations %>% 79 | group_by(state) %>% 80 | summarise(count = sum(count)) 81 | 82 | top_states <- arrange(top_states, desc(count)) 83 | 84 | txtStart("out.txt", commands=FALSE, results=TRUE, append=TRUE, visible.only=FALSE) 85 | print("states") 86 | top_states %>% 87 | head(10) 88 | txtStop() 89 | 90 | 91 | 92 | # world map 93 | #png("world_map.png", width = 1920, height = 1080, res=300) 94 | #matched <- joinCountryData2Map(top_states, joinCode="NAME", nameJoinColumn="state") 95 | #tryCatch(mapCountryData(matched, nameColumnToPlot="state", mapTitle="User Location Distribution", catMethod = "pretty", colourPalette = "heat"), error = function(e) print(e)) 96 | #dev.off() 97 | 98 | review_words <- df %>% 99 | distinct(review_body, .keep_all = TRUE) %>% 100 | unnest_tokens(word, review_body, token="regex", pattern="[\\s\\.\\,\\-\\;\\:\\_\\?\\!\\'\\\"\\/\\(\\)\\[\\]\\{\\}\\+\\=\\<\\>\\$\\???]+",drop = FALSE) %>% 101 | distinct(ID, word, .keep_all = TRUE) %>% 102 | anti_join(stop_words, by = "word") %>% 103 | filter(str_detect(word, "[^\\d]")) %>% 104 | group_by(word) %>% 105 | mutate(word_total = n()) %>% 106 | ungroup() 107 | 108 | # most common words with wordclouds 109 | png("25_wordclouds.png", width = 1920, height = 1080, res=300) 110 | word_counts <- review_words %>% 111 | count(word, sort = TRUE) %>% 112 | with(wordcloud(word, n, max.words = 50)) 113 | dev.off() 114 | 115 | word_counts <- review_words %>% 116 | count(word, sort = TRUE) 117 | 118 | 119 | png("25_most_common_words.png", width = 1920, height = 1080, res=300) 120 | word_counts %>% 121 | head(25) %>% 122 | mutate(word = wordStem(word)) %>% 123 | mutate(word = reorder(word, n)) %>% 124 | ggplot(aes(word, n)) + 125 | geom_col(fill = "lightblue") + 126 | scale_y_continuous(labels = comma_format()) + 127 | coord_flip() + 128 | labs(title = "Most common words in reviews to date", 129 | subtitle = "Stop words removed and stemmed", 130 | y = "Number of uses") 131 | dev.off() 132 | 133 | 134 | 135 | 136 | # bigrams 137 | review_bigrams <- df %>% 138 | unnest_tokens(bigram, review_body, token = "ngrams", n = 2) 139 | 140 | bigrams_separated <- review_bigrams %>% 141 | separate(bigram, c("word1", "word2"), sep = " ") 142 | 143 | bigrams_filtered <- bigrams_separated %>% 144 | filter(!word1 %in% stop_words$word) %>% 145 | filter(!word2 %in% stop_words$word) 146 | 147 | bigram_counts <- bigrams_filtered %>% 148 | count(word1, word2, sort = TRUE) 149 | 150 | bigrams_united <- bigrams_filtered %>% 151 | unite(bigram, word1, word2, sep = " ") 152 | 153 | txtStart("out.txt", commands=FALSE, results=TRUE, append=TRUE, visible.only=FALSE) 154 | bigrams_united %>% 155 | count(bigram, sort = TRUE) %>% 156 | head(10) 157 | txtStop() 158 | 159 | 160 | 161 | # trigrams 162 | review_trigrams <- df %>% 163 | unnest_tokens(trigram, review_body, token = "ngrams", n = 3) 164 | 165 | trigrams_separated <- review_trigrams %>% 166 | separate(trigram, c("word1", "word2", "word3"), sep = " ") 167 | 168 | trigrams_filtered <- trigrams_separated %>% 169 | filter(!word1 %in% stop_words$word) %>% 170 | filter(!word2 %in% stop_words$word) %>% 171 | filter(!word3 %in% stop_words$word) 172 | 173 | trigram_counts <- trigrams_filtered %>% 174 | count(word1, word2, word3, sort = TRUE) 175 | 176 | trigrams_united <- trigrams_filtered %>% 177 | unite(trigram, word1, word2, word3, sep = " ") 178 | 179 | txtStart("out.txt", commands=FALSE, results=TRUE, append=TRUE, visible.only=FALSE) 180 | trigrams_united %>% 181 | count(trigram, sort = TRUE) %>% 182 | head(10) 183 | txtStop() 184 | 185 | 186 | 187 | 188 | # growing reviews 189 | reviews_per_month <- df %>% 190 | group_by(month) %>% 191 | summarize(month_total = n()) 192 | 193 | word_month_counts <- review_words %>% 194 | filter(word_total >= 10) %>% 195 | count(word, month) %>% 196 | tidyr::complete(word, month, fill = list(n = 0)) %>% 197 | inner_join(reviews_per_month, by = "month") %>% 198 | mutate(percent = n / month_total) %>% 199 | mutate(year = year(month) + yday(month) / 365) 200 | 201 | 202 | 203 | mod <- ~ glm(cbind(n, month_total - n) ~ year, ., family = "binomial") 204 | 205 | slopes <- word_month_counts %>% 206 | nest(-word) %>% 207 | mutate(model = map(data, mod)) %>% 208 | unnest(map(model, tidy)) %>% 209 | filter(term == "year") %>% 210 | arrange(desc(estimate)) 211 | 212 | 213 | png("9_growing.png", width = 1920, height = 1080, res=300) 214 | slopes %>% 215 | head(9) %>% 216 | inner_join(word_month_counts, by = "word") %>% 217 | mutate(word = reorder(word, -estimate)) %>% 218 | ggplot(aes(month, n / month_total, color = word)) + 219 | geom_line(show.legend = FALSE) + 220 | scale_y_continuous(labels = percent_format()) + 221 | facet_wrap(~ word, scales = "free_y") + 222 | expand_limits(y = 0) + 223 | labs(x = "Year", 224 | y = "Percentage of reviews containing this word", 225 | title = "9 fastest growing words in TripAdvisor reviews") 226 | dev.off() 227 | 228 | 229 | # decreasing 230 | png("9_decreasing.png", width = 1920, height = 1080, res=300) 231 | slopes %>% 232 | tail(9) %>% 233 | inner_join(word_month_counts, by = "word") %>% 234 | mutate(word = reorder(word, estimate)) %>% 235 | ggplot(aes(month, n / month_total, color = word)) + 236 | geom_line(show.legend = FALSE) + 237 | scale_y_continuous(labels = percent_format()) + 238 | facet_wrap(~ word, scales = "free_y") + 239 | expand_limits(y = 0) + 240 | labs(x = "Year", 241 | y = "Percentage of reviews containing this term", 242 | title = "9 fastest shrinking words in TripAdvisor reviews") 243 | dev.off() 244 | 245 | 246 | # SENTIMENT ANALYSIS 247 | # most common positive and negative words 248 | reviews <- df %>% 249 | filter(!is.na(review_body)) %>% 250 | select(ID, review_body) %>% 251 | group_by(row_number()) %>% 252 | ungroup() 253 | tidy_reviews <- reviews %>% 254 | unnest_tokens(word, review_body, token="regex", pattern="[\\s\\.\\,\\-\\;\\:\\_\\?\\!\\'\\\"\\/\\(\\)\\[\\]\\{\\}\\+\\=\\<\\>\\$\\???]+") 255 | 256 | tidy_reviews <- tidy_reviews %>% 257 | anti_join(stop_words, by="word") 258 | 259 | bing_word_counts <- tidy_reviews %>% 260 | inner_join(get_sentiments("bing"), by="word") %>% 261 | count(word, sentiment, sort = TRUE) %>% 262 | ungroup() 263 | 264 | png("sent_bing.png", width = 1920, height = 1080, res=300) 265 | bing_word_counts %>% 266 | group_by(sentiment) %>% 267 | top_n(10, n) %>% 268 | ungroup() %>% 269 | mutate(word = reorder(word, n)) %>% 270 | ggplot(aes(word, n, fill = sentiment)) + 271 | geom_col(show.legend = FALSE) + 272 | facet_wrap(~sentiment, scales = "free") + 273 | labs(y = "Contribution to sentiment", x = NULL) + 274 | coord_flip() + 275 | ggtitle('Words with the greatest contributions to positive/negative 276 | sentiment in reviews [BING]') + 277 | geom_col(show.legend = FALSE) 278 | dev.off() 279 | 280 | # AFINN library 281 | png("sent_afinn.png", width = 1920, height = 1080, res=300) 282 | contributions <- tidy_reviews %>% 283 | inner_join(get_sentiments("afinn"), by = "word") %>% 284 | group_by(word) %>% 285 | summarize(occurences = n(), contribution = sum(score)) 286 | contributions %>% 287 | top_n(20, abs(contribution)) %>% 288 | mutate(word = reorder(word, contribution)) %>% 289 | ggplot(aes(word, contribution, fill = contribution > 0)) + 290 | ggtitle('Words with the greatest contributions to positive/negative 291 | sentiment in reviews [AFINN]') + 292 | geom_col(show.legend = FALSE) + 293 | coord_flip() 294 | dev.off() 295 | 296 | 297 | # preceeded by not 298 | bigrams_separated %>% 299 | filter(word1 == "not") %>% 300 | count(word1, word2, sort = TRUE) 301 | 302 | AFINN <- get_sentiments("afinn") 303 | not_words <- bigrams_separated %>% 304 | filter(word1 == "not") %>% 305 | inner_join(AFINN, by = c(word2 = "word")) %>% 306 | count(word2, score, sort = TRUE) %>% 307 | ungroup() 308 | 309 | 310 | not_words %>% 311 | mutate(contribution = n * score) %>% 312 | arrange(desc(abs(contribution))) %>% 313 | head(20) %>% 314 | mutate(word2 = reorder(word2, contribution)) %>% 315 | ggplot(aes(word2, n * score, fill = n * score > 0)) + 316 | geom_col(show.legend = FALSE) + 317 | xlab("Words preceded by \"not\"") + 318 | ylab("Sentiment score * number of occurrences") + 319 | ggtitle('The 20 words preceded by "not" that had the greatest contribution to 320 | sentiment scores, positive or negative direction') + 321 | coord_flip() 322 | 323 | 324 | # negation with no, not, never and without 325 | negation_words <- c("not", "no", "never", "without") 326 | 327 | negated_words <- bigrams_separated %>% 328 | filter(word1 %in% negation_words) %>% 329 | inner_join(AFINN, by = c(word2 = "word")) %>% 330 | count(word1, word2, score, sort = TRUE) %>% 331 | ungroup() 332 | 333 | png("not_follows.png", width = 1920, height = 1080, res=300) 334 | negated_words %>% 335 | mutate(contribution = n * score, 336 | word2 = reorder(paste(word2, word1, sep = "__"), contribution)) %>% 337 | group_by(word1) %>% 338 | top_n(12, abs(contribution)) %>% 339 | ggplot(aes(word2, contribution, fill = n * score > 0)) + 340 | geom_col(show.legend = FALSE) + 341 | facet_wrap(~ word1, scales = "free") + 342 | scale_x_discrete(labels = function(x) gsub("__.+$", "", x)) + 343 | xlab("Words preceded by negation term") + 344 | ylab("Sentiment score * number of occurrences") + 345 | ggtitle('The most common positive and negative words which follow negations 346 | such as "no", "not", "never" and "without"') + 347 | coord_flip() 348 | dev.off() 349 | 350 | 351 | 352 | # lastly, let's find out the most positive and negative reviews 353 | sentiment_messages <- tidy_reviews %>% 354 | inner_join(get_sentiments("afinn"), by = "word") %>% 355 | group_by(ID) %>% 356 | summarize(sentiment = mean(score), 357 | words = n()) %>% 358 | ungroup() %>% 359 | filter(words >= 5) 360 | 361 | # most positive reviews 362 | sentiment_messages %>% 363 | arrange(desc(sentiment)) %>% 364 | head(1) -> i 365 | txtStart("out.txt", commands=FALSE, results=TRUE, append=TRUE, visible.only=FALSE) 366 | print("pos_rev") 367 | df[ which(df$ID==i$ID), ]$review_body[1] 368 | txtStop() 369 | 370 | # most negative reviews 371 | sentiment_messages %>% 372 | arrange(sentiment) %>% 373 | head(1) -> i 374 | txtStart("out.txt", commands=FALSE, results=TRUE, append=TRUE, visible.only=FALSE) 375 | print("neg_rev") 376 | df[ which(df$ID==i$ID), ]$review_body[1] 377 | txtStop() 378 | 379 | -------------------------------------------------------------------------------- /Rinput/it.R: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env Rscript 2 | args = commandArgs(trailingOnly=TRUE) 3 | args <- commandArgs(TRUE) 4 | filename <- as.character(args[1]) 5 | library(dplyr) 6 | library(readr) 7 | library(lubridate) 8 | library(ggplot2) 9 | library(tidytext) 10 | library(tidyverse) 11 | library(stringr) 12 | library(tidyr) 13 | library(scales) 14 | library(broom) 15 | library(purrr) 16 | library(widyr) 17 | library(igraph) 18 | library(ggraph) 19 | library(SnowballC) 20 | library(wordcloud) 21 | library(reshape2) 22 | library(TextWiller) 23 | library(TeachingDemos) 24 | library(rworldmap) 25 | theme_set(theme_minimal()) 26 | 27 | 28 | # load file of sentiments 29 | sentiments <- read_csv("Rinput/sent.csv") 30 | load(file = "Rinput/itastopwords.rda") 31 | 32 | 33 | # read the CSV file 34 | df <- read_csv(filename) 35 | Sys.setlocale("LC_TIME", "C") 36 | df$review_date <- as.Date(df$review_date,format = "%B %d, %Y") 37 | setwd("Routput") 38 | txtStart("out.txt", commands=FALSE, results=TRUE, append=FALSE, visible.only=FALSE) 39 | print("it") 40 | dim(df); min(df$review_date); max(df$review_date) 41 | txtStop() 42 | 43 | # number reviews per week 44 | png("rev_per_week.png", width = 1920, height = 1080, res=300) 45 | df %>% 46 | count(Week = round_date(review_date, "week")) %>% 47 | ggplot(aes(Week, n)) + 48 | geom_line() + 49 | ggtitle('Numero di recensioni per settimana') + 50 | labs(x = "Settimana", 51 | y = "Numero recensioni") 52 | dev.off() 53 | 54 | # most common word stemmed 55 | df <- tibble::rowid_to_column(df, "ID") 56 | df <- df %>% 57 | mutate(review_date = as.POSIXct(review_date, origin = "1970-01-01"),month = round_date(review_date, "month")) 58 | 59 | 60 | # locations 61 | locations <- df %>% 62 | group_by(user_location) %>% 63 | summarise(count = length(user_location)) 64 | 65 | # cities and States 66 | locations <- locations %>% 67 | separate(user_location, into = c("city", "state"), sep = ", ") 68 | 69 | # top 10 cities 70 | top_cities <- arrange(locations, desc(count)) 71 | 72 | txtStart("out.txt", commands=FALSE, results=TRUE, append=TRUE, visible.only=FALSE) 73 | print("cities") 74 | top_cities %>% 75 | select(city, count) %>% 76 | group_by(city) %>% 77 | head(10) 78 | txtStop() 79 | 80 | 81 | # top 10 States 82 | top_states <- locations %>% 83 | group_by(state) %>% 84 | summarise(count = sum(count)) 85 | 86 | top_states <- arrange(top_states, desc(count)) 87 | 88 | txtStart("out.txt", commands=FALSE, results=TRUE, append=TRUE, visible.only=FALSE) 89 | print("states") 90 | top_states %>% 91 | head(10) 92 | txtStop() 93 | 94 | # world map 95 | #png("world_map.png", width = 1920, height = 1080, res=300) 96 | #matched <- joinCountryData2Map(top_states, joinCode="NAME", nameJoinColumn="state") 97 | #tryCatch(mapCountryData(matched, nameColumnToPlot="state", mapTitle="User Location Distribution", catMethod = "pretty", colourPalette = "heat"), error = function(e) print(e)) 98 | #dev.off() 99 | 100 | 101 | stopword <- tibble(word=itastopwords) 102 | 103 | review_words <- df %>% 104 | distinct(review_body, .keep_all = TRUE) %>% 105 | unnest_tokens(word, review_body, token="regex", pattern="[\\s\\.\\,\\-\\;\\:\\_\\?\\!\\'\\\"\\/\\(\\)\\[\\]\\{\\}\\+\\=\\<\\>\\$\\???]+") %>% 106 | distinct(ID, word, .keep_all = TRUE) %>% 107 | anti_join(stopword, by = "word") %>% #removes Italian stepwords 108 | filter(str_detect(word, "[^\\d]")) %>% 109 | group_by(word) %>% 110 | mutate(word_total = n()) %>% 111 | ungroup() 112 | 113 | # most common words with wordclouds 114 | png("25_wordclouds.png", width = 1920, height = 1080, res=300) 115 | word_counts <- review_words %>% 116 | count(word, sort = TRUE) %>% 117 | with(wordcloud(word, n, max.words = 50)) 118 | dev.off() 119 | 120 | word_counts <- review_words %>% 121 | count(word, sort = TRUE) 122 | 123 | # 25 most common words 124 | png("25_most_common_words.png", width = 1920, height = 1080, res=300) 125 | word_counts %>% 126 | head(25) %>% 127 | mutate(word = wordStem(word, "it")) %>% 128 | mutate(word = reorder(word, n)) %>% 129 | ggplot(aes(word, n)) + 130 | geom_col(fill = "lightblue") + 131 | scale_y_continuous(labels = comma_format()) + 132 | coord_flip() + 133 | labs(title = "Parole maggiormente utilizzate", 134 | subtitle = "Stop word rimosse, stemming delle parole", 135 | x = "Parola", 136 | y = "Numero di occorrenze") 137 | dev.off() 138 | 139 | # biagrams 140 | review_bigrams <- df %>% 141 | unnest_tokens(bigram, review_body, token = "ngrams", n = 2) 142 | 143 | bigrams_separated <- review_bigrams %>% 144 | separate(bigram, c("word1", "word2"), sep = " ") 145 | 146 | bigrams_filtered <- bigrams_separated %>% 147 | filter(!word1 %in% stopword$word) %>% 148 | filter(!word2 %in% stopword$word) 149 | 150 | bigram_counts <- bigrams_filtered %>% 151 | count(word1, word2, sort = TRUE) 152 | 153 | bigrams_united <- bigrams_filtered %>% 154 | unite(bigram, word1, word2, sep = " ") 155 | 156 | txtStart("out.txt", commands=FALSE, results=TRUE, append=TRUE, visible.only=FALSE) 157 | bigrams_united %>% 158 | count(bigram, sort = TRUE) %>% 159 | head(10) # display only first 10 results 160 | txtStop() 161 | 162 | 163 | # trigrams 164 | review_trigrams <- df %>% 165 | unnest_tokens(trigram, review_body, token = "ngrams", n = 3) 166 | 167 | trigrams_separated <- review_trigrams %>% 168 | separate(trigram, c("word1", "word2", "word3"), sep = " ") 169 | 170 | trigrams_filtered <- trigrams_separated %>% 171 | filter(!word1 %in% stopword$word) %>% 172 | filter(!word2 %in% stopword$word) %>% 173 | filter(!word3 %in% stopword$word) 174 | 175 | trigram_counts <- trigrams_filtered %>% 176 | count(word1, word2, word3, sort = TRUE) 177 | 178 | trigrams_united <- trigrams_filtered %>% 179 | unite(trigram, word1, word2, word3, sep = " ") 180 | 181 | txtStart("out.txt", commands=FALSE, results=TRUE, append=TRUE, visible.only=FALSE) 182 | trigrams_united %>% 183 | count(trigram, sort = TRUE) %>% 184 | head(10) # display only first 10 results 185 | txtStop() 186 | 187 | 188 | 189 | # increasing words per months 190 | reviews_per_month <- df %>% 191 | group_by(month) %>% 192 | summarize(month_total = n()) 193 | 194 | 195 | word_month_counts <- review_words %>% 196 | filter(word_total >= 10) %>% 197 | count(word, month) %>% 198 | tidyr::complete(word, month, fill = list(n = 0)) %>% 199 | inner_join(reviews_per_month, by = "month") %>% 200 | mutate(percent = n / month_total) %>% 201 | mutate(year = year(month) + yday(month) / 365) 202 | 203 | 204 | mod <- ~ glm(cbind(n, month_total - n) ~ year, ., family = "binomial") 205 | 206 | slopes <- word_month_counts %>% 207 | nest(-word) %>% 208 | mutate(model = map(data, mod)) %>% 209 | unnest(map(model, tidy)) %>% 210 | filter(term == "year") %>% 211 | arrange(desc(estimate)) 212 | 213 | png("9_growing.png", width = 1920, height = 1080, res=300) 214 | slopes %>% 215 | head(9) %>% 216 | inner_join(word_month_counts, by = "word") %>% 217 | mutate(word = reorder(word, -estimate)) %>% 218 | ggplot(aes(month, n / month_total, color = word)) + 219 | geom_line(show.legend = FALSE) + 220 | scale_y_continuous(labels = percent_format()) + 221 | facet_wrap(~ word, scales = "free_y") + 222 | expand_limits(y = 0) + 223 | labs(x = "Anno", 224 | y = "Percentuale di recensioni contenenti questa parola", 225 | title = "Parole che sono cresciute maggiormente") 226 | dev.off() 227 | 228 | # decreasing word per month 229 | png("9_decreasing.png", width = 1920, height = 1080, res=300) 230 | slopes %>% 231 | tail(9) %>% 232 | inner_join(word_month_counts, by = "word") %>% 233 | mutate(word = reorder(word, estimate)) %>% 234 | ggplot(aes(month, n / month_total, color = word)) + 235 | geom_line(show.legend = FALSE) + 236 | scale_y_continuous(labels = percent_format()) + 237 | facet_wrap(~ word, scales = "free_y") + 238 | expand_limits(y = 0) + 239 | labs(x = "Anno", 240 | y = "Percentuale di recensioni contenenti questa parola", 241 | title = "Parole che sono diminuite maggiormente") 242 | dev.off() 243 | 244 | 245 | # SENTIMENT ANALYSIS 246 | # most common positive and negative words 247 | reviews <- df %>% 248 | filter(!is.na(review_body)) %>% 249 | select(ID, review_body) %>% 250 | group_by(row_number()) %>% 251 | ungroup() 252 | 253 | tidy_reviews <- reviews %>% 254 | unnest_tokens(word, review_body, token="regex", pattern="[\\s\\.\\,\\-\\;\\:\\_\\?\\!\\'\\\"\\/\\(\\)\\[\\]\\{\\}\\+\\=\\<\\>\\$\\???]+") 255 | 256 | tidy_reviews <- tidy_reviews %>% 257 | anti_join(stopword, by="word") 258 | 259 | stemmed <- tidy_reviews %>% 260 | mutate(word = wordStem(word, "it")) 261 | 262 | contributions <- stemmed %>% 263 | inner_join(sentiments, by = "word") %>% 264 | group_by(word) %>% 265 | summarize(occurences = n(), contribution = sum(score)) 266 | 267 | png("sent_afinn.png", width = 1920, height = 1080, res=300) 268 | contributions %>% 269 | top_n(20, abs(contribution)) %>% 270 | mutate(word = reorder(word, contribution)) %>% 271 | ggplot(aes(word, contribution, fill = contribution > 0)) + 272 | ggtitle('Parole piu connesse a sentimenti positivi/negativi') + 273 | xlab("Parola") + 274 | ylab("Numero di occorrenze") + 275 | geom_col(show.legend = FALSE) + 276 | coord_flip() 277 | dev.off() 278 | 279 | 280 | # preceeded by not 281 | bigrams_filtered %>% 282 | filter(word1 == "non") %>% 283 | count(word1, word2, sort = TRUE) 284 | 285 | not_words <- trigrams_filtered %>% 286 | filter(word1 == "non") %>% 287 | inner_join(sentiments, by = c(word2 = "word")) %>% 288 | count(word2, score, sort = TRUE) %>% 289 | ungroup() 290 | 291 | # negation with no, not, never and without 292 | negation_words <- c("non", "no", "ne", "neppure", "neanche", "nemmeno", "mai", "senza") 293 | 294 | 295 | negated_words <- bigrams_filtered %>% 296 | filter(word1 %in% negation_words) %>% 297 | #inner_join(sentiments, by = c(word2 = "word")) %>% eheheh 298 | count(word1, word2, sort = TRUE) %>% 299 | ungroup() 300 | 301 | negated_words %>% head(10) 302 | 303 | 304 | png("25_not_follows.png", width = 1920, height = 1080, res=300) 305 | negated_words %>% 306 | head(25) %>% 307 | mutate(word = reorder(paste(word1,word2, sep=" "), n)) %>% 308 | ggplot(aes(word, n)) + 309 | geom_col(fill = "brown1") + 310 | scale_y_continuous(labels = comma_format()) + 311 | coord_flip() + 312 | labs(title = "Parole seguite da negazioni", 313 | x = "Parola", 314 | y = "Numero di occorrenze") 315 | dev.off() 316 | 317 | 318 | # with contributions of sentiments 319 | negated_words_sent <- bigrams_filtered %>% 320 | filter(word1 %in% negation_words) %>% 321 | inner_join(sentiments, by = c(word2 = "word")) %>% 322 | count(word1, word2, score, sort = TRUE) %>% 323 | ungroup() 324 | 325 | 326 | x <- tryCatch(eval(parse(text = ' 327 | file.create("not_follows.png") 328 | png("not_follows.png", width = 1920, height = 1080, res=300) 329 | negated_words_sent %>% 330 | mutate(contribution = n * score, 331 | word2 = reorder(paste(word2, word1, sep = "__"), contribution)) %>% 332 | group_by(word1) %>% 333 | top_n(12, abs(contribution)) %>% 334 | ggplot(aes(word2, contribution, fill = n * score > 0)) + 335 | geom_col(show.legend = FALSE) + 336 | facet_wrap(~ word1, scales = "free") + 337 | scale_x_discrete(labels = function() gsub("__.+$", "", x)) + 338 | xlab("Word") + 339 | ylab("Score") + 340 | coord_flip()')), error = function(e) e) 341 | 342 | # here we have a permission denied error.. lol 343 | tryCatch(print(x), error = function(e) file.remove("not_follows.png")) 344 | 345 | # lastly, let's find out the most positive and negative reviews 346 | sentiment_messages <- stemmed %>% 347 | inner_join(sentiments, by = "word") %>% 348 | group_by(ID) %>% 349 | summarize(sentiment = mean(score), words = n()) %>% 350 | ungroup() %>% 351 | filter(words >= 5) 352 | 353 | # most positive reviews 354 | sentiment_messages %>% 355 | arrange(desc(sentiment)) %>% 356 | head(1) -> i 357 | txtStart("out.txt", commands=FALSE, results=TRUE, append=TRUE, visible.only=FALSE) 358 | print("pos_rev") 359 | df[ which(df$ID==i$ID), ]$review_body[1] 360 | txtStop() 361 | 362 | # most negative reviews 363 | sentiment_messages %>% 364 | arrange(sentiment) %>% 365 | head(1) -> i 366 | txtStart("out.txt", commands=FALSE, results=TRUE, append=TRUE, visible.only=FALSE) 367 | print("neg_rev") 368 | df[ which(df$ID==i$ID), ]$review_body[1] 369 | txtStop() 370 | 371 | -------------------------------------------------------------------------------- /Rinput/itastopwords.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0x0be/scrapeadvisor/fac295ff99e2428e7ce8c8875f1bd427bb101942/Rinput/itastopwords.rda -------------------------------------------------------------------------------- /Rinput/sent.csv: -------------------------------------------------------------------------------- 1 | word,sentiment,lexicon,score 2 | a-cort-di-liquid,negative,bing,-1 3 | malincuor,negative,bing,-2 4 | abbandon,negative,bing,-2 5 | abbatt,negative,bing,-1 6 | abbozz,negative,bing,-1 7 | abbrut,negative,bing,-1 8 | abissal,negative,bing,-1 9 | abiss,negative,bing,-1 10 | abomin,negative,bing,-3 11 | abominevol,negative,bing,-3 12 | abras,negative,bing,-1 13 | abus,negative,bing,-1 14 | accan,negative,bing,-1 15 | accartocc,negative,bing,-1 16 | accatto-nagg,negative,bing,-1 17 | accec,negative,bing,-1 18 | accidental,negative,bing,-1 19 | accident,negative,bing,-1 20 | accus,negative,bing,-1 21 | accusator,negative,bing,-1 22 | acid,negative,bing,-1 23 | acre,negative,bing,-1 24 | acrimon,negative,bing,-1 25 | addolor,negative,bing,-2 26 | adesc,negative,bing,-1 27 | adulter,negative,bing,-1 28 | affam,negative,bing,-1 29 | affatic,negative,bing,-1 30 | afflitt,negative,bing,-1 31 | afflizion,negative,bing,-1 32 | affoll,negative,bing,-2 33 | affond,negative,bing,-1 34 | affrant,negative,bing,-2 35 | affront,negative,bing,-1 36 | aggrav,negative,bing,-2 37 | aggression,negative,bing,-3 38 | aggress,negative,bing,-3 39 | aggressor,negative,bing,-3 40 | aggrott-le-sopraccigl,negative,bing,-1 41 | aggrovigl,negative,bing,-1 42 | aggu,negative,bing,-1 43 | agit,negative,bing,-1 44 | agon,negative,bing,-1 45 | agonizz,negative,bing,-1 46 | alien,negative,bing,-1 47 | all'oscur,negative,bing,-1 48 | allarm,negative,bing,-1 49 | allerg,negative,bing,-1 50 | allocc,negative,bing,-1 51 | allucin,negative,bing,-2 52 | allusion,negative,bing,-1 53 | alterc,negative,bing,-1 54 | altezz,negative,bing,-1 55 | alto-e-dinoccol,negative,bing,-1 56 | alzat-di-spall,negative,bing,-1 57 | amar,negative,bing,-2 58 | amarezz,negative,bing,-2 59 | ambigu,negative,bing,-1 60 | ambivalent,negative,bing,-1 61 | ammacc,negative,bing,-1 62 | ammaccatur,negative,bing,-1 63 | ammal,negative,bing,-1 64 | amministr-mal,negative,bing,-1 65 | ammon,negative,bing,-1 66 | ammonitor,negative,bing,-1 67 | ammonizion,negative,bing,-1 68 | ammortizz,negative,bing,-1 69 | ampoll,negative,bing,-1 70 | amput,negative,bing,-1 71 | a-nalfabet,negative,bing,-1 72 | a-narc,negative,bing,-1 73 | anem,negative,bing,-1 74 | angosc,negative,bing,-2 75 | angust,negative,bing,-2 76 | animos,negative,bing,-1 77 | annacqu,negative,bing,-1 78 | anneg,negative,bing,-1 79 | annichil,negative,bing,-1 80 | annid,negative,bing,-1 81 | annient,negative,bing,-1 82 | annod,negative,bing,-1 83 | annoi,negative,bing,-1 84 | annull,negative,bing,-1 85 | anomal,negative,bing,-1 86 | anormal,negative,bing,-1 87 | ansi,negative,bing,-1 88 | ansios,negative,bing,-1 89 | antagon,negative,bing,-1 90 | antagonist,negative,bing,-1 91 | anti,negative,bing,-1 92 | anti-americ,negative,bing,-1 93 | anti-bianc,negative,bing,-1 94 | anti-israel,negative,bing,-1 95 | anti-occup,negative,bing,-1 96 | anti-social,negative,bing,-1 97 | antieconom,negative,bing,-1 98 | antipat,negative,bing,-3 99 | antiqu,negative,bing,-1 100 | antisem,negative,bing,-1 101 | antitet,negative,bing,-1 102 | apat,negative,bing,-2 103 | apocaliss,negative,bing,-1 104 | apocalitt,negative,bing,-1 105 | apologet,negative,bing,-1 106 | appal,negative,bing,-1 107 | appann,negative,bing,-1 108 | appass,negative,bing,-1 109 | appell,negative,bing,-1 110 | append,negative,bing,-1 111 | appiccic,negative,bing,-1 112 | apprension,negative,bing,-1 113 | apprens,negative,bing,-1 114 | approssim,negative,bing,-1 115 | arbitrar,negative,bing,-1 116 | arcaic,negative,bing,-1 117 | arcan,negative,bing,-1 118 | ardu,negative,bing,-1 119 | arpi,negative,bing,-1 120 | arrabb,negative,bing,-2 121 | arrend,negative,bing,-2 122 | arrest,negative,bing,-1 123 | arretratezz,negative,bing,-2 124 | arring,negative,bing,-1 125 | arrog,negative,bing,-2 126 | arrogant,negative,bing,-2 127 | arruff,negative,bing,-1 128 | arruggin,negative,bing,-2 129 | artific,negative,bing,-1 130 | aspett-negat,negative,bing,-2 131 | aspr,negative,bing,-1 132 | assalg,negative,bing,-1 133 | assalt,negative,bing,-1 134 | assassin,negative,bing,-1 135 | assecond,negative,bing,-1 136 | assed,negative,bing,-1 137 | assent,negative,bing,-1 138 | assenz,negative,bing,-1 139 | asset-di-sangu,negative,bing,-1 140 | assill,negative,bing,-1 141 | assorb,negative,bing,-1 142 | assord,negative,bing,-2 143 | assurd,negative,bing,-2 144 | asten-da,negative,bing,-1 145 | asti,negative,bing,-1 146 | astut,negative,bing,-2 147 | astuz,negative,bing,-2 148 | atroc,negative,bing,-3 149 | atrof,negative,bing,-1 150 | attacc,negative,bing,-1 151 | attacc-di-cuor,negative,bing,-1 152 | attacc-furios,negative,bing,-1 153 | attrit,negative,bing,-1 154 | audac,negative,bing,-1 155 | auster,negative,bing,-1 156 | aut-golp,negative,bing,-1 157 | aut-interess,negative,bing,-1 158 | aut-umil,negative,bing,-1 159 | autocr,negative,bing,-1 160 | autocrat,negative,bing,-1 161 | autodistrutt,negative,bing,-1 162 | autolesion,negative,bing,-1 163 | autoritar,negative,bing,-1 164 | avar,negative,bing,-2 165 | avariz,negative,bing,-2 166 | avid,negative,bing,-2 167 | avvent,negative,bing,-1 168 | avversar,negative,bing,-1 169 | avversion,negative,bing,-1 170 | avvers,negative,bing,-2 171 | avvert,negative,bing,-1 172 | avvilent,negative,bing,-1 173 | avvil,negative,bing,-1 174 | avvit,negative,bing,-1 175 | avvizz,negative,bing,-1 176 | avvolt,negative,bing,-1 177 | babbe,negative,bing,-1 178 | bagarin,negative,bing,-1 179 | baglior,negative,bing,-1 180 | banal,negative,bing,-2 181 | banalizz,negative,bing,-2 182 | band,negative,bing,-1 183 | barbar,negative,bing,-1 184 | barcoll,negative,bing,-1 185 | bassezz,negative,bing,-1 186 | bass-rating,negative,bing,-1 187 | bastard,negative,bing,-3 188 | baston,negative,bing,-2 189 | battaglier,negative,bing,-1 190 | battibecc,negative,bing,-1 191 | batt-d'arrest,negative,bing,-1 192 | batt,negative,bing,-1 193 | beff,negative,bing,-1 194 | beffard,negative,bing,-2 195 | bellic,negative,bing,-1 196 | belliger,negative,bing,-1 197 | berlin,negative,bing,-1 198 | bestemm,negative,bing,-1 199 | bestial,negative,bing,-1 200 | biasimevol,negative,bing,-1 201 | bigott,negative,bing,-1 202 | birichin,negative,bing,-1 203 | bisogn,negative,bing,-1 204 | bizz,negative,bing,-1 205 | bizzarr,negative,bing,-1 206 | blah,negative,bing,-1 207 | bland,negative,bing,-1 208 | blasfem,negative,bing,-1 209 | blater,negative,bing,-1 210 | blocc,negative,bing,-1 211 | blocc-stradal,negative,bing,-1 212 | boicott,negative,bing,-1 213 | bomb,negative,bing,-1 214 | bombard,negative,bing,-1 215 | borbott,negative,bing,-1 216 | bottin,negative,bing,-1 217 | bradip,negative,bing,-1 218 | bramos,negative,bing,-1 219 | brav,negative,bing,-1 220 | break-me,negative,bing,-1 221 | break-up,negative,bing,-1 222 | briccon,negative,bing,-1 223 | brivid,negative,bing,-1 224 | bronc,negative,bing,-1 225 | brontol,negative,bing,-1 226 | brontolon,negative,bing,-1 227 | bruc,negative,bing,-1 228 | brusc,negative,bing,-1 229 | brutal,negative,bing,-1 230 | brutalizz,negative,bing,-1 231 | brut,negative,bing,-1 232 | bruttezz,negative,bing,-1 233 | brutt,negative,bing,-1 234 | bug,negative,bing,-1 235 | bugiard,negative,bing,-2 236 | bui,negative,bing,-1 237 | bull,negative,bing,-1 238 | bullism,negative,bing,-1 239 | buon-merc,negative,bing,-1 240 | burattin,negative,bing,-1 241 | burber,negative,bing,-2 242 | burl,negative,bing,-1 243 | buss,negative,bing,-1 244 | bust,negative,bing,-1 245 | cacciatorpedin,negative,bing,-1 246 | cadent,negative,bing,-1 247 | cad,negative,bing,-1 248 | cad-in-disgraz,negative,bing,-1 249 | cagn,negative,bing,-1 250 | calam,negative,bing,-1 251 | calamit,negative,bing,-1 252 | calpest,negative,bing,-1 253 | calunn,negative,bing,-2 254 | calvar,negative,bing,-1 255 | calviz,negative,bing,-1 256 | campagn-pubblicitar,negative,bing,-1 257 | cancell,negative,bing,-1 258 | cancer,negative,bing,-1 259 | cancr,negative,bing,-1 260 | cannibal,negative,bing,-1 261 | cannibalizz,negative,bing,-1 262 | canton,negative,bing,-1 263 | caos,negative,bing,-1 264 | caotic,negative,bing,-1 265 | capitol,negative,bing,-1 266 | capitombol,negative,bing,-1 267 | capricc,negative,bing,-1 268 | capr-espiator,negative,bing,-1 269 | capsiz,negative,bing,-1 270 | carc,negative,bing,-1 271 | carent,negative,bing,-1 272 | carenz,negative,bing,-1 273 | carest,negative,bing,-1 274 | caricatur,negative,bing,-1 275 | caric,negative,bing,-1 276 | carneficin,negative,bing,-1 277 | car,negative,bing,-1 278 | carp,negative,bing,-1 279 | carregg,negative,bing,-1 280 | cartegg,negative,bing,-1 281 | carton-anim,negative,bing,-1 282 | cascant,negative,bing,-1 283 | cass-integr,negative,bing,-1 284 | castig,negative,bing,-1 285 | castr,negative,bing,-1 286 | casual,negative,bing,-1 287 | cataclism,negative,bing,-1 288 | catastrof,negative,bing,-1 289 | categor,negative,bing,-1 290 | catt-condott,negative,bing,-1 291 | cattiver,negative,bing,-2 292 | catt,negative,bing,-2 293 | catt-umor,negative,bing,-2 294 | caustic,negative,bing,-1 295 | cautel,negative,bing,-1 296 | cauzio-1l,negative,bing,-1 297 | cavill,negative,bing,-1 298 | cavit,negative,bing,-1 299 | cazz,negative,bing,-2 300 | cedevol,negative,bing,-1 301 | cencios,negative,bing,-1 302 | censur,negative,bing,-1 303 | cepp,negative,bing,-1 304 | cestin,negative,bing,-1 305 | che-odi,negative,bing,-1 306 | chius,negative,bing,-1 307 | ciarl,negative,bing,-2 308 | ciarlat,negative,bing,-2 309 | cicatric,negative,bing,-1 310 | ciec,negative,bing,-1 311 | cigol,negative,bing,-1 312 | cinic,negative,bing,-2 313 | cinism,negative,bing,-2 314 | cipigl,negative,bing,-1 315 | circospezion,negative,bing,-1 316 | cit-in-giudiz,negative,bing,-1 317 | clamor,negative,bing,-1 318 | clientel,negative,bing,-1 319 | codard,negative,bing,-2 320 | coercit,negative,bing,-1 321 | coercizion,negative,bing,-1 322 | coglion,negative,bing,-3 323 | coinvolt,negative,bing,-1 324 | coller,negative,bing,-1 325 | collud,negative,bing,-1 326 | collusion,negative,bing,-1 327 | colp,negative,bing,-1 328 | colpevol,negative,bing,-1 329 | colp-di-scen,negative,bing,-1 330 | coltell,negative,bing,-1 331 | combustion,negative,bing,-1 332 | comic,negative,bing,-1 333 | commiser,negative,bing,-2 334 | compless,negative,bing,-1 335 | complet,negative,bing,-1 336 | complic,negative,bing,-1 337 | comport-mal,negative,bing,-1 338 | compromess,negative,bing,-1 339 | compuls,negative,bing,-1 340 | comun,negative,bing,-1 341 | con-ari-di-sfid,negative,bing,-2 342 | con-cattiver,negative,bing,-3 343 | con-rabb,negative,bing,-2 344 | con-rilutt,negative,bing,-2 345 | con-sospett,negative,bing,-1 346 | conced,negative,bing,-1 347 | concentr,negative,bing,-1 348 | concession,negative,bing,-1 349 | concess,negative,bing,-1 350 | concis,negative,bing,-1 351 | condann,negative,bing,-1 352 | condiscendent,negative,bing,-1 353 | condiscend,negative,bing,-1 354 | confess,negative,bing,-1 355 | confession,negative,bing,-1 356 | conflitt,negative,bing,-2 357 | conflittual,negative,bing,-2 358 | confond,negative,bing,-1 359 | confront,negative,bing,-1 360 | confusion,negative,bing,-1 361 | confus,negative,bing,-1 362 | conf,negative,bing,-1 363 | confut,negative,bing,-1 364 | congel,negative,bing,-1 365 | congestion,negative,bing,-1 366 | contag,negative,bing,-1 367 | contamin,negative,bing,-2 368 | contenz,negative,bing,-2 369 | contes,negative,bing,-1 370 | contest,negative,bing,-1 371 | contorc,negative,bing,-1 372 | contorsion,negative,bing,-1 373 | contradd,negative,bing,-1 374 | contraddittor,negative,bing,-1 375 | contraddizion,negative,bing,-1 376 | contrariet,negative,bing,-1 377 | contrattemp,negative,bing,-1 378 | contravven,negative,bing,-1 379 | controproducent,negative,bing,-1 380 | controvers,negative,bing,-1 381 | controvogl,negative,bing,-2 382 | contusion,negative,bing,-1 383 | contus,negative,bing,-1 384 | convuls,negative,bing,-1 385 | corrod,negative,bing,-1 386 | corromp,negative,bing,-1 387 | corrosion,negative,bing,-1 388 | corros,negative,bing,-1 389 | corrott,negative,bing,-2 390 | corruttor,negative,bing,-1 391 | corruttr,negative,bing,-1 392 | corruzion,negative,bing,-1 393 | cortin-fumogen,negative,bing,-1 394 | cospicu,negative,bing,-1 395 | cospir,negative,bing,-1 396 | costern,negative,bing,-1 397 | costos,negative,bing,-2 398 | costrizion,negative,bing,-1 399 | costruzion,negative,bing,-1 400 | cov,negative,bing,-1 401 | cramp,negative,bing,-1 402 | craps,negative,bing,-1 403 | crash,negative,bing,-1 404 | crass,negative,bing,-1 405 | credul,negative,bing,-1 406 | credulon,negative,bing,-1 407 | crep,negative,bing,-1 408 | cricc,negative,bing,-1 409 | crimi-1l,negative,bing,-1 410 | crimin,negative,bing,-2 411 | cris,negative,bing,-1 412 | critic,negative,bing,-2 413 | croll,negative,bing,-1 414 | cronic,negative,bing,-1 415 | crud,negative,bing,-1 416 | crudel,negative,bing,-1 417 | crudelt,negative,bing,-3 418 | cuccett,negative,bing,-1 419 | cull,negative,bing,-1 420 | cune,negative,bing,-1 421 | cup,negative,bing,-1 422 | da-incub,negative,bing,-3 423 | dan-anbil,negative,bing,-1 424 | dann,negative,bing,-1 425 | dan-anzion,negative,bing,-1 426 | dannegg,negative,bing,-1 427 | dannos,negative,bing,-2 428 | dar-l'ostrac,negative,bing,-1 429 | debilit,negative,bing,-1 430 | deb,negative,bing,-1 431 | debol,negative,bing,-1 432 | debol-di-ment,negative,bing,-1 433 | debolezz,negative,bing,-1 434 | debol-di-cuor,negative,bing,-1 435 | decad,negative,bing,-2 436 | decadent,negative,bing,-2 437 | declam,negative,bing,-1 438 | declin,negative,bing,-2 439 | decrement,negative,bing,-2 440 | decrepitezz,negative,bing,-2 441 | decrep,negative,bing,-2 442 | ded,negative,bing,-1 443 | deficient,negative,bing,-2 444 | deflettor,negative,bing,-1 445 | deform,negative,bing,-1 446 | defunt,negative,bing,-1 447 | degener,negative,bing,-1 448 | degen,negative,bing,-1 449 | degn,negative,bing,-1 450 | degrad,negative,bing,-2 451 | delinquent,negative,bing,-1 452 | delir,negative,bing,-2 453 | delud,negative,bing,-2 454 | deludent,negative,bing,-2 455 | delus,negative,bing,-2 456 | delusion,negative,bing,-2 457 | demol,negative,bing,-1 458 | demon,negative,bing,-1 459 | demoniac,negative,bing,-1 460 | demonizz,negative,bing,-1 461 | demoralizz,negative,bing,-1 462 | denigr,negative,bing,-2 463 | denigrator,negative,bing,-2 464 | dens,negative,bing,-1 465 | denunc,negative,bing,-2 466 | deplor,negative,bing,-1 467 | deplorevol,negative,bing,-3 468 | deprav,negative,bing,-3 469 | deprec,negative,bing,-1 470 | depred,negative,bing,-1 471 | depression,negative,bing,-2 472 | depress,negative,bing,-2 473 | deprezz,negative,bing,-1 474 | depriment,negative,bing,-2 475 | deprim,negative,bing,-2 476 | depriv,negative,bing,-1 477 | derid,negative,bing,-1 478 | derision,negative,bing,-1 479 | derisor,negative,bing,-1 480 | desert,negative,bing,-1 481 | desitit,negative,bing,-1 482 | desol,negative,bing,-2 483 | desolat,negative,bing,-2 484 | despot,negative,bing,-1 485 | desquam,negative,bing,-1 486 | destabilizz,negative,bing,-1 487 | deterior,negative,bing,-2 488 | deterrent,negative,bing,-1 489 | detest,negative,bing,-3 490 | detratt,negative,bing,-1 491 | detrazion,negative,bing,-1 492 | devast,negative,bing,-1 493 | dev,negative,bing,-1 494 | deviazion,negative,bing,-1 495 | di-nessun-valor,negative,bing,-1 496 | di-rimprover,negative,bing,-1 497 | di-scart,negative,bing,-1 498 | di-second-class,negative,bing,-1 499 | di-sinistr,negative,bing,-1 500 | di-travers,negative,bing,-1 501 | diabol,negative,bing,-1 502 | diametral,negative,bing,-1 503 | diamin,negative,bing,-2 504 | diatrib,negative,bing,-1 505 | diavoler,negative,bing,-1 506 | dibatt,negative,bing,-1 507 | difens,negative,bing,-1 508 | difett,negative,bing,-1 509 | diffam,negative,bing,-2 510 | diffamator,negative,bing,-2 511 | difficil,negative,bing,-1 512 | difficolt,negative,bing,-1 513 | diffid,negative,bing,-1 514 | diffident,negative,bing,-1 515 | dilag,negative,bing,-1 516 | dilemm,negative,bing,-1 517 | diluv,negative,bing,-1 518 | dimentic,negative,bing,-1 519 | diment,negative,bing,-1 520 | dimess,negative,bing,-1 521 | diminu,negative,bing,-1 522 | dipan,negative,bing,-1 523 | dirompent,negative,bing,-1 524 | disaccord,negative,bing,-1 525 | disadatt,negative,bing,-1 526 | disaffezion,negative,bing,-1 527 | disag,negative,bing,-1 528 | disallin,negative,bing,-1 529 | disin-anmor,negative,bing,-1 530 | disapprov,negative,bing,-1 531 | disappunt,negative,bing,-2 532 | disarm,negative,bing,-2 533 | disastr,negative,bing,-2 534 | disattent,negative,bing,-2 535 | disattenzion,negative,bing,-2 536 | discar,negative,bing,-1 537 | disces,negative,bing,-1 538 | disciolt,negative,bing,-1 539 | discombobul,negative,bing,-1 540 | disconosc,negative,bing,-1 541 | discontinu,negative,bing,-1 542 | discord,negative,bing,-1 543 | discred,negative,bing,-1 544 | discrep,negative,bing,-1 545 | discrimin,negative,bing,-1 546 | discut,negative,bing,-1 547 | disdegn,negative,bing,-2 548 | diserzion,negative,bing,-1 549 | disfac,negative,bing,-1 550 | disfatt,negative,bing,-1 551 | disgraz,negative,bing,-2 552 | disgust,negative,bing,-3 553 | disillu,negative,bing,-2 554 | disillus,negative,bing,-2 555 | disinform,negative,bing,-1 556 | disingann,negative,bing,-1 557 | disintegr,negative,bing,-1 558 | disinteress,negative,bing,-1 559 | disobbedient,negative,bing,-1 560 | disobbed,negative,bing,-1 561 | disoccup,negative,bing,-1 562 | disonest,negative,bing,-3 563 | disonor,negative,bing,-2 564 | disonorevol,negative,bing,-2 565 | disordi-nat,negative,bing,-1 566 | disordin,negative,bing,-2 567 | disorganizz,negative,bing,-2 568 | disorient,negative,bing,-1 569 | dispar,negative,bing,-1 570 | dispend,negative,bing,-1 571 | dispens,negative,bing,-1 572 | disper,negative,bing,-1 573 | dispers,negative,bing,-1 574 | dispett,negative,bing,-1 575 | dispiac,negative,bing,-2 576 | dispot,negative,bing,-1 577 | dispreg,negative,bing,-3 578 | disprezz,negative,bing,-3 579 | disp,negative,bing,-1 580 | dissens,negative,bing,-1 581 | dissenzient,negative,bing,-1 582 | disserviz,negative,bing,-1 583 | dissident,negative,bing,-1 584 | dissimul,negative,bing,-1 585 | dissocial,negative,bing,-1 586 | dissol,negative,bing,-1 587 | dissolutezz,negative,bing,-1 588 | dissolu,negative,bing,-1 589 | disson,negative,bing,-1 590 | dissuad,negative,bing,-1 591 | dissuas,negative,bing,-1 592 | distacc,negative,bing,-1 593 | distorsion,negative,bing,-1 594 | distort,negative,bing,-1 595 | distrarr,negative,bing,-1 596 | distratt,negative,bing,-1 597 | distrazion,negative,bing,-1 598 | distrugg,negative,bing,-1 599 | distrutt,negative,bing,-1 600 | distruzion,negative,bing,-1 601 | disturb,negative,bing,-1 602 | disuguagl,negative,bing,-1 603 | disuman,negative,bing,-3 604 | disumanizz,negative,bing,-1 605 | disum,negative,bing,-1 606 | disun,negative,bing,-1 607 | disvalor,negative,bing,-1 608 | dittator,negative,bing,-1 609 | dittatorial,negative,bing,-1 610 | divergent,negative,bing,-1 611 | division,negative,bing,-1 612 | dogmat,negative,bing,-1 613 | dol,negative,bing,-1 614 | dolor,negative,bing,-2 615 | don-1iol,negative,bing,-1 616 | dragon,negative,bing,-1 617 | drastic,negative,bing,-1 618 | dre-nant,negative,bing,-1 619 | dren,negative,bing,-1 620 | drog,negative,bing,-1 621 | dron,negative,bing,-1 622 | dubb,negative,bing,-1 623 | dubbios,negative,bing,-1 624 | dubit,negative,bing,-1 625 | due-facc,negative,bing,-1 626 | dur,negative,bing,-1 627 | ebollizion,negative,bing,-1 628 | eccedent,negative,bing,-1 629 | eccentr,negative,bing,-1 630 | eccess,negative,bing,-1 631 | ecchim,negative,bing,-1 632 | ecliss,negative,bing,-1 633 | edonist,negative,bing,-1 634 | effig,negative,bing,-1 635 | egemon,negative,bing,-1 636 | egocentr,negative,bing,-1 637 | egoism,negative,bing,-1 638 | egoist,negative,bing,-1 639 | egoman,negative,bing,-1 640 | egot,negative,bing,-1 641 | egreg,negative,bing,-1 642 | elimin,negative,bing,-1 643 | elud,negative,bing,-1 644 | emac,negative,bing,-1 645 | emergent,negative,bing,-1 646 | empiet,negative,bing,-1 647 | empi,negative,bing,-1 648 | enerv,negative,bing,-1 649 | enfat,negative,bing,-1 650 | epidem,negative,bing,-1 651 | equivoc,negative,bing,-1 652 | erbacc,negative,bing,-1 653 | eres,negative,bing,-1 654 | eret,negative,bing,-1 655 | erod,negative,bing,-1 656 | erosion,negative,bing,-1 657 | erpic,negative,bing,-1 658 | errant,negative,bing,-1 659 | errat,negative,bing,-1 660 | erron,negative,bing,-1 661 | error,negative,bing,-1 662 | error-di-calcol,negative,bing,-1 663 | eruzion,negative,bing,-1 664 | esacerb,negative,bing,-1 665 | esager,negative,bing,-1 666 | esasper,negative,bing,-2 667 | esasperat,negative,bing,-2 668 | esaur,negative,bing,-1 669 | esaust,negative,bing,-1 670 | esca,negative,bing,-1 671 | esclusion,negative,bing,-1 672 | escogit,negative,bing,-1 673 | esecr,negative,bing,-1 674 | esigent,negative,bing,-1 675 | esil,negative,bing,-1 676 | esit,negative,bing,-1 677 | esorbit,negative,bing,-1 678 | esort,negative,bing,-1 679 | espedient,negative,bing,-1 680 | espell,negative,bing,-1 681 | esplod,negative,bing,-1 682 | esplosion,negative,bing,-1 683 | esplos,negative,bing,-1 684 | espropr,negative,bing,-1 685 | espung,negative,bing,-1 686 | espurg,negative,bing,-1 687 | essicc,negative,bing,-1 688 | estingu,negative,bing,-1 689 | estorc,negative,bing,-1 690 | estorsion,negative,bing,-1 691 | estrane,negative,bing,-1 692 | estran,negative,bing,-1 693 | estrem,negative,bing,-1 694 | evasion,negative,bing,-1 695 | evas,negative,bing,-1 696 | evir,negative,bing,-1 697 | evit,negative,bing,-2 698 | fa-mal,negative,bing,-1 699 | fa-riflett,negative,bing,-1 700 | fa-schif,negative,bing,-1 701 | fabbric,negative,bing,-1 702 | facinor,negative,bing,-1 703 | facond,negative,bing,-1 704 | fagocit,negative,bing,-1 705 | fallac,negative,bing,-1 706 | fall,negative,bing,-1 707 | fall-out,negative,bing,-1 708 | fals,negative,bing,-1 709 | falsific,negative,bing,-2 710 | falsit,negative,bing,-2 711 | fam,negative,bing,-1 712 | famiger,negative,bing,-1 713 | fa-nat,negative,bing,-1 714 | fang,negative,bing,-1 715 | fangos,negative,bing,-1 716 | fantas,negative,bing,-1 717 | fant,negative,bing,-1 718 | far-infur,negative,bing,-1 719 | farabutt,negative,bing,-2 720 | far-il-pignol,negative,bing,-1 721 | far-la-predic,negative,bing,-1 722 | farfugl,negative,bing,-1 723 | fars,negative,bing,-1 724 | provocator,negative,bing,-2 725 | farsesc,negative,bing,-1 726 | fascism,negative,bing,-1 727 | fascist,negative,bing,-1 728 | fastid,negative,bing,-2 729 | fastidios,negative,bing,-2 730 | fastos,negative,bing,-1 731 | fatal,negative,bing,-1 732 | fatalist,negative,bing,-1 733 | fatic,negative,bing,-1 734 | fatiqu,negative,bing,-1 735 | fatiscent,negative,bing,-3 736 | fatuit,negative,bing,-1 737 | fatu,negative,bing,-1 738 | febbr,negative,bing,-1 739 | febbril,negative,bing,-1 740 | fecc,negative,bing,-1 741 | fer,negative,bing,-1 742 | feroc,negative,bing,-1 743 | ferroviar,negative,bing,-1 744 | fetid,negative,bing,-3 745 | fetor,negative,bing,-3 746 | fiacc,negative,bing,-1 747 | fiasc,negative,bing,-2 748 | fibb,negative,bing,-1 749 | fic,negative,bing,-1 750 | ficca-nas,negative,bing,-1 751 | fictio-nal,negative,bing,-1 752 | fing,negative,bing,-1 753 | fint,negative,bing,-1 754 | finzion,negative,bing,-1 755 | fiocc,negative,bing,-1 756 | fisc,negative,bing,-1 757 | fittiz,negative,bing,-1 758 | fiut,negative,bing,-1 759 | flagell,negative,bing,-1 760 | flagging,negative,bing,-1 761 | flagrant,negative,bing,-1 762 | flession,negative,bing,-1 763 | fob,negative,bing,-1 764 | fobic,negative,bing,-1 765 | focola,negative,bing,-1 766 | foll,negative,bing,-1 767 | follement,negative,bing,-1 768 | forcellin,negative,bing,-1 769 | forg,negative,bing,-1 770 | for,negative,bing,-1 771 | formicol,negative,bing,-1 772 | forsenn,negative,bing,-1 773 | fort,negative,bing,-1 774 | foruncol,negative,bing,-1 775 | fosc,negative,bing,-1 776 | fragil,negative,bing,-1 777 | fraintend,negative,bing,-1 778 | framment,negative,bing,-1 779 | frantum,negative,bing,-1 780 | frastagl,negative,bing,-1 781 | frattur,negative,bing,-1 782 | fraudolent,negative,bing,-2 783 | fredd,negative,bing,-1 784 | frenes,negative,bing,-1 785 | frenet,negative,bing,-1 786 | frett,negative,bing,-1 787 | frettol,negative,bing,-2 788 | frigid,negative,bing,-1 789 | frod,negative,bing,-1 790 | frust,negative,bing,-1 791 | frustr,negative,bing,-1 792 | frustrant,negative,bing,-2 793 | frustrazion,negative,bing,-2 794 | fugac,negative,bing,-1 795 | fugg,negative,bing,-1 796 | fuggit,negative,bing,-1 797 | fuliggin,negative,bing,-1 798 | fulmin,negative,bing,-1 799 | fumant,negative,bing,-1 800 | fum,negative,bing,-1 801 | fuor-mod,negative,bing,-1 802 | fuor-strad,negative,bing,-1 803 | fuorilegg,negative,bing,-1 804 | fuorv,negative,bing,-1 805 | furb,negative,bing,-1 806 | furfant,negative,bing,-1 807 | fur,negative,bing,-1 808 | furios,negative,bing,-1 809 | furor,negative,bing,-1 810 | furt,negative,bing,-1 811 | fustig,negative,bing,-1 812 | futil,negative,bing,-1 813 | gaff,negative,bing,-1 814 | gasp,negative,bing,-1 815 | gel,negative,bing,-1 816 | gelos,negative,bing,-1 817 | gem,negative,bing,-1 818 | genocid,negative,bing,-1 819 | ghett,negative,bing,-1 820 | ghosting,negative,bing,-1 821 | giacent,negative,bing,-1 822 | gingill,negative,bing,-1 823 | giocattol,negative,bing,-1 824 | giorn-del-giudiz-universal,negative,bing,-1 825 | giudic-mal,negative,bing,-1 826 | giudiz-sbagl,negative,bing,-1 827 | giunc,negative,bing,-1 828 | giur-di-rinunc,negative,bing,-1 829 | gocciol,negative,bing,-1 830 | goffaggin,negative,bing,-1 831 | goff,negative,bing,-1 832 | gonf,negative,bing,-1 833 | gonfior,negative,bing,-1 834 | gracil,negative,bing,-1 835 | graff,negative,bing,-1 836 | grass,negative,bing,-1 837 | grav,negative,bing,-3 838 | gravement,negative,bing,-3 839 | gravit,negative,bing,-1 840 | gravos,negative,bing,-2 841 | grec,negative,bing,-1 842 | gregg,negative,bing,-1 843 | grezz,negative,bing,-1 844 | grid,negative,bing,-1 845 | grigl,negative,bing,-1 846 | grondai,negative,bing,-1 847 | grossolan,negative,bing,-2 848 | grossol,negative,bing,-2 849 | grott,negative,bing,-1 850 | grottesc,negative,bing,-1 851 | grovigl,negative,bing,-1 852 | gua,negative,bing,-1 853 | guard-in-cagnesc,negative,bing,-1 854 | guastafest,negative,bing,-1 855 | guast,negative,bing,-1 856 | ide-sbagl,negative,bing,-1 857 | idiot,negative,bing,-1 858 | idioz,negative,bing,-1 859 | ig-nar,negative,bing,-1 860 | ignobil,negative,bing,-2 861 | ignomin,negative,bing,-1 862 | ignor,negative,bing,-1 863 | il-caos,negative,bing,-1 864 | il-mal-di-test,negative,bing,-1 865 | illec,negative,bing,-2 866 | illegal,negative,bing,-2 867 | illegg,negative,bing,-2 868 | illegittim,negative,bing,-2 869 | illog,negative,bing,-1 870 | illud,negative,bing,-1 871 | illus,negative,bing,-1 872 | illusion,negative,bing,-1 873 | illusor,negative,bing,-1 874 | imbarazz,negative,bing,-1 875 | imbecill,negative,bing,-3 876 | imbrogl,negative,bing,-2 877 | immaterial,negative,bing,-1 878 | immatur,negative,bing,-1 879 | imminent,negative,bing,-1 880 | immisc,negative,bing,-1 881 | immobil,negative,bing,-1 882 | immobilizz,negative,bing,-1 883 | immodest,negative,bing,-1 884 | immond,negative,bing,-1 885 | immoral,negative,bing,-2 886 | impallid,negative,bing,-1 887 | impass,negative,bing,-1 888 | impaur,negative,bing,-1 889 | impazient,negative,bing,-1 890 | impazz,negative,bing,-1 891 | impedent,negative,bing,-1 892 | imped,negative,bing,-1 893 | impegn,negative,bing,-1 894 | impenitent,negative,bing,-1 895 | impens,negative,bing,-1 896 | impensabil,negative,bing,-2 897 | imperdon,negative,bing,-2 898 | imperdonabil,negative,bing,-2 899 | imperfett,negative,bing,-1 900 | imperfezion,negative,bing,-1 901 | imperial,negative,bing,-1 902 | imper,negative,bing,-1 903 | impersonal,negative,bing,-1 904 | impertinent,negative,bing,-2 905 | impetu,negative,bing,-1 906 | impietr,negative,bing,-1 907 | impigl,negative,bing,-1 908 | implac,negative,bing,-1 909 | implic,negative,bing,-1 910 | implod,negative,bing,-1 911 | impolit,negative,bing,-1 912 | imponent,negative,bing,-1 913 | impopol,negative,bing,-1 914 | imporr,negative,bing,-1 915 | importun,negative,bing,-1 916 | imposizion,negative,bing,-1 917 | imposs,negative,bing,-1 918 | impossibil,negative,bing,-1 919 | impotent,negative,bing,-1 920 | impover,negative,bing,-1 921 | imprec,negative,bing,-1 922 | imprecis,negative,bing,-1 923 | imprecision,negative,bing,-1 924 | imprepar,negative,bing,-1 925 | impreved,negative,bing,-1 926 | imprev,negative,bing,-1 927 | imprigion,negative,bing,-1 928 | improb,negative,bing,-1 929 | improdutt,negative,bing,-1 930 | impropr,negative,bing,-1 931 | impropriet,negative,bing,-1 932 | improvvis,negative,bing,-1 933 | imprudent,negative,bing,-1 934 | impudent,negative,bing,-1 935 | impugn,negative,bing,-1 936 | impuls,negative,bing,-1 937 | impun,negative,bing,-1 938 | impur,negative,bing,-1 939 | in-cal,negative,bing,-1 940 | in-ebollizion,negative,bing,-1 941 | in-fug,negative,bing,-1 942 | in-mancanz-di,negative,bing,-1 943 | in-manier-illog,negative,bing,-1 944 | in-mod-irregol,negative,bing,-1 945 | in-mod-non-corrett,negative,bing,-1 946 | in-pien-regol,negative,bing,-1 947 | in-pred-al-panic,negative,bing,-1 948 | in-ritard,negative,bing,-1 949 | in-secc,negative,bing,-1 950 | inaccett,negative,bing,-2 951 | inaccettabil,negative,bing,-2 952 | inadatt,negative,bing,-1 953 | inadeguatezz,negative,bing,-2 954 | inadempient,negative,bing,-1 955 | inaffid,negative,bing,-2 956 | inammiss,negative,bing,-2 957 | inarticol,negative,bing,-1 958 | inaspettat,negative,bing,-1 959 | inaspett,negative,bing,-1 960 | inatt,negative,bing,-1 961 | inattu,negative,bing,-1 962 | incapac,negative,bing,-1 963 | incasin,negative,bing,-1 964 | incaut,negative,bing,-1 965 | inca,negative,bing,-1 966 | incendiar,negative,bing,-1 967 | imbellett,negative,bing,-1 968 | incert,negative,bing,-1 969 | incess,negative,bing,-1 970 | incessant,negative,bing,-1 971 | inciamp,negative,bing,-1 972 | incident,negative,bing,-1 973 | incit,negative,bing,-1 974 | incivil,negative,bing,-3 975 | incivilt,negative,bing,-3 976 | inclement,negative,bing,-1 977 | incoerent,negative,bing,-1 978 | incommensur,negative,bing,-1 979 | incompar,negative,bing,-1 980 | incomparabil,negative,bing,-1 981 | incompat,negative,bing,-1 982 | incompatibil,negative,bing,-1 983 | incompetent,negative,bing,-3 984 | incomp,negative,bing,-1 985 | incomplet,negative,bing,-1 986 | incomprens,negative,bing,-1 987 | incomprension,negative,bing,-1 988 | incompres,negative,bing,-1 989 | inconcep,negative,bing,-1 990 | inconcepibil,negative,bing,-3 991 | inconcil,negative,bing,-1 992 | incongruent,negative,bing,-1 993 | incongru,negative,bing,-1 994 | inconsapevol,negative,bing,-1 995 | inconseguent,negative,bing,-1 996 | inconsiderat,negative,bing,-1 997 | inconsistent,negative,bing,-1 998 | inconsol,negative,bing,-1 999 | inconvenient,negative,bing,-1 1000 | incorregg,negative,bing,-1 1001 | incorreggibil,negative,bing,-1 1002 | incost,negative,bing,-1 1003 | incred,negative,bing,-1 1004 | incredibil,negative,bing,-1 1005 | incredul,negative,bing,-1 1006 | incresp,negative,bing,-1 1007 | incub,negative,bing,-3 1008 | inculc,negative,bing,-1 1009 | indeb,negative,bing,-1 1010 | indebol,negative,bing,-1 1011 | indecent,negative,bing,-2 1012 | indecision,negative,bing,-1 1013 | indecis,negative,bing,-1 1014 | indecor,negative,bing,-1 1015 | indefin,negative,bing,-1 1016 | indegn,negative,bing,-1 1017 | indelic,negative,bing,-1 1018 | indennizz,negative,bing,-1 1019 | indesider,negative,bing,-1 1020 | indetermin,negative,bing,-1 1021 | indetermi-1tezz,negative,bing,-1 1022 | indic,negative,bing,-1 1023 | indietr,negative,bing,-1 1024 | indifend,negative,bing,-1 1025 | indifes,negative,bing,-1 1026 | indifferent,negative,bing,-1 1027 | indigent,negative,bing,-1 1028 | indigest,negative,bing,-1 1029 | indign,negative,bing,-1 1030 | indimostr,negative,bing,-1 1031 | indirett,negative,bing,-1 1032 | indirizz-sbagl,negative,bing,-1 1033 | indiscern,negative,bing,-1 1034 | indisciplin,negative,bing,-1 1035 | indiscret,negative,bing,-1 1036 | indiscrezion,negative,bing,-1 1037 | indiscrimi-1t,negative,bing,-1 1038 | indiscrimin,negative,bing,-1 1039 | indispett,negative,bing,-1 1040 | indispost,negative,bing,-1 1041 | indistingu,negative,bing,-1 1042 | indolent,negative,bing,-1 1043 | indolenz,negative,bing,-1 1044 | indoss,negative,bing,-1 1045 | indottrin,negative,bing,-1 1046 | indulg,negative,bing,-1 1047 | indur,negative,bing,-1 1048 | indurr-in-error,negative,bing,-1 1049 | inefficac,negative,bing,-1 1050 | inefficient,negative,bing,-1 1051 | inegual,negative,bing,-1 1052 | ineleg,negative,bing,-1 1053 | inelegg,negative,bing,-1 1054 | inesatt,negative,bing,-1 1055 | inesattezz,negative,bing,-1 1056 | inesig,negative,bing,-1 1057 | inesistent,negative,bing,-1 1058 | inesor,negative,bing,-1 1059 | inesorabil,negative,bing,-1 1060 | inesperient,negative,bing,-1 1061 | inespert,negative,bing,-1 1062 | inesp,negative,bing,-1 1063 | inestric,negative,bing,-1 1064 | inestricabil,negative,bing,-1 1065 | inettitudin,negative,bing,-1 1066 | inett,negative,bing,-1 1067 | inevit,negative,bing,-1 1068 | inevitabil,negative,bing,-1 1069 | infam,negative,bing,-1 1070 | infantil,negative,bing,-1 1071 | infastid,negative,bing,-2 1072 | infedel,negative,bing,-1 1073 | infel,negative,bing,-1 1074 | infelic,negative,bing,-1 1075 | inferior,negative,bing,-2 1076 | inferm,negative,bing,-1 1077 | infernal,negative,bing,-3 1078 | infern,negative,bing,-3 1079 | infest,negative,bing,-1 1080 | infett,negative,bing,-1 1081 | infezion,negative,bing,-1 1082 | infiamm,negative,bing,-1 1083 | infiammator,negative,bing,-1 1084 | infid,negative,bing,-1 1085 | infiltr,negative,bing,-1 1086 | infirm,negative,bing,-1 1087 | inflazionist,negative,bing,-1 1088 | infless,negative,bing,-1 1089 | infligg,negative,bing,-1 1090 | infond,negative,bing,-1 1091 | infrazion,negative,bing,-1 1092 | infruttu,negative,bing,-1 1093 | infuriant,negative,bing,-1 1094 | infur,negative,bing,-1 1095 | ingann,negative,bing,-2 1096 | ingannevol,negative,bing,-2 1097 | ingenu,negative,bing,-1 1098 | ingiung,negative,bing,-1 1099 | ingiur,negative,bing,-1 1100 | ingiust,negative,bing,-2 1101 | ingiustific,negative,bing,-2 1102 | ingiustificat,negative,bing,-2 1103 | ingiustiz,negative,bing,-1 1104 | inglor,negative,bing,-1 1105 | ingombr,negative,bing,-1 1106 | ingratitudin,negative,bing,-1 1107 | ingrat,negative,bing,-1 1108 | inguard,negative,bing,-1 1109 | inib,negative,bing,-1 1110 | inibizion,negative,bing,-1 1111 | inimic,negative,bing,-1 1112 | inimiciz,negative,bing,-1 1113 | inimmagin,negative,bing,-1 1114 | inimmaginabil,negative,bing,-1 1115 | inintellig,negative,bing,-1 1116 | iniqu,negative,bing,-1 1117 | innatural,negative,bing,-1 1118 | innervos,negative,bing,-2 1119 | innest,negative,bing,-1 1120 | inond,negative,bing,-1 1121 | inoper,negative,bing,-1 1122 | inopportun,negative,bing,-2 1123 | inorrid,negative,bing,-3 1124 | inospital,negative,bing,-2 1125 | inosserv,negative,bing,-1 1126 | inquiet,negative,bing,-3 1127 | inquietant,negative,bing,-3 1128 | inquietudin,negative,bing,-1 1129 | inquin,negative,bing,-1 1130 | insapon,negative,bing,-1 1131 | insaz,negative,bing,-1 1132 | insensat,negative,bing,-1 1133 | insens,negative,bing,-1 1134 | insensibil,negative,bing,-1 1135 | insett,negative,bing,-1 1136 | insicurezz,negative,bing,-1 1137 | insicur,negative,bing,-1 1138 | insid,negative,bing,-1 1139 | insignific,negative,bing,-1 1140 | insincer,negative,bing,-1 1141 | insinu,negative,bing,-1 1142 | insociabl,negative,bing,-1 1143 | insoddisfacent,negative,bing,-2 1144 | insoddisfatt,negative,bing,-2 1145 | insoddisf,negative,bing,-2 1146 | insolent,negative,bing,-1 1147 | insolit,negative,bing,-1 1148 | insol,negative,bing,-1 1149 | insolvent,negative,bing,-1 1150 | insopport,negative,bing,-2 1151 | insopportabil,negative,bing,-3 1152 | insormont,negative,bing,-1 1153 | insosten,negative,bing,-1 1154 | insoucianc,negative,bing,-1 1155 | inspieg,negative,bing,-1 1156 | instabil,negative,bing,-1 1157 | insubordin,negative,bing,-1 1158 | insudic,negative,bing,-1 1159 | insufficient,negative,bing,-1 1160 | insul,negative,bing,-1 1161 | insult,negative,bing,-3 1162 | insurrezion,negative,bing,-1 1163 | intas,negative,bing,-1 1164 | intatt,negative,bing,-1 1165 | intef,negative,bing,-1 1166 | intens,negative,bing,-1 1167 | intercett,negative,bing,-1 1168 | interess,negative,bing,-1 1169 | interess-perso-nal,negative,bing,-1 1170 | interferent,negative,bing,-1 1171 | interfer,negative,bing,-1 1172 | intermittent,negative,bing,-1 1173 | interromp,negative,bing,-1 1174 | interrott,negative,bing,-1 1175 | interru,negative,bing,-1 1176 | intimidator,negative,bing,-1 1177 | intimid,negative,bing,-1 1178 | intont,negative,bing,-1 1179 | intopp,negative,bing,-1 1180 | intorpid,negative,bing,-1 1181 | intossic,negative,bing,-1 1182 | intransigent,negative,bing,-1 1183 | intrappol,negative,bing,-1 1184 | intrapres,negative,bing,-1 1185 | intratt,negative,bing,-1 1186 | intromett,negative,bing,-1 1187 | intrusion,negative,bing,-1 1188 | inud,negative,bing,-1 1189 | inuman,negative,bing,-3 1190 | inutil,negative,bing,-1 1191 | inutilizz,negative,bing,-1 1192 | invadent,negative,bing,-2 1193 | invad,negative,bing,-1 1194 | invalid,negative,bing,-1 1195 | invan,negative,bing,-1 1196 | invasion,negative,bing,-1 1197 | invasor,negative,bing,-1 1198 | inverosimil,negative,bing,-1 1199 | invett,negative,bing,-1 1200 | invid,negative,bing,-1 1201 | invis,negative,bing,-1 1202 | involontar,negative,bing,-1 1203 | invol,negative,bing,-1 1204 | ipocris,negative,bing,-1 1205 | ipocr,negative,bing,-1 1206 | ipocrit,negative,bing,-1 1207 | ira,negative,bing,-1 1208 | irasc,negative,bing,-1 1209 | iron,negative,bing,-1 1210 | irraggiung,negative,bing,-1 1211 | irragionevol,negative,bing,-1 1212 | irragionevolezz,negative,bing,-1 1213 | irrazional,negative,bing,-1 1214 | irrecuper,negative,bing,-1 1215 | irredim,negative,bing,-1 1216 | irregol,negative,bing,-1 1217 | irregolar,negative,bing,-1 1218 | irrepar,negative,bing,-1 1219 | irreprim,negative,bing,-1 1220 | irrequietezz,negative,bing,-1 1221 | irrequiet,negative,bing,-1 1222 | irresol,negative,bing,-1 1223 | irrespons,negative,bing,-2 1224 | irresponsabil,negative,bing,-2 1225 | irretrievabl,negative,bing,-1 1226 | irrevers,negative,bing,-1 1227 | irrilev,negative,bing,-1 1228 | irrimed,negative,bing,-1 1229 | irrimediabil,negative,bing,-1 1230 | irrisolt,negative,bing,-1 1231 | irrisolv,negative,bing,-1 1232 | irrispett,negative,bing,-2 1233 | irrit,negative,bing,-1 1234 | isol,negative,bing,-1 1235 | ister,negative,bing,-1 1236 | istig,negative,bing,-1 1237 | lacon,negative,bing,-1 1238 | lament,negative,bing,-1 1239 | lamentel,negative,bing,-2 1240 | lamentevol,negative,bing,-2 1241 | languid,negative,bing,-1 1242 | langu,negative,bing,-1 1243 | languor,negative,bing,-1 1244 | lasciv,negative,bing,-1 1245 | lasc,negative,bing,-1 1246 | latenz,negative,bing,-1 1247 | lavagg-del-cervell,negative,bing,-1 1248 | lavell,negative,bing,-1 1249 | lavorett,negative,bing,-1 1250 | legatur,negative,bing,-1 1251 | legg-erron,negative,bing,-1 1252 | lei-odi,negative,bing,-1 1253 | lent,negative,bing,-1 1254 | les,negative,bing,-1 1255 | lesion,negative,bing,-1 1256 | letal,negative,bing,-1 1257 | letarg,negative,bing,-1 1258 | lezios,negative,bing,-1 1259 | libertin,negative,bing,-1 1260 | licenz,negative,bing,-1 1261 | licenzios,negative,bing,-1 1262 | limit,negative,bing,-1 1263 | lim,negative,bing,-1 1264 | line-dur,negative,bing,-1 1265 | lit,negative,bing,-1 1266 | litig,negative,bing,-1 1267 | livid,negative,bing,-1 1268 | local-prett,negative,bing,-1 1269 | lord,negative,bing,-1 1270 | lott,negative,bing,-1 1271 | luccic,negative,bing,-1 1272 | lugubr,negative,bing,-2 1273 | lunat,negative,bing,-2 1274 | lung,negative,bing,-1 1275 | lung-temp,negative,bing,-1 1276 | luog-isol,negative,bing,-1 1277 | lurc,negative,bing,-1 1278 | lutt,negative,bing,-1 1279 | luttuos,negative,bing,-1 1280 | macabr,negative,bing,-3 1281 | macc,negative,bing,-1 1282 | macell,negative,bing,-1 1283 | maciull,negative,bing,-1 1284 | magr,negative,bing,-1 1285 | mai-l'amor,negative,bing,-1 1286 | mal-concep,negative,bing,-1 1287 | mal-defin,negative,bing,-1 1288 | mal-di,negative,bing,-1 1289 | mal-di-schien,negative,bing,-1 1290 | mal-di-test,negative,bing,-1 1291 | mal-progett,negative,bing,-1 1292 | mal-utilizz,negative,bing,-1 1293 | malaccort,negative,bing,-1 1294 | malaticc,negative,bing,-1 1295 | mal,negative,bing,-1 1296 | malatt,negative,bing,-1 1297 | malavogl,negative,bing,-1 1298 | malconc,negative,bing,-1 1299 | malcontent,negative,bing,-2 1300 | maldestr,negative,bing,-1 1301 | maldicent,negative,bing,-1 1302 | maledett,negative,bing,-2 1303 | maledizion,negative,bing,-1 1304 | maleduc,negative,bing,-3 1305 | maleodor,negative,bing,-3 1306 | maless,negative,bing,-1 1307 | malevolent,negative,bing,-1 1308 | malevol,negative,bing,-2 1309 | malfattor,negative,bing,-2 1310 | malform,negative,bing,-1 1311 | malign,negative,bing,-2 1312 | malincon,negative,bing,-1 1313 | malintes,negative,bing,-1 1314 | maliz,negative,bing,-1 1315 | mals,negative,bing,-1 1316 | malsicur,negative,bing,-1 1317 | maltratt,negative,bing,-3 1318 | malvag,negative,bing,-2 1319 | manc,negative,bing,-1 1320 | mancanz,negative,bing,-1 1321 | mancanz-di-decor,negative,bing,-1 1322 | mancanz-di-legg,negative,bing,-1 1323 | mancanz-di-rispett,negative,bing,-1 1324 | manc-di-rispett,negative,bing,-1 1325 | mand-di-comparizion,negative,bing,-1 1326 | maniacal,negative,bing,-1 1327 | maniac,negative,bing,-1 1328 | manipol,negative,bing,-1 1329 | manomett,negative,bing,-1 1330 | marc,negative,bing,-1 1331 | margi-1l,negative,bing,-1 1332 | martir,negative,bing,-1 1333 | mascalzon,negative,bing,-1 1334 | massacr,negative,bing,-1 1335 | mediocr,negative,bing,-1 1336 | meger,negative,bing,-1 1337 | melodrammat,negative,bing,-1 1338 | mendic,negative,bing,-1 1339 | men-svilupp,negative,bing,-1 1340 | ment,negative,bing,-1 1341 | mercantegg,negative,bing,-1 1342 | merd,negative,bing,-1 1343 | meschin,negative,bing,-1 1344 | mett-a-repentagl,negative,bing,-1 1345 | mett-in-pericol,negative,bing,-1 1346 | mett-sott-accus,negative,bing,-1 1347 | milit,negative,bing,-1 1348 | millant,negative,bing,-1 1349 | min,negative,bing,-1 1350 | minacc,negative,bing,-2 1351 | miragg,negative,bing,-1 1352 | miscredent,negative,bing,-1 1353 | miser,negative,bing,-1 1354 | mister,negative,bing,-1 1355 | mistific,negative,bing,-1 1356 | mod-oscur,negative,bing,-1 1357 | molest,negative,bing,-1 1358 | moncon,negative,bing,-1 1359 | mond,negative,bing,-1 1360 | monell,negative,bing,-1 1361 | monoton,negative,bing,-1 1362 | monot,negative,bing,-1 1363 | morbos,negative,bing,-1 1364 | mordac,negative,bing,-1 1365 | mordent,negative,bing,-1 1366 | morent,negative,bing,-1 1367 | moribond,negative,bing,-1 1368 | mor,negative,bing,-1 1369 | mor-di-fam,negative,bing,-1 1370 | mortal,negative,bing,-1 1371 | mort,negative,bing,-1 1372 | mortific,negative,bing,-1 1373 | mortif,negative,bing,-1 1374 | mostr,negative,bing,-1 1375 | mostruos,negative,bing,-1 1376 | mot,negative,bing,-1 1377 | muff,negative,bing,-1 1378 | mult-polarizz,negative,bing,-1 1379 | muscol-flession,negative,bing,-1 1380 | mut,negative,bing,-1 1381 | nan,negative,bing,-1 1382 | naufrag,negative,bing,-1 1383 | nause,negative,bing,-2 1384 | nauseabond,negative,bing,-2 1385 | nauseant,negative,bing,-2 1386 | naus,negative,bing,-1 1387 | nebb,negative,bing,-1 1388 | nebul,negative,bing,-1 1389 | neg,negative,bing,-1 1390 | negat,negative,bing,-1 1391 | negazion,negative,bing,-1 1392 | negligent,negative,bing,-2 1393 | nemes,negative,bing,-1 1394 | nemic,negative,bing,-1 1395 | nepot,negative,bing,-1 1396 | nervos,negative,bing,-1 1397 | nevrot,negative,bing,-1 1398 | noc,negative,bing,-1 1399 | noi,negative,bing,-1 1400 | noios,negative,bing,-1 1401 | non-appropr,negative,bing,-1 1402 | non-assicur,negative,bing,-1 1403 | non-chiar,negative,bing,-1 1404 | non-competit,negative,bing,-1 1405 | non-conferm,negative,bing,-1 1406 | non-cooper,negative,bing,-1 1407 | non-cred,negative,bing,-1 1408 | non-desider,negative,bing,-1 1409 | non-destr,negative,bing,-1 1410 | non-dispon,negative,bing,-1 1411 | non-dispost,negative,bing,-1 1412 | non-divertent,negative,bing,-1 1413 | non-equo,negative,bing,-1 1414 | non-essenzial,negative,bing,-1 1415 | non-fiduc,negative,bing,-1 1416 | non-funn,negative,bing,-1 1417 | non-molt,negative,bing,-1 1418 | non-moviment,negative,bing,-1 1419 | non-necessar,negative,bing,-1 1420 | non-ortodoss,negative,bing,-1 1421 | non-pertinent,negative,bing,-1 1422 | non-plausibil,negative,bing,-1 1423 | non-pratic,negative,bing,-1 1424 | non-qualific,negative,bing,-1 1425 | non-realist,negative,bing,-1 1426 | non-rispond,negative,bing,-1 1427 | non-sicur,negative,bing,-1 1428 | non-son-d'accord,negative,bing,-1 1429 | non-support,negative,bing,-1 1430 | non-valid,negative,bing,-1 1431 | non-verit,negative,bing,-1 1432 | non-visibil,negative,bing,-1 1433 | non-vogl,negative,bing,-1 1434 | no-sens,negative,bing,-1 1435 | nostalg,negative,bing,-1 1436 | notor,negative,bing,-1 1437 | nutr-con-il-cucchiai,negative,bing,-1 1438 | nutr,negative,bing,-1 1439 | nuvol,negative,bing,-1 1440 | obbrobr,negative,bing,-3 1441 | obes,negative,bing,-1 1442 | obiezion,negative,bing,-1 1443 | obliqu,negative,bing,-1 1444 | obliter,negative,bing,-1 1445 | obsol,negative,bing,-1 1446 | occlud,negative,bing,-1 1447 | occlusion,negative,bing,-1 1448 | occlus,negative,bing,-1 1449 | odi,negative,bing,-1 1450 | odiator,negative,bing,-1 1451 | odios,negative,bing,-2 1452 | odor,negative,bing,-2 1453 | offend,negative,bing,-2 1454 | offens,negative,bing,-2 1455 | offes,negative,bing,-2 1456 | offusc,negative,bing,-1 1457 | oltragg,negative,bing,-3 1458 | oltrepass,negative,bing,-1 1459 | ombregg,negative,bing,-1 1460 | ombros,negative,bing,-1 1461 | omett,negative,bing,-1 1462 | omicid,negative,bing,-1 1463 | omission,negative,bing,-1 1464 | oner,negative,bing,-1 1465 | oppors,negative,bing,-1 1466 | opportunist,negative,bing,-1 1467 | opposizion,negative,bing,-1 1468 | oppression,negative,bing,-1 1469 | oppress,negative,bing,-1 1470 | oppressor,negative,bing,-1 1471 | oppriment,negative,bing,-2 1472 | opprim,negative,bing,-2 1473 | orda,negative,bing,-1 1474 | orfan,negative,bing,-1 1475 | orma-rud,negative,bing,-1 1476 | orrend,negative,bing,-3 1477 | orribil,negative,bing,-3 1478 | orrid,negative,bing,-3 1479 | orripil,negative,bing,-3 1480 | orror,negative,bing,-3 1481 | ortic,negative,bing,-1 1482 | oscen,negative,bing,-3 1483 | oscill,negative,bing,-1 1484 | oscur,negative,bing,-1 1485 | ossession,negative,bing,-1 1486 | ossess,negative,bing,-1 1487 | ostacol,negative,bing,-1 1488 | ostagg,negative,bing,-1 1489 | ostent,negative,bing,-1 1490 | ostil,negative,bing,-2 1491 | osti-1t,negative,bing,-1 1492 | ostin,negative,bing,-1 1493 | ostruent,negative,bing,-1 1494 | ostru,negative,bing,-1 1495 | ostruzion,negative,bing,-1 1496 | ottus,negative,bing,-1 1497 | oversiz,negative,bing,-1 1498 | pacc,negative,bing,-1 1499 | padron,negative,bing,-1 1500 | pagan,negative,bing,-1 1501 | pallid,negative,bing,-1 1502 | pandemon,negative,bing,-1 1503 | panic,negative,bing,-1 1504 | paradossal,negative,bing,-1 1505 | paralizz,negative,bing,-1 1506 | paranoi,negative,bing,-1 1507 | paran,negative,bing,-1 1508 | parass,negative,bing,-1 1509 | par,negative,bing,-1 1510 | parod,negative,bing,-1 1511 | parzial,negative,bing,-1 1512 | pass,negative,bing,-1 1513 | passiv,negative,bing,-1 1514 | pasticcion,negative,bing,-1 1515 | pastos,negative,bing,-1 1516 | patet,negative,bing,-1 1517 | paur,negative,bing,-2 1518 | pauros,negative,bing,-2 1519 | pavonegg,negative,bing,-1 1520 | pazz,negative,bing,-1 1521 | peccamin,negative,bing,-1 1522 | pecc,negative,bing,-1 1523 | pedagg,negative,bing,-1 1524 | pedant,negative,bing,-1 1525 | pegg,negative,bing,-2 1526 | peggior,negative,bing,-2 1527 | pegn,negative,bing,-1 1528 | pen,negative,bing,-1 1529 | penal,negative,bing,-1 1530 | penalizz,negative,bing,-1 1531 | pent,negative,bing,-1 1532 | perd,negative,bing,-1 1533 | perdent,negative,bing,-1 1534 | perdut,negative,bing,-1 1535 | perfid,negative,bing,-1 1536 | pericol,negative,bing,-2 1537 | pericol-di-vit,negative,bing,-1 1538 | pericolos,negative,bing,-2 1539 | per,negative,bing,-1 1540 | permal,negative,bing,-1 1541 | pernic,negative,bing,-1 1542 | perpless,negative,bing,-1 1543 | persecu,negative,bing,-1 1544 | persegu,negative,bing,-1 1545 | perseguit,negative,bing,-1 1546 | perti-1c,negative,bing,-1 1547 | perturb,negative,bing,-1 1548 | pervas,negative,bing,-1 1549 | pervers,negative,bing,-1 1550 | perversion,negative,bing,-1 1551 | pervert,negative,bing,-2 1552 | pessim,negative,bing,-3 1553 | pessimist,negative,bing,-1 1554 | pest,negative,bing,-1 1555 | pestilenzial,negative,bing,-1 1556 | pettegolezz,negative,bing,-1 1557 | pezz,negative,bing,-1 1558 | piagniste,negative,bing,-1 1559 | piagnucol,negative,bing,-1 1560 | piang,negative,bing,-1 1561 | picchettagg,negative,bing,-1 1562 | picchett,negative,bing,-1 1563 | piccolezz,negative,bing,-1 1564 | pieg,negative,bing,-1 1565 | pien-di-rimors,negative,bing,-1 1566 | pien-di-sem,negative,bing,-1 1567 | pietos,negative,bing,-3 1568 | pietrific,negative,bing,-2 1569 | pignol,negative,bing,-1 1570 | pigr,negative,bing,-1 1571 | piuttost-piccol,negative,bing,-1 1572 | pizzic,negative,bing,-1 1573 | pizzicor,negative,bing,-1 1574 | plag,negative,bing,-1 1575 | plateal,negative,bing,-1 1576 | plebe,negative,bing,-1 1577 | poc-attraent,negative,bing,-1 1578 | poc-conosc,negative,bing,-1 1579 | poc-convincent,negative,bing,-1 1580 | poc-giudiz,negative,bing,-1 1581 | poc-inclin,negative,bing,-1 1582 | polarizz,negative,bing,-1 1583 | polem,negative,bing,-1 1584 | polemizz,negative,bing,-1 1585 | polen,negative,bing,-1 1586 | polv,negative,bing,-1 1587 | polver,negative,bing,-1 1588 | pompos,negative,bing,-1 1589 | porcil,negative,bing,-2 1590 | port-lord,negative,bing,-1 1591 | port-a-cas,negative,bing,-1 1592 | portator-di-handicap,negative,bing,-1 1593 | port,negative,bing,-1 1594 | postur,negative,bing,-1 1595 | pover,negative,bing,-1 1596 | povert,negative,bing,-1 1597 | prat,negative,bing,-1 1598 | precar,negative,bing,-1 1599 | precipit,negative,bing,-1 1600 | predator,negative,bing,-1 1601 | pregiudic,negative,bing,-1 1602 | pregiudiz,negative,bing,-1 1603 | pregiudizievol,negative,bing,-1 1604 | premedit,negative,bing,-1 1605 | prem,negative,bing,-1 1606 | preoccup,negative,bing,-2 1607 | prepotent,negative,bing,-2 1608 | presuntu,negative,bing,-1 1609 | presunzion,negative,bing,-1 1610 | pretenz,negative,bing,-1 1611 | prevaric,negative,bing,-1 1612 | prigion,negative,bing,-1 1613 | prigionier,negative,bing,-1 1614 | primit,negative,bing,-1 1615 | priv,negative,bing,-1 1616 | problem,negative,bing,-1 1617 | problemat,negative,bing,-1 1618 | procrastin,negative,bing,-1 1619 | prodigal,negative,bing,-1 1620 | profan,negative,bing,-1 1621 | prof,negative,bing,-1 1622 | proibit,negative,bing,-1 1623 | proliss,negative,bing,-1 1624 | pronunc-mal,negative,bing,-1 1625 | propagand,negative,bing,-1 1626 | protest,negative,bing,-1 1627 | protratt,negative,bing,-1 1628 | provoc,negative,bing,-1 1629 | provvisor,negative,bing,-1 1630 | prurigin,negative,bing,-1 1631 | prur,negative,bing,-1 1632 | pugn,negative,bing,-1 1633 | puls,negative,bing,-1 1634 | pulsazion,negative,bing,-1 1635 | pungent,negative,bing,-1 1636 | pungol,negative,bing,-1 1637 | punibil,negative,bing,-1 1638 | pun,negative,bing,-1 1639 | punit,negative,bing,-1 1640 | puntigl,negative,bing,-1 1641 | punton,negative,bing,-1 1642 | punzon,negative,bing,-1 1643 | purtropp,negative,bing,-1 1644 | puttan,negative,bing,-2 1645 | puzz,negative,bing,-2 1646 | puzzolent,negative,bing,-2 1647 | rabb,negative,bing,-1 1648 | rabbios,negative,bing,-1 1649 | rabbrivid,negative,bing,-3 1650 | raccapricc,negative,bing,-3 1651 | rachit,negative,bing,-1 1652 | radical,negative,bing,-1 1653 | radicalizz,negative,bing,-1 1654 | rallent,negative,bing,-1 1655 | rammar,negative,bing,-1 1656 | rampant,negative,bing,-1 1657 | rampin,negative,bing,-1 1658 | rancor,negative,bing,-1 1659 | rassegn,negative,bing,-1 1660 | rastrell,negative,bing,-1 1661 | rattrist,negative,bing,-1 1662 | razz,negative,bing,-1 1663 | razzism,negative,bing,-3 1664 | razzist,negative,bing,-3 1665 | reat,negative,bing,-2 1666 | reazio-1r,negative,bing,-1 1667 | recession,negative,bing,-1 1668 | reclam,negative,bing,-1 1669 | reclusion,negative,bing,-1 1670 | regred,negative,bing,-1 1671 | regression,negative,bing,-1 1672 | regress,negative,bing,-1 1673 | reiett,negative,bing,-1 1674 | relitt,negative,bing,-1 1675 | repression,negative,bing,-1 1676 | repress,negative,bing,-1 1677 | reprim,negative,bing,-1 1678 | repulsion,negative,bing,-1 1679 | res-dei-cont,negative,bing,-1 1680 | resistent,negative,bing,-1 1681 | resping,negative,bing,-1 1682 | respint,negative,bing,-1 1683 | restritt,negative,bing,-1 1684 | restrizion,negative,bing,-1 1685 | reticent,negative,bing,-1 1686 | retor,negative,bing,-1 1687 | retroced,negative,bing,-1 1688 | revoc,negative,bing,-1 1689 | revuls,negative,bing,-1 1690 | ribalt,negative,bing,-1 1691 | ribass,negative,bing,-1 1692 | ribell,negative,bing,-1 1693 | riboll,negative,bing,-1 1694 | ricad,negative,bing,-1 1695 | ricalcitr,negative,bing,-1 1696 | ricatt,negative,bing,-1 1697 | richied-temp,negative,bing,-1 1698 | ricors,negative,bing,-1 1699 | ridicol,negative,bing,-1 1700 | ridond,negative,bing,-1 1701 | rif,negative,bing,-1 1702 | rifiut,negative,bing,-1 1703 | rigid,negative,bing,-1 1704 | rigidezz,negative,bing,-1 1705 | rigor,negative,bing,-1 1706 | rilutt,negative,bing,-1 1707 | rimors,negative,bing,-1 1708 | rimostr,negative,bing,-1 1709 | rimpiant,negative,bing,-1 1710 | rimprover,negative,bing,-1 1711 | rincul,negative,bing,-1 1712 | ring,negative,bing,-1 1713 | rinunc,negative,bing,-1 1714 | rip,negative,bing,-1 1715 | ripetit,negative,bing,-1 1716 | ripid,negative,bing,-1 1717 | riprovevol,negative,bing,-1 1718 | ripud,negative,bing,-1 1719 | ripugn,negative,bing,-1 1720 | risc,negative,bing,-1 1721 | rischios,negative,bing,-1 1722 | risent,negative,bing,-1 1723 | risent-di,negative,bing,-1 1724 | risorgent,negative,bing,-1 1725 | ristagn,negative,bing,-1 1726 | ristrett,negative,bing,-1 1727 | ritard,negative,bing,-1 1728 | ritir,negative,bing,-1 1729 | ritorn,negative,bing,-1 1730 | ritorsion,negative,bing,-1 1731 | ritort,negative,bing,-1 1732 | ritratt,negative,bing,-1 1733 | rival,negative,bing,-1 1734 | rivest-di-zuccher,negative,bing,-1 1735 | rivolt,negative,bing,-1 1736 | robb,negative,bing,-1 1737 | roccios,negative,bing,-1 1738 | rodent,negative,bing,-1 1739 | ronz,negative,bing,-1 1740 | rottam,negative,bing,-2 1741 | rott,negative,bing,-1 1742 | rottur,negative,bing,-1 1743 | rovent,negative,bing,-1 1744 | rovesc,negative,bing,-1 1745 | rovin,negative,bing,-1 1746 | rozz,negative,bing,-1 1747 | irremediabl,negative,bing,-1 1748 | rub,negative,bing,-1 1749 | rud,negative,bing,-1 1750 | rue,negative,bing,-1 1751 | ruffian,negative,bing,-1 1752 | rug,negative,bing,-1 1753 | ruggin,negative,bing,-1 1754 | rugh,negative,bing,-1 1755 | rugos,negative,bing,-1 1756 | rumor,negative,bing,-1 1757 | sabotagg,negative,bing,-1 1758 | sacchegg,negative,bing,-1 1759 | sacc,negative,bing,-1 1760 | sacrific,negative,bing,-1 1761 | saltuar,negative,bing,-1 1762 | sanguin,negative,bing,-1 1763 | sanguisug,negative,bing,-1 1764 | sarcasm,negative,bing,-1 1765 | sarcast,negative,bing,-1 1766 | sardon,negative,bing,-1 1767 | satiregg,negative,bing,-1 1768 | satir,negative,bing,-1 1769 | sbadigl,negative,bing,-1 1770 | sbagl,negative,bing,-1 1771 | sbalord,negative,bing,-1 1772 | sbav,negative,bing,-1 1773 | sbavatur,negative,bing,-1 1774 | sbilanc,negative,bing,-1 1775 | sbilenc,negative,bing,-1 1776 | sbrindell,negative,bing,-1 1777 | sbrogl,negative,bing,-1 1778 | scacc,negative,bing,-1 1779 | scad,negative,bing,-2 1780 | scadent,negative,bing,-2 1781 | scandal,negative,bing,-3 1782 | scandalizz,negative,bing,-3 1783 | scappatell,negative,bing,-1 1784 | scappatoi,negative,bing,-1 1785 | scaric,negative,bing,-1 1786 | scars,negative,bing,-2 1787 | scarsezz,negative,bing,-2 1788 | scarsit,negative,bing,-2 1789 | scart,negative,bing,-2 1790 | scaten,negative,bing,-1 1791 | scettic,negative,bing,-1 1792 | scheletr,negative,bing,-1 1793 | schern,negative,bing,-1 1794 | scherz,negative,bing,-1 1795 | scherzos,negative,bing,-1 1796 | schiacc,negative,bing,-1 1797 | schiacciant,negative,bing,-1 1798 | schiaff,negative,bing,-1 1799 | schiamazz,negative,bing,-1 1800 | schi,negative,bing,-1 1801 | schiavizz,negative,bing,-1 1802 | schifos,negative,bing,-3 1803 | schif,negative,bing,-3 1804 | schiumos,negative,bing,-1 1805 | schiv,negative,bing,-1 1806 | sciatt,negative,bing,-1 1807 | scind,negative,bing,-1 1808 | sciocc,negative,bing,-2 1809 | scioccant,negative,bing,-2 1810 | sciolt,negative,bing,-1 1811 | scioper,negative,bing,-1 1812 | scission,negative,bing,-1 1813 | scomod,negative,bing,-2 1814 | scompars,negative,bing,-1 1815 | scompigl,negative,bing,-1 1816 | sconcert,negative,bing,-2 1817 | sconfess,negative,bing,-1 1818 | sconosc,negative,bing,-1 1819 | sconsiderat,negative,bing,-1 1820 | sconsideratezz,negative,bing,-1 1821 | sconsider,negative,bing,-1 1822 | sconsigl,negative,bing,-2 1823 | sconsol,negative,bing,-1 1824 | sconsolat,negative,bing,-1 1825 | scontent,negative,bing,-2 1826 | scontr,negative,bing,-2 1827 | scontros,negative,bing,-2 1828 | sconvenient,negative,bing,-2 1829 | sconvolgent,negative,bing,-1 1830 | sconvolg,negative,bing,-1 1831 | sconvolt,negative,bing,-1 1832 | scopp,negative,bing,-1 1833 | scoragg,negative,bing,-1 1834 | scorrett,negative,bing,-1 1835 | scortes,negative,bing,-2 1836 | scortic,negative,bing,-1 1837 | scoss,negative,bing,-1 1838 | scostant,negative,bing,-1 1839 | scredit,negative,bing,-1 1840 | screpol,negative,bing,-1 1841 | scricchiol,negative,bing,-1 1842 | scroccon,negative,bing,-1 1843 | scrupol,negative,bing,-1 1844 | sculacc,negative,bing,-1 1845 | scur,negative,bing,-1 1846 | scus,negative,bing,-1 1847 | sdegnos,negative,bing,-2 1848 | sdolci-natezz,negative,bing,-1 1849 | seccatur,negative,bing,-1 1850 | second-livell,negative,bing,-1 1851 | sedentar,negative,bing,-1 1852 | segret,negative,bing,-1 1853 | selvagg,negative,bing,-1 1854 | sem-ritard,negative,bing,-1 1855 | semplicist,negative,bing,-1 1856 | semplific,negative,bing,-1 1857 | semplif,negative,bing,-1 1858 | senil,negative,bing,-1 1859 | sens-di-colp,negative,bing,-1 1860 | senz-amor,negative,bing,-1 1861 | senz-cervell,negative,bing,-1 1862 | senz-compromess,negative,bing,-1 1863 | senz-document,negative,bing,-1 1864 | senz-legg,negative,bing,-1 1865 | senz-licenz,negative,bing,-1 1866 | senz-pens,negative,bing,-1 1867 | senz-piet,negative,bing,-1 1868 | senz-scop,negative,bing,-1 1869 | senz-scrupol,negative,bing,-1 1870 | senz-sens,negative,bing,-1 1871 | senz-speranz,negative,bing,-1 1872 | senz-success,negative,bing,-1 1873 | senz-vit,negative,bing,-1 1874 | separ,negative,bing,-1 1875 | servil,negative,bing,-1 1876 | set,negative,bing,-1 1877 | sfacc,negative,bing,-1 1878 | sfacciataggin,negative,bing,-2 1879 | sfacciat,negative,bing,-2 1880 | sfarfall,negative,bing,-1 1881 | sfavorevol,negative,bing,-1 1882 | sfid,negative,bing,-1 1883 | sfiduc,negative,bing,-1 1884 | sfoc,negative,bing,-1 1885 | sfog,negative,bing,-1 1886 | sfoll,negative,bing,-1 1887 | sfortun,negative,bing,-1 1888 | sfortu-1t,negative,bing,-1 1889 | sforz,negative,bing,-1 1890 | sfreg,negative,bing,-1 1891 | sfren,negative,bing,-1 1892 | sfrontatezz,negative,bing,-1 1893 | sfrutt,negative,bing,-1 1894 | sgangher,negative,bing,-1 1895 | sgoment,negative,bing,-3 1896 | sgradevol,negative,bing,-2 1897 | sgrad,negative,bing,-1 1898 | sgraziat,negative,bing,-2 1899 | sgraz,negative,bing,-1 1900 | sgretol,negative,bing,-1 1901 | sgrid,negative,bing,-1 1902 | sguazz,negative,bing,-1 1903 | si-arrend-facil,negative,bing,-1 1904 | si-blocc,negative,bing,-1 1905 | sibil,negative,bing,-1 1906 | siccit,negative,bing,-1 1907 | siep,negative,bing,-1 1908 | sindrom,negative,bing,-1 1909 | sinistr,negative,bing,-1 1910 | sintom,negative,bing,-1 1911 | situazion-critic,negative,bing,-1 1912 | situazion-di-stall,negative,bing,-1 1913 | situazion-difficil,negative,bing,-1 1914 | slav,negative,bing,-1 1915 | sleal,negative,bing,-2 1916 | slealt,negative,bing,-2 1917 | slog,negative,bing,-1 1918 | smarr,negative,bing,-1 1919 | sment,negative,bing,-1 1920 | sminu,negative,bing,-1 1921 | smod,negative,bing,-1 1922 | smodat,negative,bing,-1 1923 | smorf,negative,bing,-1 1924 | snervant,negative,bing,-2 1925 | snob,negative,bing,-1 1926 | snobb,negative,bing,-1 1927 | sob,negative,bing,-1 1928 | sobr,negative,bing,-1 1929 | soccomb,negative,bing,-1 1930 | sofferent,negative,bing,-1 1931 | soffert,negative,bing,-1 1932 | soffoc,negative,bing,-1 1933 | soffr,negative,bing,-1 1934 | sofistic,negative,bing,-1 1935 | soggezion,negative,bing,-1 1936 | soggiog,negative,bing,-1 1937 | solitar,negative,bing,-1 1938 | solitudin,negative,bing,-1 1939 | somar,negative,bing,-1 1940 | sommers,negative,bing,-1 1941 | soppression,negative,bing,-1 1942 | sopraff,negative,bing,-1 1943 | sopraffatt,negative,bing,-1 1944 | sopravval,negative,bing,-1 1945 | sopravvalut,negative,bing,-2 1946 | sord,negative,bing,-1 1947 | sornion,negative,bing,-1 1948 | sospett,negative,bing,-1 1949 | sottodimension,negative,bing,-1 1950 | sottoline,negative,bing,-1 1951 | sottomess,negative,bing,-1 1952 | sottomission,negative,bing,-1 1953 | sottopag,negative,bing,-1 1954 | sottopost,negative,bing,-1 1955 | sottoquot,negative,bing,-1 1956 | sottosquadr,negative,bing,-1 1957 | sottot,negative,bing,-1 1958 | sottrarr,negative,bing,-1 1959 | sovraccar,negative,bing,-1 1960 | sovrappes,negative,bing,-1 1961 | sovrastim,negative,bing,-1 1962 | sovversion,negative,bing,-1 1963 | sovvers,negative,bing,-1 1964 | sovvert,negative,bing,-1 1965 | spaccatur,negative,bing,-1 1966 | spadronegg,negative,bing,-1 1967 | sparg-di-sangu,negative,bing,-1 1968 | spar,negative,bing,-1 1969 | spavald,negative,bing,-1 1970 | spavent,negative,bing,-1 1971 | spaventevol,negative,bing,-2 1972 | spericol,negative,bing,-1 1973 | sperper,negative,bing,-1 1974 | spettral,negative,bing,-1 1975 | spettr,negative,bing,-1 1976 | spiacevol,negative,bing,-2 1977 | spiegazz,negative,bing,-1 1978 | spietat,negative,bing,-1 1979 | spietatezz,negative,bing,-1 1980 | spiet,negative,bing,-1 1981 | spiffer,negative,bing,-1 1982 | spinos,negative,bing,-1 1983 | spir-battaglier,negative,bing,-1 1984 | spogl,negative,bing,-1 1985 | sporad,negative,bing,-1 1986 | sporciz,negative,bing,-3 1987 | sporc,negative,bing,-3 1988 | spost,negative,bing,-1 1989 | sprec,negative,bing,-1 1990 | spregevol,negative,bing,-3 1991 | spregiat,negative,bing,-1 1992 | spregiudicat,negative,bing,-1 1993 | sprezzant,negative,bing,-1 1994 | sproloqu,negative,bing,-1 1995 | sproporzion,negative,bing,-1 1996 | spudorat,negative,bing,-1 1997 | spudoratezz,negative,bing,-1 1998 | spudor,negative,bing,-1 1999 | spur,negative,bing,-1 2000 | squallid,negative,bing,-3 2001 | squallor,negative,bing,-3 2002 | squal,negative,bing,-1 2003 | squamos,negative,bing,-1 2004 | squilibr,negative,bing,-1 2005 | squitt,negative,bing,-1 2006 | sradic,negative,bing,-1 2007 | stag-1nt,negative,bing,-1 2008 | stag-1zion,negative,bing,-1 2009 | stall,negative,bing,-1 2010 | stamped,negative,bing,-1 2011 | stamp,negative,bing,-1 2012 | stant,negative,bing,-1 2013 | static,negative,bing,-1 2014 | stereotip,negative,bing,-1 2015 | steril,negative,bing,-1 2016 | stermin,negative,bing,-1 2017 | stigm,negative,bing,-1 2018 | stigmatizz,negative,bing,-1 2019 | stizz,negative,bing,-1 2020 | stizzos,negative,bing,-1 2021 | stord,negative,bing,-1 2022 | storp,negative,bing,-1 2023 | straf,negative,bing,-1 2024 | strag,negative,bing,-1 2025 | stran,negative,bing,-1 2026 | stranezz,negative,bing,-1 2027 | strangol,negative,bing,-1 2028 | strapag,negative,bing,-1 2029 | strapazz,negative,bing,-1 2030 | strapp,negative,bing,-1 2031 | stravag,negative,bing,-1 2032 | straziant,negative,bing,-2 2033 | streg,negative,bing,-1 2034 | stress,negative,bing,-1 2035 | stressant,negative,bing,-2 2036 | strett,negative,bing,-2 2037 | strident,negative,bing,-1 2038 | strid,negative,bing,-1 2039 | stridul,negative,bing,-1 2040 | strill,negative,bing,-1 2041 | striminz,negative,bing,-1 2042 | strisc,negative,bing,-1 2043 | strisciant,negative,bing,-1 2044 | strofin,negative,bing,-1 2045 | stronz,negative,bing,-3 2046 | stropicc,negative,bing,-1 2047 | strozz,negative,bing,-1 2048 | strugg,negative,bing,-1 2049 | struggent,negative,bing,-1 2050 | stucchevol,negative,bing,-2 2051 | stupefatt,negative,bing,-1 2052 | stupid,negative,bing,-2 2053 | stupr,negative,bing,-1 2054 | subaltern,negative,bing,-1 2055 | subdol,negative,bing,-2 2056 | subordin,negative,bing,-1 2057 | succ,negative,bing,-1 2058 | sudar,negative,bing,-1 2059 | sud,negative,bing,-1 2060 | suicid,negative,bing,-1 2061 | superficial,negative,bing,-1 2062 | superflu,negative,bing,-1 2063 | superstizion,negative,bing,-1 2064 | superstiz,negative,bing,-1 2065 | supplic,negative,bing,-1 2066 | supponent,negative,bing,-2 2067 | surriscald,negative,bing,-2 2068 | suscett,negative,bing,-1 2069 | svantagg,negative,bing,-1 2070 | sventr,negative,bing,-1 2071 | svil,negative,bing,-1 2072 | svist,negative,bing,-1 2073 | svit,negative,bing,-1 2074 | svogl,negative,bing,-1 2075 | tagl,negative,bing,-1 2076 | tard,negative,bing,-1 2077 | tassazion,negative,bing,-1 2078 | tast,negative,bing,-1 2079 | tedios,negative,bing,-1 2080 | temerar,negative,bing,-1 2081 | temerariet,negative,bing,-1 2082 | temper,negative,bing,-1 2083 | tempest,negative,bing,-1 2084 | tension,negative,bing,-1 2085 | tentazion,negative,bing,-1 2086 | tentenn,negative,bing,-1 2087 | terremot,negative,bing,-1 2088 | terribil,negative,bing,-3 2089 | terror,negative,bing,-3 2090 | terrorizz,negative,bing,-3 2091 | tes,negative,bing,-1 2092 | test-cald,negative,bing,-1 2093 | testardaggin,negative,bing,-2 2094 | testard,negative,bing,-2 2095 | ti-odi,negative,bing,-1 2096 | tirann,negative,bing,-1 2097 | tirapied,negative,bing,-1 2098 | tirc,negative,bing,-1 2099 | tont,negative,bing,-1 2100 | toporagn,negative,bing,-1 2101 | torment,negative,bing,-1 2102 | torrent,negative,bing,-1 2103 | tortuos,negative,bing,-1 2104 | tortur,negative,bing,-1 2105 | tossic,negative,bing,-2 2106 | tossicodipendent,negative,bing,-1 2107 | totalitar,negative,bing,-1 2108 | traball,negative,bing,-1 2109 | trad,negative,bing,-1 2110 | traditor,negative,bing,-1 2111 | traged,negative,bing,-1 2112 | tragic,negative,bing,-1 2113 | tram,negative,bing,-1 2114 | trappol,negative,bing,-1 2115 | trasal,negative,bing,-1 2116 | trascin,negative,bing,-1 2117 | trascur,negative,bing,-1 2118 | trasecol,negative,bing,-1 2119 | trasgred,negative,bing,-1 2120 | trasgression,negative,bing,-1 2121 | trasgression-dell-legg,negative,bing,-1 2122 | trasgressor-dell-legg,negative,bing,-1 2123 | trasgressor,negative,bing,-1 2124 | trash,negative,bing,-1 2125 | traum,negative,bing,-2 2126 | traumat,negative,bing,-2 2127 | traumatizz,negative,bing,-2 2128 | travagl,negative,bing,-1 2129 | travis,negative,bing,-1 2130 | travolg,negative,bing,-1 2131 | trist,negative,bing,-2 2132 | tristement,negative,bing,-2 2133 | tristezz,negative,bing,-2 2134 | troi,negative,bing,-1 2135 | tropp-car,negative,bing,-1 2136 | tropp-mal,negative,bing,-1 2137 | trucc,negative,bing,-1 2138 | truff,negative,bing,-2 2139 | truffator,negative,bing,-2 2140 | tumult,negative,bing,-1 2141 | tumultu,negative,bing,-1 2142 | turbolent,negative,bing,-1 2143 | ubriac,negative,bing,-2 2144 | ubriacon,negative,bing,-2 2145 | uccid,negative,bing,-1 2146 | uccis,negative,bing,-1 2147 | ultimatum,negative,bing,-1 2148 | ultim-disper,negative,bing,-1 2149 | urgent,negative,bing,-1 2150 | urtand,negative,bing,-1 2151 | urtar,negative,bing,-1 2152 | urtat,negative,bing,-1 2153 | urti,negative,bing,-1 2154 | ustion,negative,bing,-1 2155 | usurp,negative,bing,-1 2156 | vacill,negative,bing,-1 2157 | vacu,negative,bing,-1 2158 | vag,negative,bing,-1 2159 | valang,negative,bing,-1 2160 | van,negative,bing,-1 2161 | vang,negative,bing,-1 2162 | vanit,negative,bing,-1 2163 | veement,negative,bing,-1 2164 | veemenz,negative,bing,-1 2165 | velen,negative,bing,-2 2166 | vendett,negative,bing,-1 2167 | vendic,negative,bing,-1 2168 | vendicat,negative,bing,-1 2169 | vergogn,negative,bing,-2 2170 | vers,negative,bing,-1 2171 | vertigin,negative,bing,-1 2172 | vescic,negative,bing,-1 2173 | vess,negative,bing,-1 2174 | viet,negative,bing,-1 2175 | vigliacc,negative,bing,-2 2176 | vil,negative,bing,-2 2177 | vilt,negative,bing,-2 2178 | violator,negative,bing,-1 2179 | violazion,negative,bing,-1 2180 | violenz,negative,bing,-2 2181 | violent,negative,bing,-2 2182 | viper,negative,bing,-1 2183 | virulent,negative,bing,-1 2184 | virus,negative,bing,-1 2185 | viscos,negative,bing,-1 2186 | vill,negative,bing,-1 2187 | vittim,negative,bing,-1 2188 | vittimizz,negative,bing,-1 2189 | viz,negative,bing,-1 2190 | vizios,negative,bing,-1 2191 | volg,negative,bing,-1 2192 | volubil,negative,bing,-1 2193 | vom,negative,bing,-1 2194 | vomit,negative,bing,-2 2195 | vulner,negative,bing,-1 2196 | vuot,negative,bing,-1 2197 | zelant,negative,bing,-1 2198 | zel,negative,bing,-1 2199 | zer,negative,bing,-1 2200 | zimbell,negative,bing,-1 2201 | zitell,negative,bing,-1 2202 | zomb,negative,bing,-1 2203 | zoppic,negative,bing,-1 2204 | zopp,negative,bing,-1 2205 | vaffancul,negative,bing,-1 2206 | affancul,negative,bing,-1 2207 | fancul,negative,bing,-1 2208 | sfig,negative,bing,-1 2209 | emotebad,negative,bing,-1 2210 | emotesick,negative,bing,-1 2211 | emotevil,negative,bing,-1 2212 | emotecry,negative,bing,-1 2213 | emoteshock,negative,bing,-1 2214 | emotedisapp,negative,bing,-1 2215 | emotesil,negative,bing,-1 2216 | emotesham,negative,bing,-1 2217 | abbagl,positive,bing,1 2218 | abbell,positive,bing,1 2219 | abbond,positive,bing,1 2220 | abbracc,positive,bing,1 2221 | abbriv,positive,bing,1 2222 | abil,positive,bing,1 2223 | accarezz,positive,bing,1 2224 | accattiv,positive,bing,1 2225 | access,positive,bing,1 2226 | acclam,positive,bing,1 2227 | accoglient,positive,bing,2 2228 | accolt,positive,bing,1 2229 | accomod,positive,bing,1 2230 | accur,positive,bing,1 2231 | acquis,positive,bing,1 2232 | acut,positive,bing,1 2233 | acutezz,positive,bing,1 2234 | adatt,positive,bing,1 2235 | addolc,positive,bing,1 2236 | adegu,positive,bing,1 2237 | ademp,positive,bing,1 2238 | ader,positive,bing,1 2239 | ador,positive,bing,3 2240 | adul,positive,bing,1 2241 | aerodin,positive,bing,1 2242 | affabil,positive,bing,1 2243 | affar,positive,bing,1 2244 | affascin,positive,bing,2 2245 | afferm,positive,bing,1 2246 | affett,positive,bing,1 2247 | affettu,positive,bing,1 2248 | affiat,positive,bing,1 2249 | affid,positive,bing,1 2250 | affin,positive,bing,1 2251 | affluent,positive,bing,1 2252 | affluenz,positive,bing,1 2253 | aggiorn,positive,bing,1 2254 | agil,positive,bing,1 2255 | ahah,positive,bing,1 2256 | aiut,positive,bing,1 2257 | alba,positive,bing,1 2258 | alla-mod,positive,bing,2 2259 | allegr,positive,bing,2 2260 | allett,positive,bing,1 2261 | allev,positive,bing,1 2262 | alliet,positive,bing,1 2263 | alta-qualit,positive,bing,3 2264 | altruist,positive,bing,2 2265 | amabil,positive,bing,2 2266 | amant,positive,bing,2 2267 | amat,positive,bing,2 2268 | amator,positive,bing,1 2269 | ambiz,positive,bing,1 2270 | amen,positive,bing,1 2271 | amichevol,positive,bing,2 2272 | amiciz,positive,bing,1 2273 | amic,positive,bing,1 2274 | ammir,positive,bing,2 2275 | ammirevol,positive,bing,2 2276 | ammiss,positive,bing,1 2277 | amo,positive,bing,3 2278 | amor,positive,bing,3 2279 | amorevol,positive,bing,3 2280 | ampi,positive,bing,1 2281 | angel,positive,bing,1 2282 | anim,positive,bing,1 2283 | apert,positive,bing,1 2284 | apertur,positive,bing,1 2285 | apot,positive,bing,1 2286 | appassionat,positive,bing,1 2287 | appassion,positive,bing,1 2288 | applaud,positive,bing,2 2289 | apprezz,positive,bing,2 2290 | apprezzabil,positive,bing,2 2291 | approv,positive,bing,1 2292 | ardent,positive,bing,1 2293 | ardor,positive,bing,1 2294 | armon,positive,bing,2 2295 | armonizz,positive,bing,2 2296 | arricc,positive,bing,1 2297 | arzill,positive,bing,1 2298 | aspir,positive,bing,1 2299 | assapor,positive,bing,1 2300 | assicur,positive,bing,1 2301 | astut,positive,bing,1 2302 | attendibil,positive,bing,1 2303 | attraent,positive,bing,2 2304 | attrazion,positive,bing,1 2305 | audac,positive,bing,2 2306 | augur,positive,bing,1 2307 | autent,positive,bing,1 2308 | autocompiac,positive,bing,1 2309 | autodetermin,positive,bing,1 2310 | autonom,positive,bing,1 2311 | autorevol,positive,bing,1 2312 | autorizz,positive,bing,1 2313 | autosufficient,positive,bing,1 2314 | avanzat,positive,bing,1 2315 | avvenent,positive,bing,1 2316 | avventur,positive,bing,1 2317 | avvincent,positive,bing,2 2318 | b-day,positive,bing,1 2319 | baglior,positive,bing,1 2320 | bass-prezz,positive,bing,1 2321 | bass-risc,positive,bing,1 2322 | beat,positive,bing,1 2323 | beatitudin,positive,bing,1 2324 | bell'aspett,positive,bing,2 2325 | bellezz,positive,bing,2 2326 | bell,positive,bing,2 2327 | mitic,positive,bing,3 2328 | ben-accolt,positive,bing,2 2329 | ben-colleg,positive,bing,2 2330 | ben-consider,positive,bing,1 2331 | ben-educ,positive,bing,2 2332 | ben-educato,positive,bing,2 2333 | ben-fatt,positive,bing,2 2334 | ben-gest,positive,bing,2 2335 | ben-inform,positive,bing,2 2336 | ben-istru,positive,bing,2 2337 | ben-posizion,positive,bing,2 2338 | ben-retroillumin,positive,bing,2 2339 | ben,positive,bing,2 2340 | bened,positive,bing,1 2341 | benedizion,positive,bing,1 2342 | beneduc,positive,bing,2 2343 | benefattor,positive,bing,2 2344 | benef,positive,bing,1 2345 | benefici,positive,bing,1 2346 | beneficiar,positive,bing,1 2347 | beness,positive,bing,2 2348 | benevolent,positive,bing,2 2349 | benevol,positive,bing,2 2350 | benifits,positive,bing,1 2351 | benven,positive,bing,1 2352 | bizzeff,positive,bing,1 2353 | bland,positive,bing,1 2354 | bollent,positive,bing,1 2355 | bontà,positive,bing,1 2356 | bonus,positive,bing,2 2357 | brav,positive,bing,2 2358 | brezz,positive,bing,1 2359 | brillant,positive,bing,3 2360 | brillantezz,positive,bing,3 2361 | brill,positive,bing,3 2362 | brios,positive,bing,1 2363 | buon-compleann,positive,bing,1 2364 | buongiorn,positive,bing,2 2365 | buon-volont,positive,bing,2 2366 | buon-intenzion,positive,bing,2 2367 | buon,positive,bing,2 2368 | buonissim,positive,bing,3 2369 | bon,positive,bing,2 2370 | buonsens,positive,bing,1 2371 | cald,positive,bing,1 2372 | calm,positive,bing,1 2373 | calmant,positive,bing,1 2374 | calor,positive,bing,1 2375 | campion,positive,bing,1 2376 | capolavor,positive,bing,1 2377 | caratterist,positive,bing,1 2378 | cariner,positive,bing,1 2379 | carin,positive,bing,1 2380 | carism,positive,bing,1 2381 | carismat,positive,bing,1 2382 | caritatevol,positive,bing,1 2383 | car,positive,bing,1 2384 | cast,positive,bing,1 2385 | cavalleresc,positive,bing,1 2386 | cavaller,positive,bing,1 2387 | celebr,positive,bing,1 2388 | celer,positive,bing,1 2389 | celest,positive,bing,1 2390 | cerimon,positive,bing,1 2391 | cherubin,positive,bing,1 2392 | chiaramente,positive,bing,1 2393 | chiarezz,positive,bing,1 2394 | ciel,positive,bing,1 2395 | civilizz,positive,bing,1 2396 | civilt,positive,bing,1 2397 | coccol,positive,bing,1 2398 | coerent,positive,bing,1 2399 | coerenz,positive,bing,1 2400 | coes,positive,bing,1 2401 | colorat,positive,bing,1 2402 | comfort,positive,bing,1 2403 | commovent,positive,bing,1 2404 | comod,positive,bing,1 2405 | competent,positive,bing,2 2406 | competit,positive,bing,1 2407 | compiacent,positive,bing,2 2408 | complement,positive,bing,1 2409 | compliment,positive,bing,2 2410 | compl,positive,bing,1 2411 | comprens,positive,bing,1 2412 | con-affett,positive,bing,2 2413 | con-ammir,positive,bing,2 2414 | con-gioi,positive,bing,2 2415 | con-gratitudin,positive,bing,2 2416 | con-success,positive,bing,2 2417 | con-tutt-il-cuor,positive,bing,2 2418 | concil,positive,bing,1 2419 | concis,positive,bing,1 2420 | confid,positive,bing,1 2421 | confortevol,positive,bing,2 2422 | confort,positive,bing,2 2423 | congenial,positive,bing,1 2424 | congratul,positive,bing,1 2425 | consolid,positive,bing,1 2426 | contentezz,positive,bing,2 2427 | content,positive,bing,2 2428 | continu,positive,bing,1 2429 | convenient,positive,bing,1 2430 | convincent,positive,bing,1 2431 | convint,positive,bing,1 2432 | coolfin qu,positive,bing,1 2433 | cooper,positive,bing,1 2434 | coragg,positive,bing,1 2435 | cordial,positive,bing,2 2436 | corrett,positive,bing,1 2437 | cortes,positive,bing,1 2438 | coscienz,positive,bing,1 2439 | cos-buon,positive,bing,1 2440 | cos-content,positive,bing,1 2441 | costant,positive,bing,1 2442 | costanz,positive,bing,1 2443 | costrutt,positive,bing,1 2444 | creat,positive,bing,1 2445 | credibil,positive,bing,1 2446 | cred,positive,bing,1 2447 | croccant,positive,bing,1 2448 | cur,positive,bing,1 2449 | da-record,positive,bing,1 2450 | deferent,positive,bing,1 2451 | deginified,positive,bing,1 2452 | degn,positive,bing,1 2453 | degn-di-not,positive,bing,2 2454 | delicatezz,positive,bing,1 2455 | delic,positive,bing,2 2456 | deliz,positive,bing,2 2457 | desider,positive,bing,1 2458 | destin,positive,bing,1 2459 | destr,positive,bing,1 2460 | devot?,positive,bing,1 2461 | di-alta-qualit,positive,bing,3 2462 | di-bell'aspett,positive,bing,2 2463 | di-cuor,positive,bing,1 2464 | di-fam-mondiale?,positive,bing,1 2465 | di-luss,positive,bing,1 2466 | di-moda?,positive,bing,1 2467 | di-prim-qualit,positive,bing,1 2468 | di-princip,positive,bing,1 2469 | di-rispost,positive,bing,1 2470 | di-success,positive,bing,1 2471 | difensor,positive,bing,1 2472 | dignit,positive,bing,1 2473 | diligent,positive,bing,1 2474 | di1m,positive,bing,1 2475 | diplomat,positive,bing,1 2476 | dispon,positive,bing,1 2477 | dispost,positive,bing,1 2478 | distint,positive,bing,1 2479 | distinzion,positive,bing,1 2480 | divertent,positive,bing,1 2481 | divert,positive,bing,1 2482 | divin,positive,bing,1 2483 | dolc,positive,bing,1 2484 | dolcement,positive,bing,1 2485 | dolcezz,positive,bing,1 2486 | domin,positive,bing,1 2487 | don-t-kill,positive,bing,1 2488 | dot,positive,bing,1 2489 | duratur,positive,bing,1 2490 | durevol,positive,bing,1 2491 | ebbrezz,positive,bing,1 2492 | eccell,positive,bing,3 2493 | eccellent,positive,bing,3 2494 | eccels,positive,bing,3 2495 | eccezional,positive,bing,3 2496 | eccit,positive,bing,1 2497 | econom,positive,bing,2 2498 | edific,positive,bing,1 2499 | educ,positive,bing,2 2500 | efficac,positive,bing,2 2501 | efficient,positive,bing,2 2502 | efficient-energet,positive,bing,1 2503 | elast,positive,bing,1 2504 | eleg,positive,bing,1 2505 | elegant,positive,bing,3 2506 | elettrific,positive,bing,1 2507 | elev,positive,bing,1 2508 | elog,positive,bing,1 2509 | eloquent,positive,bing,1 2510 | eminent,positive,bing,1 2511 | emozio1nte?,positive,bing,1 2512 | emozio1nt,positive,bing,1 2513 | emozion,positive,bing,1 2514 | empat,positive,bing,1 2515 | empatizz,positive,bing,1 2516 | encom,positive,bing,1 2517 | energet,positive,bing,1 2518 | energ,positive,bing,1 2519 | entusiasm,positive,bing,2 2520 | entusiast,positive,bing,2 2521 | equilibr,positive,bing,1 2522 | equilibrio,positive,bing,1 2523 | equit,positive,bing,1 2524 | equo,positive,bing,1 2525 | ergonom,positive,bing,1 2526 | ero,positive,bing,1 2527 | eroic,positive,bing,1 2528 | eroin,positive,bing,1 2529 | erud,positive,bing,1 2530 | esalt,positive,bing,1 2531 | esempl,positive,bing,1 2532 | esilar,positive,bing,1 2533 | espans,positive,bing,1 2534 | esser-allegr,positive,bing,1 2535 | estas,positive,bing,1 2536 | estat,positive,bing,1 2537 | esuber,positive,bing,1 2538 | esult,positive,bing,1 2539 | etern,positive,bing,1 2540 | etic,positive,bing,1 2541 | eufor,positive,bing,2 2542 | evoc,positive,bing,1 2543 | fabbric,positive,bing,1 2544 | facil,positive,bing,1 2545 | facil-da-usar,positive,bing,1 2546 | facilit,positive,bing,1 2547 | fam,positive,bing,1 2548 | famos,positive,bing,1 2549 | fan,positive,bing,1 2550 | fanfar,positive,bing,1 2551 | fantas,positive,bing,1 2552 | fantast,positive,bing,1 2553 | fascin,positive,bing,1 2554 | fattibil,positive,bing,1 2555 | faust,positive,bing,1 2556 | favol,positive,bing,3 2557 | favorevol,positive,bing,1 2558 | favor,positive,bing,1 2559 | fecond,positive,bing,1 2560 | fed,positive,bing,1 2561 | fedel,positive,bing,1 2562 | fedelt,positive,bing,2 2563 | felic,positive,bing,2 2564 | fenomenal,positive,bing,1 2565 | fertil,positive,bing,1 2566 | fervent,positive,bing,1 2567 | fervid,positive,bing,1 2568 | fervor,positive,bing,1 2569 | fest,positive,bing,1 2570 | fid,positive,bing,1 2571 | fiduc,positive,bing,2 2572 | fier,positive,bing,2 2573 | fighissim,positive,bing,3 2574 | fig,positive,bing,3 2575 | fin,positive,bing,1 2576 | finement,positive,bing,1 2577 | fior,positive,bing,1 2578 | fiorent,positive,bing,1 2579 | flessibil,positive,bing,1 2580 | fluent,positive,bing,1 2581 | focos,positive,bing,1 2582 | follegg,positive,bing,1 2583 | formicol,positive,bing,1 2584 | formid,positive,bing,1 2585 | fort,positive,bing,1 2586 | fortuit,positive,bing,1 2587 | fortu,positive,bing,1 2588 | fortun,positive,bing,1 2589 | forz-d'anim,positive,bing,1 2590 | fratern,positive,bing,1 2591 | freschissim,positive,bing,2 2592 | fresc,positive,bing,2 2593 | frugal,positive,bing,1 2594 | fulgor,positive,bing,1 2595 | futurist,positive,bing,1 2596 | futur,positive,bing,1 2597 | galant,positive,bing,1 2598 | gallegg,positive,bing,1 2599 | garant,positive,bing,1 2600 | garanz,positive,bing,1 2601 | gemm,positive,bing,1 2602 | gener,positive,bing,1 2603 | generos,positive,bing,2 2604 | genial,positive,bing,3 2605 | gen,positive,bing,1 2606 | gentilezz,positive,bing,3 2607 | gentil,positive,bing,3 2608 | giocos,positive,bing,1 2609 | gioi,positive,bing,2 2610 | gioios,positive,bing,2 2611 | giovanil,positive,bing,2 2612 | giovial,positive,bing,2 2613 | giubil,positive,bing,1 2614 | giudiz,positive,bing,1 2615 | giust,positive,bing,1 2616 | giustezz,positive,bing,1 2617 | giustiz,positive,bing,1 2618 | global,positive,bing,1 2619 | glor,positive,bing,1 2620 | glorific,positive,bing,1 2621 | glorios,positive,bing,2 2622 | god,positive,bing,1 2623 | gradevol,positive,bing,2 2624 | grad,positive,bing,1 2625 | grand,positive,bing,1 2626 | grand-capac,positive,bing,2 2627 | grandezz,positive,bing,1 2628 | grandin,positive,bing,1 2629 | grandios,positive,bing,3 2630 | gratif,positive,bing,2 2631 | gratific,positive,bing,2 2632 | gratitudin,positive,bing,2 2633 | grat,positive,bing,2 2634 | gratu,positive,bing,1 2635 | graz,positive,bing,1 2636 | Graz-a-dio,positive,bing,1 2637 | grazios,positive,bing,2 2638 | guadagn,positive,bing,1 2639 | guar,positive,bing,1 2640 | guid,positive,bing,1 2641 | gust,positive,bing,1 2642 | gustos,positive,bing,1 2643 | hah,positive,bing,1 2644 | happ,positive,bing,1 2645 | happy,positive,bing,1 2646 | happy-birthday,positive,bing,1 2647 | hot,positive,bing,1 2648 | i-lov-you,positive,bing,1 2649 | ideal,positive,bing,2 2650 | idealizz,positive,bing,2 2651 | idilliac,positive,bing,3 2652 | idolatr,positive,bing,1 2653 | idol,positive,bing,1 2654 | il-mio-amor,positive,bing,1 2655 | illimit,positive,bing,1 2656 | illumin,positive,bing,1 2657 | illustr,positive,bing,1 2658 | imbatt,positive,bing,1 2659 | immacol,positive,bing,1 2660 | immediat,positive,bing,1 2661 | immens,positive,bing,1 2662 | imparegg,positive,bing,1 2663 | imparzial,positive,bing,1 2664 | imparzialità,positive,bing,1 2665 | impavid,positive,bing,1 2666 | impecc,positive,bing,1 2667 | impeccabil,positive,bing,2 2668 | impegn,positive,bing,1 2669 | imper,positive,bing,1 2670 | imperterr,positive,bing,1 2671 | imperturb,positive,bing,1 2672 | imponent,positive,bing,1 2673 | import,positive,bing,1 2674 | impres,positive,bing,1 2675 | impression,positive,bing,1 2676 | in-mod-sicur,positive,bing,1 2677 | in-omagg,positive,bing,1 2678 | in-particol,positive,bing,1 2679 | inattacc,positive,bing,1 2680 | incant,positive,bing,2 2681 | incantevol,positive,bing,3 2682 | incondizion,positive,bing,1 2683 | incoragg,positive,bing,1 2684 | incred,positive,bing,3 2685 | incredibil,positive,bing,3 2686 | incroll,positive,bing,1 2687 | indenn,positive,bing,1 2688 | indimentic,positive,bing,1 2689 | indiscuss,positive,bing,1 2690 | indiscut,positive,bing,1 2691 | indiscutibil,positive,bing,1 2692 | individualizz,positive,bing,1 2693 | indolor,positive,bing,1 2694 | indulgent,positive,bing,1 2695 | industr,positive,bing,1 2696 | inebr,positive,bing,1 2697 | ineguagl,positive,bing,2 2698 | inequivoc,positive,bing,1 2699 | inequivocabil,positive,bing,1 2700 | inestim,positive,bing,1 2701 | inestimabil,positive,bing,2 2702 | infall,positive,bing,1 2703 | infallibil,positive,bing,1 2704 | influent,positive,bing,1 2705 | influenz,positive,bing,1 2706 | ingegn,positive,bing,1 2707 | ingegnos,positive,bing,1 2708 | ingenu,positive,bing,1 2709 | in1mor,positive,bing,1 2710 | innocent,positive,bing,1 2711 | innocu,positive,bing,1 2712 | innov,positive,bing,1 2713 | inossid,positive,bing,1 2714 | insostitu,positive,bing,1 2715 | intatt,positive,bing,1 2716 | integral,positive,bing,1 2717 | integr,positive,bing,1 2718 | intelligent,positive,bing,2 2719 | intellig,positive,bing,2 2720 | intenzional,positive,bing,1 2721 | interess,positive,bing,1 2722 | intim,positive,bing,1 2723 | intraprendent,positive,bing,2 2724 | intratten,positive,bing,1 2725 | intrattien,positive,bing,1 2726 | intrepid,positive,bing,1 2727 | intric,positive,bing,1 2728 | intrig,positive,bing,1 2729 | intuit,positive,bing,1 2730 | invent,positive,bing,1 2731 | invinc,positive,bing,1 2732 | invincibil,positive,bing,1 2733 | inviol,positive,bing,1 2734 | invulner,positive,bing,1 2735 | ipnotizz,positive,bing,1 2736 | irreal,positive,bing,1 2737 | irreprens,positive,bing,1 2738 | irresist,positive,bing,3 2739 | irresistibil,positive,bing,3 2740 | ispir,positive,bing,1 2741 | istru,positive,bing,1 2742 | istrutt,positive,bing,1 2743 | kiss,positive,bing,1 2744 | labor,positive,bing,1 2745 | lavor-dur,positive,bing,1 2746 | lavor,positive,bing,1 2747 | leal,positive,bing,1 2748 | legal,positive,bing,1 2749 | leggendar,positive,bing,2 2750 | leggerezz,positive,bing,2 2751 | leggiadr,positive,bing,1 2752 | leggibil,positive,bing,1 2753 | legittim,positive,bing,1 2754 | len,positive,bing,1 2755 | liber,positive,bing,1 2756 | libert,positive,bing,1 2757 | lin,positive,bing,1 2758 | lod,positive,bing,1 2759 | lodevol,positive,bing,3 2760 | logic,positive,bing,1 2761 | lol,positive,bing,1 2762 | lov,positive,bing,1 2763 | lov-u,positive,bing,1 2764 | lov-you,positive,bing,1 2765 | low-cost,positive,bing,1 2766 | low-priced,positive,bing,1 2767 | luccic,positive,bing,1 2768 | lucent,positive,bing,2 2769 | lucentezz,positive,bing,2 2770 | lucid,positive,bing,1 2771 | lumin,positive,bing,2 2772 | lusinghier,positive,bing,1 2773 | luss,positive,bing,2 2774 | lussuos,positive,bing,2 2775 | lussuregg,positive,bing,2 2776 | lustr,positive,bing,1 2777 | maest,positive,bing,1 2778 | maestos,positive,bing,3 2779 | maggior,positive,bing,1 2780 | mag,positive,bing,1 2781 | magic,positive,bing,1 2782 | magistral,positive,bing,1 2783 | magnanim,positive,bing,1 2784 | magnif,positive,bing,3 2785 | magnificent,positive,bing,3 2786 | maneggevol,positive,bing,1 2787 | mann,positive,bing,1 2788 | matur,positive,bing,1 2789 | megl,positive,bing,1 2790 | megl-del-previst,positive,bing,1 2791 | memor,positive,bing,1 2792 | Men-stress,positive,bing,1 2793 | meravigl,positive,bing,3 2794 | meritat,positive,bing,3 2795 | meritevol,positive,bing,3 2796 | mer,positive,bing,1 2797 | meritor,positive,bing,1 2798 | meticol,positive,bing,1 2799 | miglior,positive,bing,3 2800 | miglior-performanc,positive,bing,1 2801 | miracol,positive,bing,1 2802 | misericord,positive,bing,1 2803 | mit,positive,bing,1 2804 | mod,positive,bing,1 2805 | modern,positive,bing,2 2806 | modest,positive,bing,1 2807 | molt-acut,positive,bing,1 2808 | molt-ben,positive,bing,1 2809 | monumental,positive,bing,1 2810 | moral,positive,bing,1 2811 | morbid,positive,bing,1 2812 | motiv,positive,bing,1 2813 | moviment,positive,bing,1 2814 | mozzaf,positive,bing,1 2815 | multius,positive,bing,1 2816 | munif,positive,bing,1 2817 | 1vig,positive,bing,1 2818 | nett,positive,bing,1 2819 | nitid,positive,bing,1 2820 | nobil,positive,bing,1 2821 | nobilit,positive,bing,1 2822 | Non-si-applic-restrizion,positive,bing,1 2823 | non-violent,positive,bing,1 2824 | non-violenz,positive,bing,1 2825 | notevol,positive,bing,2 2826 | not,positive,bing,1 2827 | notor,positive,bing,1 2828 | novit,positive,bing,1 2829 | nuov-di-zecc,positive,bing,2 2830 | nutrient,positive,bing,1 2831 | nutr,positive,bing,1 2832 | oas,positive,bing,1 2833 | omagg,positive,bing,1 2834 | onest,positive,bing,1 2835 | onor,positive,bing,1 2836 | onorevol,positive,bing,1 2837 | opportun,positive,bing,1 2838 | opulent,positive,bing,1 2839 | ordi1t,positive,bing,1 2840 | ordin,positive,bing,1 2841 | orecc,positive,bing,1 2842 | orgogl,positive,bing,1 2843 | origi1l,positive,bing,1 2844 | oro,positive,bing,1 2845 | ospital,positive,bing,1 2846 | ottimal,positive,bing,1 2847 | ottim,positive,bing,1 2848 | ovazion,positive,bing,1 2849 | pac,positive,bing,1 2850 | pacif,positive,bing,1 2851 | padron,positive,bing,1 2852 | panoram,positive,bing,1 2853 | paradis,positive,bing,1 2854 | parsimon,positive,bing,1 2855 | passional,positive,bing,1 2856 | passion,positive,bing,2 2857 | patriot,positive,bing,1 2858 | patriott,positive,bing,1 2859 | patt,positive,bing,1 2860 | pazient,positive,bing,1 2861 | pazienz,positive,bing,1 2862 | peacekeeper,positive,bing,1 2863 | pensier,positive,bing,1 2864 | pensos,positive,bing,1 2865 | perd,positive,bing,1 2866 | perfett,positive,bing,3 2867 | perfezion,positive,bing,3 2868 | permett,positive,bing,1 2869 | persever,positive,bing,1 2870 | personalizz,positive,bing,1 2871 | perspicac,positive,bing,1 2872 | piac,positive,bing,2 2873 | piacevol,positive,bing,2 2874 | piacevolezz,positive,bing,2 2875 | pien-di-risors,positive,bing,1 2876 | pien-di-speranz,positive,bing,1 2877 | pittoresc,positive,bing,1 2878 | più-bell,positive,bing,1 2879 | più-cald,positive,bing,1 2880 | più-felic,positive,bing,1 2881 | più-fortun,positive,bing,1 2882 | più-intelligent,positive,bing,1 2883 | più-morbid,positive,bing,1 2884 | più-not,positive,bing,1 2885 | più-pul,positive,bing,1 2886 | più-ricc,positive,bing,1 2887 | più-sald,positive,bing,1 2888 | più-veloc,positive,bing,1 2889 | poeticizz,positive,bing,1 2890 | poetic,positive,bing,1 2891 | popol,positive,bing,1 2892 | port,positive,bing,1 2893 | port-di-man,positive,bing,1 2894 | posit,positive,bing,1 2895 | potent,positive,bing,1 2896 | predilezion,positive,bing,1 2897 | prefer,positive,bing,1 2898 | preferibil,positive,bing,1 2899 | prem,positive,bing,1 2900 | preminent,positive,bing,1 2901 | premur,positive,bing,1 2902 | prestig,positive,bing,2 2903 | prezios,positive,bing,2 2904 | primar,positive,bing,1 2905 | Prim-in-class,positive,bing,1 2906 | privileg,positive,bing,1 2907 | priv-di-risc,positive,bing,1 2908 | prodezz,positive,bing,1 2909 | prodig,positive,bing,1 2910 | produtt,positive,bing,1 2911 | profession,positive,bing,2 2912 | profond,positive,bing,1 2913 | profumat,positive,bing,1 2914 | profusion,positive,bing,1 2915 | progress,positive,bing,1 2916 | prolif,positive,bing,1 2917 | promess,positive,bing,1 2918 | promettent,positive,bing,2 2919 | prominent,positive,bing,1 2920 | promotor,positive,bing,1 2921 | pront,positive,bing,1 2922 | propiziator,positive,bing,1 2923 | propiz,positive,bing,1 2924 | prosper,positive,bing,1 2925 | protegg,positive,bing,1 2926 | protett,positive,bing,1 2927 | protezion,positive,bing,1 2928 | prov,positive,bing,1 2929 | provvident,positive,bing,1 2930 | prudent,positive,bing,1 2931 | prudenz,positive,bing,1 2932 | pul,positive,bing,1 2933 | puliz,positive,bing,1 2934 | puntual,positive,bing,1 2935 | purific,positive,bing,1 2936 | pur,positive,bing,1 2937 | qualific,positive,bing,1 2938 | qui,positive,bing,1 2939 | raccomand,positive,bing,2 2940 | raddrizz,positive,bing,1 2941 | raffin,positive,bing,1 2942 | raffinatezz,positive,bing,2 2943 | raggiant,positive,bing,1 2944 | raggiung,positive,bing,1 2945 | ragionevol,positive,bing,2 2946 | rallegr,positive,bing,1 2947 | rapid-cresc,positive,bing,1 2948 | rapid,positive,bing,1 2949 | rapport,positive,bing,1 2950 | rassicur,positive,bing,1 2951 | ravviv,positive,bing,1 2952 | razional,positive,bing,1 2953 | realizz,positive,bing,1 2954 | recuper,positive,bing,1 2955 | redentr,positive,bing,1 2956 | regal,positive,bing,1 2957 | registr-lavor,positive,bing,1 2958 | regol,positive,bing,1 2959 | resistent,positive,bing,1 2960 | responsabilizz,positive,bing,1 2961 | responsabil,positive,bing,1 2962 | restaur,positive,bing,1 2963 | retribu,positive,bing,1 2964 | rett,positive,bing,1 2965 | riafferm,positive,bing,1 2966 | rianim,positive,bing,1 2967 | ricc,positive,bing,2 2968 | ricchezz,positive,bing,1 2969 | ricc-di-funzio1l,positive,bing,1 2970 | ricett,positive,bing,1 2971 | ricompens,positive,bing,1 2972 | riconcil,positive,bing,1 2973 | riconduc,positive,bing,1 2974 | riconoscent,positive,bing,1 2975 | riconosc,positive,bing,1 2976 | riduzion-dell-stress,positive,bing,1 2977 | riesc,positive,bing,1 2978 | rid,positive,bing,1 2979 | riform,positive,bing,1 2980 | rigener,positive,bing,1 2981 | riguard,positive,bing,1 2982 | rilass,positive,bing,1 2983 | rimbors,positive,bing,1 2984 | rimed,positive,bing,1 2985 | ri1sc,positive,bing,1 2986 | rinfranc,positive,bing,1 2987 | rinfresc,positive,bing,1 2988 | ringiovan,positive,bing,1 2989 | ringraz,positive,bing,1 2990 | rinnov,positive,bing,1 2991 | rinvigor,positive,bing,1 2992 | ripos,positive,bing,1 2993 | riscatt,positive,bing,1 2994 | risolutezz,positive,bing,1 2995 | risol,positive,bing,1 2996 | risp,positive,bing,1 2997 | risparm,positive,bing,2 2998 | risparm-di-cost,positive,bing,1 2999 | risparm-energet,positive,bing,1 3000 | rispett,positive,bing,1 3001 | rispett-dell-legg,positive,bing,1 3002 | risplendent,positive,bing,1 3003 | ristruttur,positive,bing,1 3004 | riusc,positive,bing,1 3005 | rivel,positive,bing,1 3006 | riverent,positive,bing,1 3007 | river,positive,bing,1 3008 | riviv,positive,bing,1 3009 | rivoluzion,positive,bing,1 3010 | rivoluzionar,positive,bing,1 3011 | robust,positive,bing,1 3012 | romant,positive,bing,2 3013 | rose,positive,bing,1 3014 | sagac,positive,bing,1 3015 | saggement,positive,bing,1 3016 | saggezz,positive,bing,1 3017 | sagg,positive,bing,1 3018 | salubr,positive,bing,1 3019 | salut,positive,bing,2 3020 | sal,positive,bing,1 3021 | salvator,positive,bing,1 3022 | salvav,positive,bing,1 3023 | san,positive,bing,1 3024 | san-di-ment,positive,bing,1 3025 | santific,positive,bing,1 3026 | santit,positive,bing,1 3027 | sant,positive,bing,1 3028 | sapient,positive,bing,1 3029 | sbalordit,positive,bing,1 3030 | sbalord,positive,bing,1 3031 | scenic,positive,bing,1 3032 | sciccos,positive,bing,1 3033 | scintill,positive,bing,1 3034 | sconfigg,positive,bing,1 3035 | sconfitt,positive,bing,1 3036 | scopert,positive,bing,1 3037 | semplic,positive,bing,1 3038 | semplif,positive,bing,1 3039 | semplific,positive,bing,1 3040 | sensazional,positive,bing,2 3041 | sensazion,positive,bing,1 3042 | sensibil,positive,bing,1 3043 | sentimental,positive,bing,1 3044 | senz-dolor,positive,bing,1 3045 | senz-dubb,positive,bing,1 3046 | senz-paur,positive,bing,1 3047 | senz-problem,positive,bing,1 3048 | senz-restrizion,positive,bing,1 3049 | senz-rival,positive,bing,1 3050 | senz-sforz,positive,bing,1 3051 | seren,positive,bing,1 3052 | seriet,positive,bing,1 3053 | sexy,positive,bing,1 3054 | sfarz,positive,bing,1 3055 | sicur,positive,bing,1 3056 | signif,positive,bing,1 3057 | simpat,positive,bing,2 3058 | sincer,positive,bing,2 3059 | soav,positive,bing,2 3060 | soavement,positive,bing,2 3061 | socievol,positive,bing,2 3062 | soddisf,positive,bing,2 3063 | soddisfacent,positive,bing,2 3064 | soddisfatt,positive,bing,2 3065 | solid,positive,bing,1 3066 | solidariet,positive,bing,2 3067 | sollet,positive,bing,1 3068 | sollev,positive,bing,1 3069 | soll,positive,bing,1 3070 | sonor,positive,bing,1 3071 | sontuos,positive,bing,1 3072 | sorprendent,positive,bing,3 3073 | sorrid,positive,bing,2 3074 | sorrident,positive,bing,2 3075 | sorris,positive,bing,2 3076 | sostanzial,positive,bing,1 3077 | sostegn,positive,bing,1 3078 | sosten,positive,bing,1 3079 | sostenibil,positive,bing,1 3080 | sostenitor,positive,bing,1 3081 | sovraperform,positive,bing,1 3082 | sovvenzion,positive,bing,1 3083 | spazios,positive,bing,2 3084 | specializz,positive,bing,1 3085 | spensier,positive,bing,1 3086 | spettacol,positive,bing,2 3087 | spin-dorsal,positive,bing,1 3088 | spint,positive,bing,1 3089 | spirit,positive,bing,1 3090 | spiritual,positive,bing,1 3091 | splendid,positive,bing,3 3092 | splendor,positive,bing,3 3093 | spontane,positive,bing,1 3094 | sport,positive,bing,1 3095 | squisit,positive,bing,3 3096 | squis,positive,bing,1 3097 | stabil,positive,bing,1 3098 | stabilizz,positive,bing,1 3099 | staccabil,positive,bing,1 3100 | stagion,positive,bing,1 3101 | statuar,positive,bing,1 3102 | stell,positive,bing,1 3103 | stilizz,positive,bing,1 3104 | stimol,positive,bing,1 3105 | stord,positive,bing,1 3106 | straordinar,positive,bing,3 3107 | strumental,positive,bing,1 3108 | stupend,positive,bing,3 3109 | stup,positive,bing,1 3110 | stupor,positive,bing,1 3111 | stuzzic,positive,bing,2 3112 | sublim,positive,bing,3 3113 | success,positive,bing,2 3114 | successon,positive,bing,2 3115 | sufficient,positive,bing,1 3116 | super,positive,bing,3 3117 | super-in-astuz,positive,bing,1 3118 | superb,positive,bing,3 3119 | superior,positive,bing,2 3120 | superst,positive,bing,1 3121 | support,positive,bing,1 3122 | suprem,positive,bing,1 3123 | supremaz,positive,bing,1 3124 | surreal,positive,bing,1 3125 | svolazz,positive,bing,1 3126 | talent,positive,bing,1 3127 | talentu,positive,bing,1 3128 | tant-megl,positive,bing,1 3129 | tempest,positive,bing,1 3130 | temp-onor,positive,bing,1 3131 | tenac,positive,bing,1 3132 | tener,positive,bing,1 3133 | tent,positive,bing,1 3134 | tesor,positive,bing,1 3135 | titill,positive,bing,1 3136 | toccasan,positive,bing,1 3137 | toller,positive,bing,1 3138 | tonific,positive,bing,1 3139 | ton-rassicur,positive,bing,1 3140 | top,positive,bing,1 3141 | tranquill,positive,bing,1 3142 | trasparent,positive,bing,1 3143 | tregu,positive,bing,1 3144 | tremend,positive,bing,1 3145 | trionfal,positive,bing,1 3146 | trionfant,positive,bing,1 3147 | trionf,positive,bing,1 3148 | trofe,positive,bing,1 3149 | tutt-il-suo-fascin,positive,bing,1 3150 | tutt-tond,positive,bing,1 3151 | ultra-nitid,positive,bing,1 3152 | uman,positive,bing,1 3153 | umil,positive,bing,1 3154 | umilt,positive,bing,1 3155 | umor,positive,bing,1 3156 | umorist,positive,bing,1 3157 | unit,positive,bing,1 3158 | urrà,positive,bing,1 3159 | user-friendly,positive,bing,1 3160 | util,positive,bing,1 3161 | utilizz,positive,bing,1 3162 | val-la-pen,positive,bing,1 3163 | valent,positive,bing,1 3164 | valor,positive,bing,1 3165 | vantagg,positive,bing,1 3166 | varieg,positive,bing,1 3167 | variet,positive,bing,1 3168 | veloc,positive,bing,1 3169 | vener,positive,bing,1 3170 | verac,positive,bing,1 3171 | verific,positive,bing,1 3172 | veritier,positive,bing,1 3173 | ver,positive,bing,1 3174 | vers,positive,bing,1 3175 | versatil,positive,bing,1 3176 | vibrant,positive,bing,1 3177 | vigil,positive,bing,1 3178 | vigor,positive,bing,1 3179 | vinc,positive,bing,1 3180 | vincitor,positive,bing,2 3181 | virtuos,positive,bing,2 3182 | vistos,positive,bing,1 3183 | vittor,positive,bing,1 3184 | vivac,positive,bing,1 3185 | vivid,positive,bing,1 3186 | volentier,positive,bing,2 3187 | zel,positive,bing,1 3188 | zenit,positive,bing,1 3189 | emotegood,positive,bing,1 3190 | emotelov,positive,bing,1 3191 | emotewink,positive,bing,1 3192 | emotekiss,positive,bing,1 3193 | emotewow,positive,bing,1 3194 | emotelol,positive,bing,1 3195 | emoteeheh,positive,bing,1 3196 | emoteah,positive,bing,1 -------------------------------------------------------------------------------- /ScrapeAdvisor.py: -------------------------------------------------------------------------------- 1 | import glob 2 | import os 3 | import subprocess 4 | import threading 5 | import time 6 | import kivy 7 | import logging 8 | 9 | from kivy.app import App 10 | from kivy.lang import Builder 11 | from kivy.uix.boxlayout import BoxLayout 12 | from kivy.uix.image import Image 13 | from kivy.uix.label import Label 14 | from CarouselClass import CarouselApp 15 | from ScraperClass import ScraperClass 16 | 17 | kivy.require("1.9.0") 18 | 19 | kv = """ 20 | : 21 | canvas.before: 22 | Color: 23 | rgba: 0.5, 0.5, 0.5, 1 24 | Rectangle: 25 | size: self.size 26 | pos: self.pos 27 | value: '' 28 | ScrollView: 29 | size: self.size 30 | Label: 31 | padding_x: dp(10) 32 | padding_y: dp(10) 33 | text: root.value 34 | #halign: 'left' 35 | #valign: 'top' 36 | size_hint_y: None 37 | text_size: self.width, None 38 | height: self.texture_size[1] 39 | markup: True 40 | : 41 | canvas: 42 | Color: 43 | rgba: 0.3, 0.3, 0.3, 1 44 | Rectangle: 45 | size: self.size 46 | pos: self.pos 47 | rv: rv 48 | orientation: 'vertical' 49 | GridLayout: 50 | cols: 2 51 | rows: 1 52 | size_hint_y: None 53 | height: dp(50) 54 | padding: dp(8) 55 | spacing: dp(16) 56 | TextInput: 57 | id: input_url 58 | multiline: False 59 | size_hint_x: 6 60 | hint_text: 'http://www.tripadvisor.com/' 61 | padding: dp(10), dp(10), 0, 0 62 | on_text_validate: root.thread_rev(input_url.text) 63 | Button: 64 | text: 'Enter' 65 | on_press: root.thread_rev(input_url.text) 66 | GridLayout: 67 | cols: 3 68 | rows: 1 69 | size_hint_y: None 70 | height: dp(70) 71 | padding: dp(8) 72 | spacing: dp(16) 73 | rv: rv.__self__ 74 | Button: 75 | text: 'Show Reviews' 76 | on_press: root.show_review() 77 | Button: 78 | text: 'Sentiment Analysis' 79 | on_press: root.thread_sent() 80 | Button: 81 | text: 'About' 82 | on_press: root.about() 83 | RecycleView: 84 | id: rv 85 | scroll_type: ['bars', 'content'] 86 | scroll_wheel_distance: dp(114) 87 | bar_width: dp(20) 88 | viewclass: 'Row' 89 | RecycleBoxLayout: 90 | padding: dp(30) 91 | default_size: None, dp(200) 92 | default_size_hint: 1, None 93 | size_hint_y: None 94 | height: self.minimum_height 95 | orientation: 'vertical' 96 | spacing: dp(10) 97 | """ 98 | 99 | Builder.load_string(kv) 100 | 101 | logging.basicConfig(level=logging.INFO) 102 | logger = logging.getLogger(__name__) 103 | 104 | 105 | class Test(BoxLayout): 106 | 107 | def __init__(self, **kwargs): 108 | super().__init__(**kwargs) 109 | self.label = Label(markup=True) 110 | self.img = Image(source='res/about.png') 111 | self.carousel = CarouselApp().build() 112 | self.add_widget(self.label) 113 | self.is_info_visible = True 114 | self.is_rv_visible = True 115 | self.is_img_visible = False 116 | self.is_car_visible = False 117 | self.new_url = False 118 | self.scraper = None 119 | self.lang = "" 120 | 121 | # thread for downloading the reviews 122 | def thread_rev(self, input_url): 123 | # removes older reviews loaded 124 | if self.rv.data: 125 | self.rv.data = [] 126 | 127 | self.new_url = False 128 | 129 | # check for displayed labels/widget 130 | if self.is_rv_visible: 131 | self.remove_widget(self.ids.rv) 132 | self.is_rv_visible = False 133 | 134 | if self.is_car_visible: 135 | self.remove_widget(self.carousel) 136 | self.is_car_visible = False 137 | 138 | if self.is_img_visible: 139 | self.remove_widget(self.img) 140 | self.is_img_visible = False 141 | 142 | # remove all csv files 143 | for f in glob.glob("*.csv"): 144 | os.remove(f) 145 | 146 | # get language 147 | self.get_lang(input_url) 148 | 149 | # and the content of prev R plot 150 | files = glob.glob('Routput/*') 151 | for f in files: 152 | os.remove(f) 153 | 154 | if self.is_info_visible: 155 | self.label.text = '[size=40][b][color=ffffff]Loading reviews[/color][/b][/size]' 156 | else: 157 | self.add_widget(self.label) 158 | self.label.text = '[size=40][b][color=ffffff]Loading reviews[/color][/b][/size]' 159 | self.is_info_visible = True 160 | 161 | # start thread for downloading reviews 162 | thread = threading.Thread(target=self.calculate, args=(input_url,)) 163 | logger.info("Input url: " + input_url) 164 | thread.daemon = True 165 | thread.start() 166 | logger.info("[*] Downloading thread started") 167 | 168 | # thread for sentiment analysis 169 | def thread_sent(self): 170 | thread = threading.Thread(target=self.sentiment) 171 | thread.daemon = True 172 | thread.start() 173 | 174 | # function called when "Equals" is pressed 175 | def calculate(self, calculation): 176 | try: 177 | self.scraper = ScraperClass(calculation) 178 | self.scraper.get_review() 179 | self.label.text = '[size=40][b][color=#4caf50]Reviews loaded[/color][/b][/size]' 180 | 181 | except Exception as e: 182 | logger.error(e) 183 | logger.error("[X] Invalid URL") 184 | time.sleep(1) 185 | self.label.text = '[size=40][b][color=f44336]Invalid URL[/color][/b][/size]' 186 | 187 | # function called when "Show Reviews" is pressed 188 | def show_review(self): 189 | try: 190 | if self.is_info_visible: 191 | self.remove_widget(self.label) 192 | self.is_info_visible = False 193 | 194 | if self.is_car_visible: 195 | self.remove_widget(self.carousel) 196 | self.is_car_visible = False 197 | 198 | if self.is_img_visible: 199 | self.remove_widget(self.img) 200 | self.is_img_visible = False 201 | 202 | if not self.is_rv_visible: 203 | self.add_widget(self.ids.rv) 204 | self.is_rv_visible = True 205 | 206 | self.rv.data = [{'value': '[size=17][b]' + "Title: " + '[/b][/size]' + x[0][ 207 | 'review_title'].lower().capitalize() + "\n" + 208 | '[size=17][b]' + "Review: " + '[/b][/size]' + x[0][ 209 | 'review_body'].lower().capitalize() + "\n" + 210 | '[size=17][b]' + "Date: " + '[/b][/size]' + x[0]['review_date'] + "\n" + 211 | '[size=17][b]' + "User Location: " + '[/b][/size]' + x[0][ 212 | 'user_location'] + "\n" + 213 | '[size=17][b]' + "Rating: " + '[/b][/size]' + x[0]['rating'] + "\n" + 214 | '[size=17][b]' + "Contribution: " + '[/b][/size]' + x[0]['contributions'] + "\n" + 215 | '[size=17][b]' + "Helpful Vote: " + '[/b][/size]' + x[0]['helpful_vote']} for x in 216 | self.scraper.get_item()] 217 | 218 | if not self.rv.data: 219 | self.remove_widget(self.ids.rv) 220 | self.is_rv_visible = False 221 | if self.is_info_visible: 222 | self.label.text = '[size=40][b][color=f44336]No data to load[/color][/b][/size]' 223 | else: 224 | self.add_widget(self.label) 225 | self.label.text = '[size=40][b][color=f44336]No data to load[/color][/b][/size]' 226 | self.is_info_visible = True 227 | 228 | except Exception as e: 229 | logger.error(e) 230 | self.remove_widget(self.ids.rv) 231 | self.is_rv_visible = False 232 | logger.error("[X] No data to load") 233 | if self.is_info_visible: 234 | self.label.text = '[size=40][b][color=f44336]No data to load[/color][/b][/size]' 235 | else: 236 | self.add_widget(self.label) 237 | self.label.text = '[size=40][b][color=f44336]No data to load[/color][/b][/size]' 238 | self.is_info_visible = True 239 | 240 | # function called when "Sentiment Analysis" is pressed 241 | def sentiment(self): 242 | try: 243 | # when the url provided is not changed 244 | if self.new_url: 245 | if self.is_rv_visible: 246 | self.remove_widget(self.ids.rv) 247 | self.is_rv_visible = False 248 | 249 | if self.is_img_visible: 250 | self.remove_widget(self.img) 251 | self.is_img_visible = False 252 | 253 | if not self.is_car_visible: 254 | self.add_widget(self.carousel) 255 | self.is_car_visible = True 256 | 257 | # the url is new 258 | else: 259 | # removes older reviews loaded 260 | if self.is_rv_visible: 261 | self.remove_widget(self.ids.rv) 262 | self.is_rv_visible = False 263 | 264 | if self.is_car_visible: 265 | self.remove_widget(self.carousel) 266 | self.is_car_visible = False 267 | 268 | if self.is_img_visible: 269 | self.remove_widget(self.img) 270 | self.is_img_visible = False 271 | 272 | if self.is_info_visible: 273 | self.label.text = '[size=40][b][color=ffffff]Running R sentiment analysis[/color][/b][/size]' 274 | time.sleep(1) 275 | else: 276 | self.add_widget(self.label) 277 | self.label.text = '[size=40][b][color=ffffff]Running R sentiment analysis[/color][/b][/size]' 278 | time.sleep(1) 279 | self.is_info_visible = True 280 | 281 | # checks if there's a csv file somewhere 282 | if self.scraper.get_filename(): 283 | try: 284 | subprocess.call( 285 | ["C:/Program Files/R/R-3.5.3/bin/x64/Rscript.exe", "Rinput/" + self.lang + ".R", 286 | self.scraper.get_filename() + ".csv"], 287 | shell=True) 288 | self.label.text = '[size=40][b][color=#4caf50]Done[/color][/b][/size]' 289 | time.sleep(1) 290 | self.remove_widget(self.ids.rv) 291 | 292 | # create Carousel object and display it 293 | if not self.is_car_visible: 294 | self.carousel = CarouselApp().build() 295 | self.remove_widget(self.label) 296 | self.is_info_visible = False 297 | self.add_widget(self.carousel) 298 | self.is_car_visible = True 299 | self.new_url = True 300 | 301 | except Exception as e: 302 | logger.error(e) 303 | if self.is_info_visible: 304 | self.label.text = '[size=40][b][color=f44336]No CSV file found[/color][/b][/size]' 305 | else: 306 | self.add_widget(self.label) 307 | self.label.text = '[size=40][b][color=f44336]No CSV file found[/color][/b][/size]' 308 | self.is_info_visible = True 309 | logger.error("[X] No CSV file found") 310 | else: 311 | self.label.text = '[size=40][b][color=f44336]No CSV file found[/color][/b][/size]' 312 | logger.error("[X] No CSV file found") 313 | 314 | except Exception as e: 315 | logger.error(e) 316 | self.label.text = '[size=40][b][color=f44336]No CSV file found[/color][/b][/size]' 317 | logger.error("[X] No CSV file found") 318 | 319 | # function called when "About" is pressed 320 | def about(self): 321 | # check for displayed labels/widget 322 | if self.is_rv_visible: 323 | self.remove_widget(self.ids.rv) 324 | self.is_rv_visible = False 325 | 326 | if self.is_car_visible: 327 | self.remove_widget(self.carousel) 328 | self.is_car_visible = False 329 | 330 | if self.is_info_visible: 331 | self.remove_widget(self.label) 332 | self.is_info_visible = False 333 | 334 | if not self.is_img_visible: 335 | self.add_widget(self.img) 336 | self.is_img_visible = True 337 | 338 | # get language of reviews 339 | def get_lang(self, domain): 340 | if "www.tripadvisor.it" in domain: 341 | self.lang = "it" 342 | 343 | elif "www.tripadvisor.com" in domain: 344 | self.lang = "en" 345 | 346 | else: 347 | logger.error("[X] Language not supported") 348 | 349 | 350 | # main class 351 | class ScrapeAdvisor(App): 352 | def build(self): 353 | return Test() 354 | 355 | 356 | # run baby run run 357 | if __name__ == '__main__': 358 | ScrapeAdvisor().run() 359 | -------------------------------------------------------------------------------- /ScraperClass.py: -------------------------------------------------------------------------------- 1 | import io 2 | import webbrowser 3 | import requests 4 | import unicodecsv as csv 5 | import logging 6 | from bs4 import BeautifulSoup 7 | 8 | DB_COLUMN = 'review_title' 9 | DB_COLUMN1 = 'review_body' 10 | DB_COLUMN2 = 'review_date' 11 | DB_COLUMN3 = 'contributions' 12 | DB_COLUMN4 = 'helpful_vote' 13 | DB_COLUMN5 = 'user_location' 14 | DB_COLUMN6 = 'rating' 15 | 16 | logging.basicConfig(level=logging.INFO) 17 | logger = logging.getLogger(__name__) 18 | 19 | 20 | class ScraperClass: 21 | def __init__(self, url): 22 | self.headers = [ 23 | DB_COLUMN, 24 | DB_COLUMN1, 25 | DB_COLUMN2, 26 | DB_COLUMN3, 27 | DB_COLUMN4, 28 | DB_COLUMN5, 29 | DB_COLUMN6, 30 | ] 31 | self.start_url = [url] 32 | self.lang = 'it' 33 | # self.get_review() 34 | self.item_list = list() 35 | self.dict = dict() 36 | self.filename = "" 37 | 38 | def get_review(self): 39 | for url in self.start_url: 40 | items = self.scrape(url, self.lang) 41 | if not items: 42 | logger.info('No reviews') 43 | else: 44 | # write in CSV 45 | filename = url.split('Reviews-')[1][:-5] + '__' + self.lang 46 | logger.info('filename:', filename) 47 | self.filename = filename 48 | self.write_in_csv(items, filename + '.csv', self.headers, mode='wb') 49 | 50 | def scrape(self, url, lang): 51 | session = requests.Session() 52 | session.headers.update({ 53 | 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0', 54 | }) 55 | items = self.parse(session, url + '?filterLang=' + lang) 56 | return items 57 | 58 | def parse(self, session, url): 59 | # get number of reviews and start getting sub-pages with reviews 60 | logger.info('[parse] url:', url) 61 | soup = self.get_soup(session, url) 62 | if not soup: 63 | logger.error('[parse] no soup:', url) 64 | return 65 | num_reviews = soup.find('span', class_='reviews_header_count').text # get text 66 | num_reviews = num_reviews[1:-1] 67 | num_reviews = num_reviews.replace(',', '') 68 | num_reviews = int(num_reviews) # convert text into integer 69 | logger.info('[parse] num_reviews ALL:', num_reviews) 70 | url_template = url.replace('.html', '-or{}.html') 71 | logger.info('[parse] url_template:', url_template) 72 | items = [] 73 | offset = 0 74 | 75 | while True: 76 | subpage_url = url_template.format(offset) 77 | subpage_items = self.parse_reviews(session, subpage_url) 78 | if not subpage_items: 79 | break 80 | items += subpage_items 81 | if len(subpage_items) < 10: 82 | break 83 | offset += 10 84 | return items 85 | 86 | def get_soup(self, session, url, show=False): 87 | r = session.get(url) 88 | if show: 89 | self.display(r.content, 'temp.html') 90 | if r.status_code != 200: # not OK 91 | logger.info('[get_soup] status code:', r.status_code) 92 | else: 93 | return BeautifulSoup(r.text, 'html.parser') 94 | 95 | def post_soup(self, session, url, params, show=False): 96 | # read HTML from server and convert to Soup 97 | r = session.post(url, data=params) 98 | if show: 99 | self.display(r.content, 'temp.html') 100 | if r.status_code != 200: # not OK 101 | logger.error('[post_soup] status code:', r.status_code) 102 | else: 103 | return BeautifulSoup(r.text, 'html.parser') 104 | 105 | def display(self, content, filename='output.html'): 106 | with open(filename, 'wb') as f: 107 | f.write(content) 108 | webbrowser.open(filename) 109 | 110 | def parse_reviews(self, session, url): 111 | # get all reviews from one page 112 | logger.info('[parse_reviews] url:', url) 113 | soup = self.get_soup(session, url) 114 | 115 | if not soup: 116 | logger.error('[parse_reviews] no soup:', url) 117 | return 118 | 119 | facility_name = soup.find('h1', class_='header heading masthead masthead_h1').text 120 | reviews_ids = self.get_reviews_ids(soup) 121 | if not reviews_ids: 122 | return 123 | 124 | soup = self.get_more(session, reviews_ids) 125 | if not soup: 126 | logger.error('[parse_reviews] no soup:', url) 127 | return 128 | 129 | items = [] 130 | for idx, review in enumerate(soup.find_all('div', class_='reviewSelector')): 131 | badgets = review.find_all('span', class_='badgetext') 132 | 133 | if len(badgets) > 0: 134 | contributions = badgets[0].text 135 | else: 136 | contributions = '0' 137 | 138 | if len(badgets) > 1: 139 | helpful_vote = badgets[1].text 140 | else: 141 | helpful_vote = '0' 142 | user_loc = review.select_one('div.userLoc strong') 143 | 144 | if user_loc: 145 | splitted = user_loc.text.split(",") # we want to delete regions like "Pavia, Lombardia, Italia" 146 | if len(splitted) > 2: 147 | user_loc = splitted[0] + "," + splitted[2] # taking only city and state 148 | else: 149 | user_loc = user_loc.text 150 | else: 151 | user_loc = 'NA' 152 | bubble_rating = review.select_one('span.ui_bubble_rating')['class'] 153 | bubble_rating = bubble_rating[1].split('_')[-1][-2] 154 | item = { 155 | 'review_title': review.find('span', class_='noQuotes').text, 156 | 'review_body': review.find('p', class_='partial_entry').text, 157 | 'review_date': review.find('span', class_='ratingDate')['title'], 158 | 'contributions': contributions, 159 | 'helpful_vote': helpful_vote, 160 | 'user_location': user_loc, 161 | 'rating': bubble_rating 162 | } 163 | 164 | items.append(item) 165 | logger.info('\n--- review ---\n') 166 | dict_item = dict() 167 | for key, val in item.items(): 168 | logger.info(' ', key, ':', val) 169 | dict_item[key] = val 170 | self.item_list.append([dict_item]) 171 | return items 172 | 173 | def get_filename(self): 174 | return self.filename 175 | 176 | def get_reviews_ids(self, soup): 177 | items = soup.find_all('div', attrs={'data-reviewid': True}) 178 | if items: 179 | reviews_ids = [x.attrs['data-reviewid'] for x in items][::2] 180 | logger.info('[get_reviews_ids] data-reviewid:', reviews_ids) 181 | return reviews_ids 182 | 183 | def get_more(self, session, reviews_ids): 184 | url = 'https://www.tripadvisor.com/OverlayWidgetAjax?Mode=EXPANDED_HOTEL_REVIEWS_RESP&metaReferer=Hotel_Review' 185 | payload = { 186 | 'reviews': ','.join(reviews_ids), # ie. "577882734,577547902,577300887", 187 | 'widgetChoice': 'EXPANDED_HOTEL_REVIEW_HSX', 188 | 'haveJses': 'earlyRequireDefine,amdearly,global_error,long_lived_global,apg-Hotel_Review,' 189 | 'apg-Hotel_Review-in,bootstrap,desktop-rooms-guests-dust-en_US,' 190 | 'responsive-calendar-templates-dust-en_US,taevents', 191 | 'haveCsses': 'apg-Hotel_Review-in', 192 | 'Action': 'install', 193 | } 194 | soup = self.post_soup(session, url, payload) 195 | return soup 196 | 197 | def write_in_csv(self, items, filename='results.csv', 198 | headers=None, 199 | mode='w'): 200 | if headers is None: 201 | headers = ['hotel name', 'review title', 'review body', 202 | 'review date', 'contributions', 'helpful vote', 203 | 'user name', 'user location', 'rating'] 204 | logger.info('--- CSV ---') 205 | with io.open(filename, mode) as csvfile: 206 | csv_file = csv.DictWriter(csvfile, headers, encoding='utf-8') 207 | if mode == 'wb': 208 | csv_file.writeheader() 209 | csv_file.writerows(items) 210 | 211 | def get_item(self): 212 | return self.item_list 213 | 214 | # TrpAdvScrp = ScraperClass('http://www.tripadvisor..') 215 | # TrpAdvScrp.get_review() 216 | -------------------------------------------------------------------------------- /ipak.R: -------------------------------------------------------------------------------- 1 | # ipak function: install and load multiple R packages. 2 | # check to see if packages are installed. Install them if they are not, then load them into the R session. 3 | 4 | ipak <- function(pkg){ 5 | new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])] 6 | if (length(new.pkg)) 7 | install.packages(new.pkg, dependencies = TRUE) 8 | sapply(pkg, require, character.only = TRUE) 9 | } 10 | 11 | # usage 12 | packages <- c("dplyr","readr","lubridate","ggplot2","tidytext","tidyverse","stringr","tidyr","scales","broom","purrr", 13 | "widyr","igraph","ggraph","SnowballC","wordcloud","reshape2","TeachingDemos") 14 | ipak(packages) -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | requests == 2.22.0 2 | kivy.deps.sdl2==0.1.18 3 | unicodecsv==0.14.1 4 | Pillow==6.1.0 5 | beautifulsoup4==4.7.1 6 | kivy==1.11.1 7 | -------------------------------------------------------------------------------- /res/about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0x0be/scrapeadvisor/fac295ff99e2428e7ce8c8875f1bd427bb101942/res/about.png --------------------------------------------------------------------------------