Escolar Documentos
Profissional Documentos
Cultura Documentos
April 4, 2020
1 EDA - Team 19
Team 19 * Luis Henrique M O Imagiire * Reinaldo Augusto D Sima * Makoto Ikegame * Natalia
Sales Mesquita
EDA of the followin stores on ReclameAqui (27-03-2020 first 5 pages): * tokestok-loja-online *
tokestok * madeiramadeira * mobly * etna-home-store-loja-online * etna-home-store * casas-bahia-
loja-online * casas-bahia-lojas-fisicas
Second EDA batch of ReclameAqui (04-04-2020): - [x] Lojas Cem - [x] TUTTI MÓVEIS - [x]
Móveis Rainha - [x] Magazine Luiza - [x] Casas bahia - [x] Madeira Madeira - [x] Lojas Guido -
[x] Fabrispuma - [x] Viggore Móveis - [x] Lider Interiores - [x] Lojas Lebes - [x] Openbox2 - [x]
Marabraz - [x] Sylvia Design - [x] Mobly - [x] Inovar Móveis e Colchões - [x] KingStar Loja - [x]
Etna - [x] Tok&Stok - [x] Esplanada Móveis
Our MVP’s target: - Focus on answering customers’ most frequent questions/problems - Stores
ranking - Segmented analysis both online vs. bricks and mortar retailers - Deliver a general snapshot
of the vertical
# Unique reviews
unique_ids = set()
reviewsRA = []
for complaint in agg_jsonls("listing"):
if "review_ID" in complaint and complaint["review_ID"] not in unique_ids:
unique_ids.add(complaint["review_ID"])
reviewsRA.append(complaint)
1
[2]: # Get an example of responses > 0
for review in reviewsRA:
if "responses" in review and len(review["responses"]["business"]) > 0:
pprint(review)
break
2
'também por contato telefônico '
'com o Lucas.',
'datetime': '2020-02-11T18:57:00Z'}],
'result': 'positive',
'seals': [{'seal': 'Nota do atendimento',
'value': '8'}]}},
'review_ID': '100355327',
'tags': ['Móveis em Geral'],
'timeCaptured': '2020-04-03T03:36:27Z',
'title': 'Não entregaram o produto',
'uf': 'BA'}
def extract_days_to_resolution(review):
if "datetime" in review and "reply" in review["responses"]["final"]:
init_dt = datetime.strptime(review["datetime"], '%Y-%m-%dT%H:%M:%SZ')
final_ans_dt = datetime.
,→strptime(review["responses"]["final"]["reply"][0]["datetime"], '%Y-%m-%dT%H:
,→%M:%SZ')
3
def extract_days_to_first_contact(review):
if "datetime" in review and "business" in review["responses"] and␣
,→len(review["responses"]["business"]) > 0:
,→%SZ')
def format_RA_to_df(review):
cols_for_df = ['title', 'description', 'business_name', 'uf', 'city',␣
,→'review_ID', 'datetime', 'timeCaptured']
return r_cp
[5]: title \
0 Não entregaram o produto
1 Descumprimento do prazo e da tratativa
2 Descaso
3 Quero meu dinheiro!!
4 DEVOLUÇÃO.
description business_name \
0 Fiz uma compra na empresa Marabraz online,no d… Marabraz - Loja Online
1 Após atraso na entrega, abri reclamação e minh… Marabraz - Loja Online
2 No dia 06/01/2020 realizei a compra de um armá… Marabraz - Loja Online
3 Comprei um armario na loja online marabraz, na… Marabraz - Loja Online
4 COMPREI CHEGO COM 2 MÊS ATRASADOS. TODO QUEBR… Marabraz - Loja Online
4
2 SP São Paulo 100343397 2020-02-10T13:44:00Z 2020-04-03T03:36:31Z
3 SP São Paulo 100346141 2020-02-10T14:31:00Z 2020-04-03T03:36:31Z
4 PR Cafeara 100346415 2020-02-10T14:36:00Z 2020-04-03T03:36:31Z
[8]: plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
5
Correlation between average response time and whether or not a response was posi-
tive/negative.
We see that complaints that have a positive resolution are solved on average 3 times faster than
the ones with a negative conclusion. Also, the time to first response is half in comparisson with the
negative conclusion. We need to dig deeper to understand the properties of negative and positive
outcomes.
[60]: dff.resolution_outcome = pd.Categorical(dff.resolution_outcome)
dff.groupby("resolution_outcome").mean()
6
50% 10.000000 2.000000
75% 38.000000 12.000000
max 1884.000000 833.000000
[9]: title \
459 DEFEITO DE FABRICAÇÃO
466 Indignação
3224 garantia nao atendida.
description business_name uf \
459 FIZ UMA COMPRA EM 21.01.2014 E CONCORDEI EM A… Sylvia Design SP
466 Minha reclamação hoje é referente a indignação… Sylvia Design SP
3224 comprei um sofá na unidade de sao miguel, que … Móveis Rainha SP
if len(comps)>0:
return comps[0]["responses"]
else:
return None
pprint(get_complaint_conversation(9662698, reviewsRA))
print("============================================================")
pprint(get_complaint_conversation(10178100, reviewsRA))
print("============================================================")
pprint(get_complaint_conversation(8673765, reviewsRA))
{'business': [{'content': 'Boa tarde, Isabel ! A Sylvia Design agradece seu '
'contato e desculpa-se pelo transtorno.Estamos '
'tomando todas as providencias necessárias para a '
'resolução do ocorrido. O departamento responsável '
'entrará em contato posteriormente.Atenciosamente '
7
'Relacionamento com ClienteSylvia Design (11) '
'3033-9505.',
'datetime': '2014-08-07T14:05:00Z'}],
'customer': [{'content': 'VCS NÃO SÓ NAO RESOLVERAM O PROBLEMA, COMO CONTINUO '
'COM O SOFÁ EM CASA SEM ENCOSTO, E NAO QUERO '
'AGUARDAR MAIS 60 DIAS PARA TER OUTRO SOFÁ COM SEI '
'LÁ QUANTOS OUTROS PROBLEMAS. QUERO MEU DINHEIRO DE '
'VOLTA, E AINDA ESTA SEMANA ESTAREI INDO A LOJA '
'REITERAR MEU DESACORDO.ESTOU AGUARDANDO ATE HJ A '
'TAL DA CAROLINE LIGAR !',
'datetime': '2014-08-18T21:45:00Z'}],
'final': {'reply': [{'content': 'Resposta: só resolvi por conta do advogado.',
'datetime': '2019-10-03T14:43:00Z'}],
'result': 'positive',
'seals': [{'seal': 'Voltaria a fazer negócio?', 'value': 'Não'}]}}
============================================================
{'business': [{'content': 'Boa tarde Tais.A empresa Sylvia Design agradece o '
'seu contato.Informações serão encaminhadas ao setor '
'responsável, referente a negociações somente na '
'loja.AtenciosamenteRelacionamento com o '
'clienteSylvia Design',
'datetime': '2014-10-01T13:37:00Z'}],
'customer': [],
'final': {'reply': [{'content': 'Péssimo atendimento',
'datetime': '2019-09-25T15:00:00Z'}],
'result': 'negative',
'seals': [{'seal': 'Voltaria a fazer negócio?', 'value': 'Não'}]}}
============================================================
{'business': [{'content': 'Prezado Sr. Luis, Não estamos conseguindo entrar em '
'contato , o técnico pode ir hoje no local ? No '
'aguardo Atenciosamente,Móveis Rainha',
'datetime': '2014-04-29T17:45:00Z'},
{'content': 'Prezado Sr. Luis, Conforme o técnico nos passou o '
'Sr. viajou, estaremos no aguardo para solucionar o '
'problema no dia 05 ou 06/05. Atenciosamente,Móveis '
'Rainha',
'datetime': '2014-04-30T10:36:00Z'}],
'customer': [{'content': 'Vcs tem meu telefone, tanto que o técnico me ligou '
'ontem msm, antes de vcs postarem essa resposta! '
'porém não foi agendado a visita, pois no horário em '
'que ele queria fazer a visita eu já não tinha '
'disponibilidade.',
'datetime': '2014-04-30T10:23:00Z'}],
'final': {'reply': [{'content': 'são bastante enrolados.',
'datetime': '2018-11-21T12:01:00Z'}],
'result': 'positive',
'seals': []}}
8
Investigating high values for “days until first response”
[10]: dff.loc[dff.days_to_first_contact > 600].head(2)
[10]: title \
6269 Descaso com o consumidor, produto com defeito …
6276 Móvel danificado em 2 entregas!!!
description \
6269 Sou de Resende-RJ, no mês de abril fui até a l…
6276 Na data de 21/01/2014 efetuei a compra de uma …
days_to_first_contact resolution_outcome
6269 657.0 NaN
6276 659.0 NaN
================================================================
{'business': [{'content': 'enviado atraves do e-mail.',
'datetime': '2016-06-29T12:47:00Z'}],
'customer': [{'content': 'Depois de mais de 2 anos da compra do sofá '
'(24/04/2014), meu caso ainda não foi resolvido, não '
'me mandaram os pés do sofá que eles mesmos '
'danificaram com a entrega, não atendem os '
'telefones, não respondem os emails e ainda vem aqui '
'no reclame aqui e mente que me enviaram um email. '
'MENTIRA! Eles são totalmente omissos com o '
'consumidor e não estão interessados em reparar e '
'resolver nenhum problema que eles causaram. Por '
'isso volto a repetir não comprem NADA, '
'absolutamente NADA nessa loja, pois são enganadores '
'e [Editado pelo Reclame Aqui].',
'datetime': '2016-06-29T13:17:00Z'}],
'final': {}}
================================================================
{'business': [{'content': 'Boa Tarde pedimos a gentileza de finalizar a '
'reclamação. Att',
9
'datetime': '2016-02-11T15:36:00Z'}],
'customer': [],
'final': {}}
================================================================
{'business': [{'content': 'Boa Tarde, pedimos a gentileza de finalizar a '
'reclamação !',
'datetime': '2016-02-11T15:40:00Z'}],
'customer': [],
'final': {'reply': [{'content': 'Muito demorado',
'datetime': '2016-02-11T23:50:00Z'}],
'result': 'positive',
'seals': [{'seal': 'Voltaria a fazer negócio?', 'value': 'Não'},
{'seal': 'Nota do atendimento', 'value': '4'}]}}
================================================================
{'business': [{'content': 'Estofado entregue pedimos a gentileza de finalizar '
'a reclamação . Att',
'datetime': '2016-02-11T15:43:00Z'}],
'customer': [],
'final': {}}
================================================================
{'business': [{'content': 'Pedimos a gentileza de finalizar a reclamação !',
'datetime': '2016-02-11T15:34:00Z'}],
'customer': [],
'final': {}}
================================================================
{'business': [{'content': 'Bom dia Sr. AkropoleReferente ao ocorrido , '
'pedimos nossas sinceras desculpas em nome da Open '
'Box2.Estamos a sua disposição para qualquer duvida '
'ou esclarecimento no e-mail sac2@openbox2.com.br '
'.Nosso objetivo é, atender com satisfação e '
'presteza nossos consumidores . Favor não finalizar '
'a reclamação caso o problema não tenha sido '
'resolvido , postar uma replica que entraremos em '
'contato com a finalidade de sanar o problema '
'causado .Se a mesma já foi solucionada , favor '
'avaliar o nosso atendimento .Att',
'datetime': '2019-05-21T11:02:00Z'}],
'customer': [],
'final': {}}
================================================================
{'business': [{'content': 'Boa tardeSra. Ana Paula Pedimos nossas sinceras '
'desculpas em nome da OpenBox2.O nosso objetivo é '
'atender os nossos consumidores com presteza '
'.Estamos a sua disposição Att',
'datetime': '2019-05-22T17:41:00Z'}],
'customer': [],
'final': {'reply': [{'content': 'Gerente Renan extremamente atencioso, '
'preocupado com o cliente, coerente. '
10
'Certamente ganharam uma cliente pela '
'preocupação com o pos venda.',
'datetime': '2018-01-31T10:20:00Z'}],
'result': 'positive',
'seals': []}}
================================================================
{'business': [{'content': 'Boa tarde, Gabriel.A empresa Sylvia Design '
'agradece, e desculpa-se novamente pelo transtorno. '
'Caso tenha alguma duvida por favor entre em contato '
'pelo SAC.Atenciosamente Relacionamento com o '
'Cliente Sylvia Design',
'datetime': '2015-08-12T17:17:00Z'}],
'customer': [],
'final': {'reply': [{'content': 'Problema resolvido',
'datetime': '2014-02-13T09:13:00Z'}],
'result': 'positive',
'seals': [{'seal': 'Nota do atendimento', 'value': '8'}]}}
================================================================
{'business': [{'content': 'Agradecemos seu contato e estamos a disposição para '
'maiores esclarecimentos.',
'datetime': '2015-09-16T11:16:00Z'}],
'customer': [],
'final': {'reply': [{'content': 'Eu precisei ir até a loja e cancelar '
'diretamente com o gerente, o SAC não '
'consegue resolver nada.',
'datetime': '2014-02-24T08:27:00Z'}],
'result': 'positive',
'seals': [{'seal': 'Voltaria a fazer negócio?', 'value': 'Não'}]}}
================================================================
{'business': [{'content': 'Agradecemos seu contato e estamos a disposição para '
'maiores esclarecimentos.',
'datetime': '2015-09-16T11:15:00Z'}],
'customer': [{'content': 'Não foi Resolvido me enviaram uma nota fiscal '
'falsa tudo em árabe e nem registraram no '
'sistema da nota fiscal paulista, vou ter '
'que processar vocês?solucionem isso ae',
'datetime': '2014-02-10T20:05:00Z'}],
'final': {'reply': [{'content': 'OK', 'datetime': '2014-04-24T10:16:00Z'}],
'result': 'positive',
'seals': [{'seal': 'Voltaria a fazer negócio?', 'value': 'Não'}]}}
================================================================
{'business': [{'content': 'Agradecemos seu contato e estamos a disposição para '
'maiores esclarecimentos.',
'datetime': '2015-09-16T11:19:00Z'}],
'customer': [{'content': 'Sem nenhum contato para informar sobre a entrega do '
'meu sofá e da troca do bau da cama',
'datetime': '2013-11-29T09:00:00Z'},
{'content': 'A cama box foi entregue no sábado dia '
11
'07/12/2013.mas meu SOFÁ não veio. lembrando qeu o '
'prazo de vocês era de 7 a 30 dias.hoje completa-se '
'30 dias e NÃO ESTOU COM MEU SOFÁ. POSSO ENTÃO NÃO '
'QUERER PAGAR UMA PARCELA, VISTO QUE ESTOU A 30 '
'DIAS COM MEU BEM ADQUIRIDO SEM TÊ-LO.',
'datetime': '2013-12-09T20:20:00Z'},
{'content': 'Impressionante como até hoje 18/12/2013 não tive a '
'entrega do meu SOFÁ com PROMETIDO PELA CAROLINA '
'(SAC - ATENDIMENTO CLIENTE).Estamos desde o dia '
'09/11/2013 quando depois de 2 semanas consegui que '
'retirassem meu SOFÁ que estava com barulho desde '
'sua montagemPrazo 7 a 30 dias para entrega de '
'acordo com o setor de manutenção porque disseram '
'que não poderia ser feita a troca do móvel.Bom dia '
'09/12 liguei e tive a informação que não tinha '
'chego o movel da fábrica.Liguei dia 10/12 e a mesma '
'história e que a entrega seria feia dia 14/12Dia 13 '
'fui informada que o movel já tinha saido da fabrica '
'e seria entregue dia 18.Bom liguei hoje pela manhã '
'e como esperava a CAROLINA disse que não seria '
'entregue. Que teria que aguardar.Palhaçada..Até '
'quando?O NOME DE VOCÊS NÃO DEVEM ESTAR PREOCUPADOS, '
'VISTO QUE SEQUER RESPONDEM OS EMAILS QUE ENVIO '
'SOLICITANDO UM POSICIONAMENTO.FALE CONOSCO, EMAIL '
'PROPRIO E OUTRA RECLAMAÇÃO NO RECLAME AQUI.Pedido '
'01A-1-6338',
'datetime': '2013-12-18T11:50:00Z'}],
'final': {'reply': [{'content': 'Desrespeitto',
'datetime': '2014-09-27T20:42:00Z'}],
'result': 'positive',
'seals': [{'seal': 'Voltaria a fazer negócio?', 'value': 'Não'}]}}
================================================================
{'business': [{'content': 'Agradecemos seu contato e estamos a disposição para '
'maiores esclarecimentos.',
'datetime': '2015-09-16T11:18:00Z'}],
'customer': [{'content': 'Nem se quer tentaram entrar em contato. Nem se qr '
'querem resolver. Incompetentes.',
'datetime': '2013-12-12T14:52:00Z'}],
'final': {'reply': [{'content': 'não gostei. péssimo produto. e não me '
'contataram.',
'datetime': '2015-03-18T13:26:00Z'}],
'result': 'negative',
'seals': [{'seal': 'Voltaria a fazer negócio?', 'value': 'Não'}]}}
================================================================
{'business': [{'content': 'Agradecemos seu contato e estamos a disposição para '
'maiores esclarecimentos.',
'datetime': '2015-09-16T11:18:00Z'}],
'customer': [],
12
'final': {'reply': [{'content': 'O espelho do rack foi trocado e me conformei '
'com os amassados da mesa e os rasgos no '
'sofá. Registro aqui que, nunca mais compro '
'produtos da Sylvia Design.',
'datetime': '2014-02-04T11:12:00Z'}],
'result': 'positive',
'seals': [{'seal': 'Voltaria a fazer negócio?', 'value': 'Não'}]}}
================================================================
{'business': [{'content': 'Agradecemos seu contato e estamos a disposição para '
'maiores esclarecimentos.',
'datetime': '2015-09-16T11:17:00Z'}],
'customer': [],
'final': {'reply': [{'content': 'Muito tempo para resolver!',
'datetime': '2014-02-06T12:21:00Z'}],
'result': 'positive',
'seals': [{'seal': 'Voltaria a fazer negócio?', 'value': 'Não'}]}}
We discovered two new dynamics from this investigation. First, high values from “days until
resolution” are due to users forgetting to close the complaint ticket and only doing it years later
(when they probably logged backed to the website for another complaint). Second, the unsual high
values for “days to first reply” are due to company revisiting older complaints and asking the user
to close the ticket (probably to increase their response rate that is shown at their profile screen).
We will take this in consideration when modeling and further analysis.
[101]: fig,ax = plt.subplots(figsize=(10, 5))
sns.barplot(x="days_to_first_contact",
y="days_to_resolution",
hue="resolution_outcome",
data=dff.groupby(["days_to_first_contact", "resolution_outcome"]).
,→count().head(20).reset_index(),ax=ax)
13
[15]: answered_perc = round(dff.days_to_first_contact.count()/dff.shape[0] * 100, 2)
print(f"Total of answered complaints : {answered_perc}%")
business_name
Magazine Luiza - Loja Online 0.00
Casas Bahia - Loja Online 1.74
Tok&Stok - Loja Online 6.38
Casas Bahia - Lojas Físicas 8.24
MadeiraMadeira 11.73
Casas Bahia - Marketplace 12.04
Etna Home Store - Loja Online 13.04
Etna Home Store 22.22
Magazine Luiza - Loja Física 26.14
Tok&Stok - Loja Física 34.29
Mobly 41.38
Lojas Cem 55.38
Lojas Guido 61.11
TUTTI MÓVEIS 65.70
Marabraz - Loja Online 88.00
93.64
Marabraz - Lojas Físicas 94.93
14
Openbox2 97.30
Inovar Móveis e Colchões 98.32
Sylvia Design 99.91
Móveis Rainha 100.00
Fabrispuma 100.00
Viggore Móveis 100.00
dtype: float64
height = view["days_to_resolution"].sort_values()
bars = view["business_name"]
y_pos = np.arange(len(bars))
fig, ax = plt.subplots(figsize=(6,6))
plt.barh(y_pos, height)
plt.yticks(y_pos, bars)
plt.title('Day to resolution per company')
plt.show()
15
[88]: view = dff.groupby('business_name').agg({'days_to_first_contact': 'mean'}).
,→reset_index().dropna()
height = view["days_to_first_contact"].sort_values()
bars = view["business_name"]
y_pos = np.arange(len(bars))
fig, ax = plt.subplots(figsize=(6,6))
plt.barh(y_pos, height)
plt.yticks(y_pos, bars)
plt.title('Days to first contact per company')
plt.show()
Investigation of ’ ’ stores
We see that it must been some sort of bug while scraping data from RA. We have descriptions
pointing towards different stores, so it is not a single store problem.
[20]: dff.loc[dff["business_name"]=='']
[20]: title \
73 Atraso na entrega
16
74 Absurdo
89 COMPREI, PAGUEI e NÃO RECEBI O PRUDUTO.
132 Recebi um armário com 2 peças faltando.
488 Empresa horrivel
… …
9484 Mau atendimento montagem
9519 ENTREGA FORA DE PRAZO
9572 Falta de Respeito com consumidor
9583 Indignada
9588 Devolução do dinheiro
description business_name uf \
73 Comprei os moveis pedido 501056490, compra apr… SP
74 Fiz uma compra no dia 21/11/2019 de um guarda … SP
89 COMPREI UM GUARDA ROUPA NO DIA 29/01/2020 (PED… SP
132 Recebi um armário com 2peças faltando e entrar… RJ
488 Comprei um produtos pela Marabraz que era pra … SP
… … … ..
9484 Boa noite!Fizemos uma grande compra na loja da… SP
9519 Fui na loja da R Catumbi na ultima segunda fei… SP
9572 No dia 3/5/2017 fui na loja com meu marido com… SP
9583 No dia 18/04/2017 fui até a loja 128 marabraz … SP
9588 Eu comprei um sofá na loja da Vila Maria pague… SP
17
9583 2020-04-03T18:18:13Z 0.0 0.0
9588 2020-04-03T18:18:13Z 0.0 0.0
resolution_outcome
73 NaN
74 negative
89 NaN
132 NaN
488 NaN
… …
9484 NaN
9519 positive
9572 positive
9583 positive
9588 positive
Tag analysis
[21]: unique_tags = set()
for review in reviewsRA:
if "tags" in review:
for tag in review["tags"]:
unique_tags.add(tag)
18
'Assistência técnica e Garantia',
'Assistência técnica indisponível',
'Atendimento na Loja',
'Atraso na entrega',
'Atraso na entrega do produto',
'Atraso no reembolso por cancelamento',
'Balanças',
'Bancos e banquetas',
'Berço desmontável',
'Bikes',
'Bolsas',
'Bolsas e Malas',
'Bonecos e Bonecas',
'Braço quebrado',
'Braço solto',
'Brinquedos e jogos',
'Brinquedos eletrônicos',
'Brinquedos para bebês',
'Cabeceira',
'Cadeira bamba',
'Cadeiras',
'Cafeteiras e Chaleiras',
'Caixas de som e fone de ouvido',
'Cama, Mesa e Banho',
'Camas e camas-box',
'Canais de Atendimento',
'Cartão de crédito',
'Cartões de Crédito',
'Celular',
'Celulares e Smartphones',
'Chapinhas (Pranchas)',
'Churrasqueira',
'Chuveiro elétrico',
'Chuveiros e Aquecedores',
'Climatizador de ar',
'Clubes de Compras e Vantagens',
'Coifa e depurador',
'Colchão irregular',
'Colchões',
'Colchões e acessórios',
'Componentes, peças e acessórios',
'Comportamento do profissional',
'Computadores all in one',
'Console (Videogame)',
'Controle remoto',
'Controles e Joysticks',
'Conversor digital',
'Cooktop',
19
'Cortina',
'Cristaleiras',
'Câmera',
'Danos ao imóvel',
'Decoração',
'Deformado',
'Demora no atendimento',
'Demora no reparo',
'Desacordo Comercial',
'Desconfortável',
'Descosturado',
'Desgaste prematuro',
'Desligando sozinha',
'Desligando sozinho',
'Dificuldade para abrir-fechar a porta',
'Divergência de valores',
'Eletrodomésticos',
'Eletroeletrônicos',
'Eletroportáteis',
'Encosto com problema',
'Encosto quebrado',
'Entrega',
'Equipamentos de Beleza e Estética',
'Equipamentos de academia',
'Equipamentos de rede-Wireless',
'Equipe de Atendimento',
'Escovas - Modeladores - Babyliss',
'Esquentando',
'Estado de conservação da loja',
'Estofamento manchado',
'Estofamento rasgado',
'Estorno do valor pago',
'Estrado quebrado',
'Falta de peças',
'Falta de peças para reparo',
'Farmácias',
'Fazendo muito barulho',
'Ferro de passar',
'Fila',
'Fios e cabos',
'Fogão-Forno',
'Fone de ouvido',
'Forma de pagamento indisponível',
'Frigobar',
'Fritadeira elétrica',
'Funcionários despreparados',
'Fôrmas e assadeiras',
'Games e Jogos',
20
'Gavetas não abrem-fecham',
'Gel',
'Geladeira-Refrigerador',
'Guarda-Roupas',
'Higiene e Limpeza Pessoal',
'Iluminação e Elétrica',
'Impressoras',
'Incompatibilidade',
'Inferior ao vendido',
'Informática',
'Instalação-Reparo não concluídos',
'Jogo de cama',
'Jogos',
'Lava louças',
'Lavadora de roupas e Tanquinho',
'Leitores de Ebooks',
'Lento',
'Lençol',
'Liga e desliga sozinho',
'Liquidificadores',
'Livros',
'Lixeiras',
'Louças',
'Louças e Metais',
'MP3 Player',
'Maquiagem de preço',
'Marketplace',
'Mau Atendimento',
'Mau atendimento no SAC',
'Mesa bamba',
'Mesa de jantar',
'Mesa quebrada',
'Mesa riscada',
'Mesas e Cadeiras',
'Micro-ondas',
'Milhas',
'Mixers e Processadores de alimentos',
'Mochilas',
'Molas quebradas',
'Monitores',
'Montagem',
'Má qualidade do produto',
'Máquinas de cortar o cabelo',
'Móveis',
'Móveis Infantis',
'Móveis Modulados',
'Móveis Planejados',
'Móveis em Geral',
21
'Móveis para Escritório',
'Móveis para Jardim e Piscina',
'Notebooks',
'Não acende',
'Não aguenta peso',
'Não atende',
'Não carrega',
'Não conecta à intenet',
'Não consigo agendar',
'Não consigo fazer operação por telefone',
'Não encontrei meu problema',
'Não gela',
'Não liga',
'Não recebi',
'Organizadores de cozinha',
'Outro Tipo de produto/Serviço',
'Outro problema',
'Outros',
'Painéis para TV',
'Panela',
'Panela elétrica',
'Perdendo fio',
'Perfumarias',
'Perfume',
'Pernas quebradas',
'Peças erradas',
'Peças faltando',
'Peças quebradas',
'Pisos e Revestimentos Vinílicos',
'Plafon',
'Players de DVD-Blue Ray',
'Poltronas',
'Pontos',
'Porta Livros',
'Portas',
'Portas e Janelas',
'Potes',
'Prateleiras e cantoneiras',
'Problema com garantia estendida',
'Problema nas bocas do fogão',
'Problemas com a tela',
'Problemas com as ligações',
'Problemas com lojas de móveis',
'Problemas com o Atendimento',
'Problemas com o Site',
'Problemas de coluna causados pelo colchão',
'Problemas de sinal',
'Problemas na Loja',
22
'Problemas na finalização da compra',
'Problemas para utilizar aplicativos',
'Produto com defeito',
'Produto com peças faltando',
'Produto danificado',
'Produto errado',
'Produto indisponível',
'Produto não parece original',
'Produto não recebido',
'Produto não reparado',
'Produto quebrou com pouco tempo de uso',
'Produto rasgado',
'Produto usado',
'Produtos divergentes',
'Projeto divergente',
'Promoção',
'Propaganda Enganosa',
'Propaganda enganosa',
'Pré venda e Projeto',
'Pé quebrado',
'Qualidade do Produto',
'Qualidade do produto',
'Qualidade do serviço prestado',
'Rack e bancadas',
'Relógios',
'Sabonete líquido',
'Secador de cabelo',
'Secadora de roupa e centrífuga',
'Serviço não incluso na garantia',
'Site fora do ar-Lento',
'Sites e portais',
'Smartphone',
'Sofás e Estofados',
'TV',
'Tablets',
'Talheres',
'Tampa trincada-quebrada',
'Tapetes',
'Tapetes e Carpetes',
'Tecido de baixa qualidade',
'Teclados',
'Tela manchada',
'Tela quebrada',
'Telefones fixos (aparelhos)',
'Toalhas',
'Travesseiros',
'Troca-Devolução de produto',
'Utilidades domésticas',
23
'Valor de frete',
'Vazando água',
'Ventiladores e Circuladores de ar',
'Vidro quebrado',
'Vidros',
'Vidros e Espelhos'}
We found that we can aggregate tags into macro categories, removing redundant tags. We look
forward to developing more structure in the future.
[22]: tag_map = {
"others": {'Lento',
'Não encontrei meu problema',
'Outro Tipo de produto/Serviço',
'Outro problema',
'Outros'},
'products': {'Acessórios de Vestuário',
'Acessórios para Bebê',
'Acessórios para Carros',
'Alto falantes',
'Aparadores',
'Aparelho de jantar',
'Aparelhos de musculação',
'Aparelhos de som',
'Ar condicionado',
'Armários de cozinha',
'Aromatizantes e Difusores',
'Artigos Religiosos',
'Artigos para bebê',
'Aspiradores e vassouras',
'Balanças',
'Bancos e banquetas',
'Berço desmontável',
'Bikes',
'Bolsas',
'Bolsas e Malas',
'Bonecos e Bonecas',
'Brinquedos e jogos',
'Brinquedos eletrônicos',
'Brinquedos para bebês',
'Cabeceira',
'Cadeiras',
'Cafeteiras e Chaleiras',
'Caixas de som e fone de ouvido',
'Cama, Mesa e Banho',
24
'Camas e camas-box',
'Celular',
'Celulares e Smartphones',
'Chapinhas (Pranchas)',
'Churrasqueira',
'Chuveiro elétrico',
'Chuveiros e Aquecedores',
'Climatizador de ar',
'Clubes de Compras e Vantagens',
'Coifa e depurador',
'Colchões',
'Colchões e acessórios',
'Componentes, peças e acessórios',
'Computadores all in one',
'Console (Videogame)',
'Controle remoto',
'Controles e Joysticks',
'Conversor digital',
'Cooktop',
'Cortina',
'Cristaleiras',
'Câmera',
'Decoração',
'Eletrodomésticos',
'Eletroeletrônicos',
'Eletroportáteis',
'Equipamentos de Beleza e Estética',
'Equipamentos de academia',
'Equipamentos de rede-Wireless',
'Escovas - Modeladores - Babyliss',
'Farmácias',
'Ferro de passar',
'Fios e cabos',
'Fogão-Forno',
'Fone de ouvido',
'Frigobar',
'Fritadeira elétrica',
'Fôrmas e assadeiras',
'Games e Jogos',
'Gel',
'Geladeira-Refrigerador',
'Guarda-Roupas',
'Higiene e Limpeza Pessoal',
'Iluminação e Elétrica',
'Impressoras',
'Informática',
'Jogo de cama',
25
'Jogos',
'Lava louças',
'Lavadora de roupas e Tanquinho',
'Leitores de Ebooks',
'Lençol',
'Liquidificadores',
'Livros',
'Lixeiras',
'Louças',
'Louças e Metais',
'MP3 Player',
'Mesa de jantar',
'Mesas e Cadeiras',
'Micro-ondas',
'Milhas',
'Mixers e Processadores de alimentos',
'Mochilas',
'Monitores',
'Máquinas de cortar o cabelo',
'Móveis',
'Móveis Infantis',
'Móveis Modulados',
'Móveis Planejados',
'Móveis em Geral',
'Móveis para Escritório',
'Móveis para Jardim e Piscina',
'Notebooks',
'Organizadores de cozinha',
'Painéis para TV',
'Panela',
'Panela elétrica',
'Perfumarias',
'Perfume',
'Pisos e Revestimentos Vinílicos',
'Plafon',
'Players de DVD-Blue Ray',
'Poltronas',
'Pontos',
'Porta Livros',
'Portas',
'Portas e Janelas',
'Potes',
'Prateleiras e cantoneiras',
'Rack e bancadas',
'Relógios',
'Sabonete líquido',
'Secador de cabelo',
26
'Secadora de roupa e centrífuga',
'Smartphone',
'Sofás e Estofados',
'TV',
'Tablets',
'Talheres',
'Tapetes',
'Tapetes e Carpetes',
'Teclados',
'Telefones fixos (aparelhos)',
'Toalhas',
'Travesseiros',
'Utilidades domésticas',
'Ventiladores e Circuladores de ar',
'Vidros',
'Vidros e Espelhos'},
"product_issues": {
'Amassado',
'Braço quebrado',
'Braço solto',
'Cadeira bamba',
'Atraso na entrega',
'Atraso na entrega do produto',
'Colchão irregular',
'Danos ao imóvel',
'Deformado',
'Desconfortável',
'Descosturado',
'Desgaste prematuro',
'Desligando sozinha',
'Desligando sozinho',
'Dificuldade para abrir-fechar a porta',
'Encosto com problema',
'Encosto quebrado',
'Entrega',
'Esquentando',
'Estofamento manchado',
'Estofamento rasgado',
'Estrado quebrado',
'Falta de peças',
'Falta de peças para reparo',
'Fazendo muito barulho',
'Gavetas não abrem-fecham',
'Incompatibilidade',
'Inferior ao vendido',
'Instalação-Reparo não concluídos',
'Liga e desliga sozinho',
27
'Mesa bamba',
'Mesa quebrada',
'Mesa riscada',
'Molas quebradas',
'Montagem',
'Má qualidade do produto',
'Não acende',
'Não aguenta peso',
'Não atende',
'Não carrega',
'Não conecta à intenet',
'Não gela',
'Não liga',
'Não recebi',
'Perdendo fio',
'Pernas quebradas',
'Peças erradas',
'Peças faltando',
'Peças quebradas',
'Problema nas bocas do fogão',
'Problemas com a tela',
'Problemas de coluna causados pelo colchão',
'Problemas de sinal',
'Produto com defeito',
'Produto com peças faltando',
'Produto danificado',
'Produto errado',
'Produto indisponível',
'Produto não parece original',
'Produto não recebido',
'Produto não reparado',
'Produto quebrou com pouco tempo de uso',
'Produto rasgado',
'Produto usado',
'Produtos divergentes',
'Projeto divergente',
'Pé quebrado',
'Qualidade do Produto',
'Qualidade do produto',
'Tampa trincada-quebrada',
'Tecido de baixa qualidade',
'Tela manchada',
'Tela quebrada',
'Vazando água',
'Vidro quebrado',
},
"business_issues": {
28
'Aplicativos',
'Atendimento na Loja',
'Atraso no reembolso por cancelamento',
'Cartão de crédito',
'Cartões de Crédito',
'Canais de Atendimento',
'Comportamento do profissional',
'Demora no atendimento',
'Demora no reparo',
'Desacordo Comercial',
'Divergência de valores',
'Equipe de Atendimento',
'Estado de conservação da loja',
'Estorno do valor pago',
'Fila',
'Forma de pagamento indisponível',
'Funcionários despreparados',
'Maquiagem de preço',
'Marketplace',
'Mau Atendimento',
'Mau atendimento no SAC',
'Não consigo agendar',
'Não consigo fazer operação por telefone',
'Problema com garantia estendida',
'Problemas com as ligações',
'Problemas com lojas de móveis',
'Problemas com o Atendimento',
'Problemas com o Site',
'Problemas na Loja',
'Problemas na finalização da compra',
'Problemas para utilizar aplicativos',
'Troca-Devolução de produto',
'Promoção',
'Propaganda Enganosa',
'Propaganda enganosa',
'Pré venda e Projeto',
'Qualidade do serviço prestado',
'Serviço não incluso na garantia',
'Site fora do ar-Lento',
'Sites e portais',
'Valor de frete',
'Assistência técnica e Garantia',
'Assistência técnica', 'Assistência técnica indisponível',
}
}
29
[28]: # Adding Macro categories
for review in reviewsRA:
if "tags" in review:
macro_tags = []
for tag in review["tags"]:
for macro, vals in tag_map.items():
if tag in vals:
macro_tags.append(macro)
review["macro_tags"] = macro_tags
30
products 60 124
product_issues 20 29
[4 rows x 23 columns]
sns.barplot(x="value",y="index",
hue="issue_type",
data=perc_macro_tags_df[["business_issues", "product_issues",␣
,→"others"]].reset_index().melt(id_vars=["index"], var_name="issue_type"),␣
,→ax=ax)
31
[107]: <matplotlib.axes._subplots.AxesSubplot at 0x7f11619082d0>
tags_per_businesses
32
Louças 0 0
Produto quebrou com pouco tempo de uso 0 0
Clubes de Compras e Vantagens 0 0
… .. …
Milhas 0 0
Outro problema 4 41
Portas e Janelas 0 0
Colchões e acessórios 0 0
Perdendo fio 0 0
33
Perdendo fio 0
Lojas Guido \
Falta de peças para reparo 0
Encosto com problema 0
Louças 0
Produto quebrou com pouco tempo de uso 0
Clubes de Compras e Vantagens 0
34
… …
Milhas 0
Outro problema 1
Portas e Janelas 0
Colchões e acessórios 0
Perdendo fio 0
35
Falta de peças para reparo 0
Encosto com problema 0
Louças 0
Produto quebrou com pouco tempo de uso 0
Clubes de Compras e Vantagens 1
… …
Milhas 1
Outro problema 37
Portas e Janelas 0
Colchões e acessórios 0
Perdendo fio 0
36
'Desgaste prematuro',
'Divergência de valores',
'Entrega',
'Equipe de Atendimento',
'Estorno do valor pago',
'Falta de peças',
'Maquiagem de preço',
'Mau Atendimento',
'Mau atendimento no SAC',
'Montagem',
'Má qualidade do produto',
'Não atende',
'Não consigo agendar',
'Não encontrei meu problema',
'Outro problema',
'Pernas quebradas',
'Peças erradas',
'Peças quebradas',
'Problema com garantia estendida',
'Problemas com o Atendimento',
'Problemas com o Site',
'Problemas na finalização da compra',
'Produto com defeito',
'Produto com peças faltando',
'Produto errado',
'Produto indisponível',
'Produto não recebido',
'Propaganda Enganosa',
'Pé quebrado',
'Qualidade do Produto',
'Site fora do ar-Lento',
'Troca-Devolução de produto',
'Valor de frete']
tags_per_businesses.loc[problem_categories]
37
Maquiagem de preço 0 0
Mau Atendimento 1 0
Mau atendimento no SAC 0 2
Montagem 0 0
Má qualidade do produto 0 1
Não atende 0 0
Não consigo agendar 0 0
Não encontrei meu problema 2 23
Outro problema 4 41
Pernas quebradas 0 0
Peças erradas 0 0
Peças quebradas 0 0
Problema com garantia estendida 0 0
Problemas com o Atendimento 1 0
Problemas com o Site 0 0
Problemas na finalização da compra 0 4
Produto com defeito 1 4
Produto com peças faltando 0 2
Produto errado 0 2
Produto indisponível 0 2
Produto não recebido 0 12
Propaganda Enganosa 0 0
Pé quebrado 0 0
Qualidade do Produto 0 1
Site fora do ar-Lento 0 0
Troca-Devolução de produto 0 8
Valor de frete 0 2
38
Outro problema 121
Pernas quebradas 1
Peças erradas 20
Peças quebradas 58
Problema com garantia estendida 1
Problemas com o Atendimento 138
Problemas com o Site 0
Problemas na finalização da compra 0
Produto com defeito 151
Produto com peças faltando 36
Produto errado 80
Produto indisponível 35
Produto não recebido 0
Propaganda Enganosa 18
Pé quebrado 5
Qualidade do Produto 26
Site fora do ar-Lento 0
Troca-Devolução de produto 0
Valor de frete 1
39
Produto com defeito 58
Produto com peças faltando 32
Produto errado 51
Produto indisponível 11
Produto não recebido 237
Propaganda Enganosa 0
Pé quebrado 0
Qualidade do Produto 7
Site fora do ar-Lento 0
Troca-Devolução de produto 62
Valor de frete 1
40
Site fora do ar-Lento 0 0
Troca-Devolução de produto 1 0
Valor de frete 0 0
41
Demora no reparo 1
Desgaste prematuro 0
Divergência de valores 0
Entrega 0
Equipe de Atendimento 0
Estorno do valor pago 0
Falta de peças 0
Maquiagem de preço 0
Mau Atendimento 1
Mau atendimento no SAC 0
Montagem 0
Má qualidade do produto 2
Não atende 0
Não consigo agendar 0
Não encontrei meu problema 57
Outro problema 68
Pernas quebradas 0
Peças erradas 0
Peças quebradas 0
Problema com garantia estendida 3
Problemas com o Atendimento 0
Problemas com o Site 0
Problemas na finalização da compra 1
Produto com defeito 8
Produto com peças faltando 0
Produto errado 4
Produto indisponível 0
Produto não recebido 1
Propaganda Enganosa 0
Pé quebrado 0
Qualidade do Produto 0
Site fora do ar-Lento 0
Troca-Devolução de produto 0
Valor de frete 0
42
Mau Atendimento 0 7 …
Mau atendimento no SAC 10 0 …
Montagem 0 0 …
Má qualidade do produto 8 3 …
Não atende 0 0 …
Não consigo agendar 0 1 …
Não encontrei meu problema 31 40 …
Outro problema 44 46 …
Pernas quebradas 0 2 …
Peças erradas 2 0 …
Peças quebradas 4 0 …
Problema com garantia estendida 0 0 …
Problemas com o Atendimento 0 0 …
Problemas com o Site 0 0 …
Problemas na finalização da compra 1 0 …
Produto com defeito 11 11 …
Produto com peças faltando 4 1 …
Produto errado 5 1 …
Produto indisponível 0 0 …
Produto não recebido 11 0 …
Propaganda Enganosa 0 0 …
Pé quebrado 0 0 …
Qualidade do Produto 0 0 …
Site fora do ar-Lento 0 0 …
Troca-Devolução de produto 6 0 …
Valor de frete 1 0 …
Lojas Guido \
Assistência técnica e Garantia 1
Atraso na entrega 3
Canais de Atendimento 0
Demora no reparo 2
Desgaste prematuro 0
Divergência de valores 0
Entrega 1
Equipe de Atendimento 0
Estorno do valor pago 0
Falta de peças 0
Maquiagem de preço 0
Mau Atendimento 0
Mau atendimento no SAC 0
Montagem 1
Má qualidade do produto 1
Não atende 0
Não consigo agendar 0
Não encontrei meu problema 0
Outro problema 1
43
Pernas quebradas 0
Peças erradas 0
Peças quebradas 0
Problema com garantia estendida 0
Problemas com o Atendimento 0
Problemas com o Site 0
Problemas na finalização da compra 0
Produto com defeito 2
Produto com peças faltando 0
Produto errado 0
Produto indisponível 0
Produto não recebido 0
Propaganda Enganosa 0
Pé quebrado 0
Qualidade do Produto 0
Site fora do ar-Lento 0
Troca-Devolução de produto 0
Valor de frete 0
44
Produto com peças faltando 0
Produto errado 2
Produto indisponível 0
Produto não recebido 3
Propaganda Enganosa 0
Pé quebrado 0
Qualidade do Produto 0
Site fora do ar-Lento 0
Troca-Devolução de produto 0
Valor de frete 1
45
Troca-Devolução de produto 0 0
Valor de frete 0 0
46
Desgaste prematuro 0 0
Divergência de valores 1 1
Entrega 0 0
Equipe de Atendimento 3 0
Estorno do valor pago 5 6
Falta de peças 0 0
Maquiagem de preço 0 0
Mau Atendimento 0 3
Mau atendimento no SAC 2 0
Montagem 0 0
Má qualidade do produto 1 5
Não atende 1 0
Não consigo agendar 0 6
Não encontrei meu problema 9 3
Outro problema 18 5
Pernas quebradas 1 0
Peças erradas 0 1
Peças quebradas 0 0
Problema com garantia estendida 0 0
Problemas com o Atendimento 16 0
Problemas com o Site 4 0
Problemas na finalização da compra 1 0
Produto com defeito 2 4
Produto com peças faltando 0 0
Produto errado 1 3
Produto indisponível 0 0
Produto não recebido 2 0
Propaganda Enganosa 3 0
Pé quebrado 0 2
Qualidade do Produto 0 0
Site fora do ar-Lento 0 0
Troca-Devolução de produto 1 0
Valor de frete 0 0
47
Mau atendimento no SAC 0 0
Montagem 0 1
Má qualidade do produto 7 0
Não atende 0 0
Não consigo agendar 1 0
Não encontrei meu problema 1 11
Outro problema 2 14
Pernas quebradas 0 0
Peças erradas 0 0
Peças quebradas 0 0
Problema com garantia estendida 0 0
Problemas com o Atendimento 0 0
Problemas com o Site 0 0
Problemas na finalização da compra 0 0
Produto com defeito 1 3
Produto com peças faltando 0 0
Produto errado 1 1
Produto indisponível 0 3
Produto não recebido 0 0
Propaganda Enganosa 0 0
Pé quebrado 0 0
Qualidade do Produto 0 2
Site fora do ar-Lento 0 0
Troca-Devolução de produto 0 0
Valor de frete 0 0
stop_words = set(stopwords.words("portuguese"))
without_stop_words = []
48
sentence = word_cloud_text
words = nltk.word_tokenize(sentence)
for word in words:
if word not in stop_words:
without_stop_words.append(word)
dff.head()
[24]: title \
0 Estorno de entrega
1 Nao entregaram no prazo e descaso não retornam…
2 Insatisfação com o produto
49
3 Produto entregue errado e quebrado
4 Produto entregue com defeito, aguardando a tro…
description \
0 Eu comprei uma mesa no dia 29.01.2019 a vista …
1 Comprei em 26.01 moveis para quarto e mesa sa…
2 No dia 05/01/2018 fiz uma compra a vista na lo…
3 Boa tarde! Adquiri uma cama box marron com tec…
4 Em novembro comprei um sofá na loja inovar de …
days_to_first_contact resolution_outcome \
0 0.0 NaN
1 0.0 positive
2 0.0 NaN
3 0.0 NaN
4 0.0 NaN
cleaned_review
0 comprei mesa dia 29012019 vista prazo entrega …
1 comprei 2601 moveis quarto mesa sala jantar se…
2 dia 05012018 fiz compra vista loja inovar jaca…
3 boa tarde adquiri cama box marron tecido sued…
4 novembro comprei sofá loja inovar sao sebastiã…
AllReviews = dff['cleaned_review']
word_freq.most_common(20)
50
[25]: [('dia', 14417),
('loja', 13062),
('entrega', 9157),
('dias', 8173),
('compra', 7572),
('produto', 6937),
('contato', 6152),
('sofá', 5871),
('pois', 5201),
('prazo', 4967),
('comprei', 4958),
('pedido', 4336),
('nada', 3839),
('empresa', 3423),
('marabraz', 3297),
('pra', 3149),
('problema', 3057),
('gerente', 2938),
('hoje', 2796),
('agora', 2785)]
51
s vieram entregar móveis entr
strativas entrega creio fuja
edor iria entregar antes natal
ter prazo entrega escolhi agor
o agendou entrega 17h30 chega
ealizaram entrega dia 2201 ag
problemas entrega devidamente
rico duas entregas ploblemas
ra antes entregar pra gerar m
p agendar entrega pois produto
bag_of_words = vec.transform(corpus)
sum_words = bag_of_words.sum(axis=0)
words_freq = [(word, sum_words[0, idx]) for word, idx in vec.vocabulary_.
,→items()]
def top_k_ngrams(word_tokens,n,k):
n_gram_counter = Counter(n_gram_strings)
most_common_k = n_gram_counter.most_common(k)
pprint(most_common_k)
#n-grams
word_tokens = nltk.word_tokenize(all_reviews_text)
top_k_ngrams(word_tokens, 3, 10)
52
('10 dias úteis', 205),
('4 dias úteis', 203),
('loja sylvia design', 201)]
53
loja marabraz 632
comprei sofá 627
hoje dia 616
efetuei compra 604
dias uteis 568
inovar_word_freq.most_common(20)
sylvia_word_freq.most_common(20)
54
[35]: [('sofá', 2382),
('loja', 2356),
('dia', 1871),
('entrega', 1256),
('dias', 1157),
('pois', 1007),
('compra', 959),
('sylvia', 893),
('mesa', 889),
('contato', 879),
('produto', 862),
('design', 759),
('prazo', 712),
('comprei', 702),
('vendedor', 701),
('empresa', 662),
('sac', 621),
('cadeiras', 565),
('problema', 565),
('disse', 552)]
55
1.4 Google Business Store Dataset
[24]: pprint(caption_reviews[0:3])
56
BR',
'username': 'Rauana Cristina Salas Calvo'},
{'caption': 'gostp somente dos eletrodomésticos',
'id_review':
'ChdDSUhNMG9nS0VJQ0FnSUNjcVlDem1RRRABGhZscGN4amx3NnJsSy1jdS1DbWxMbG9n',
'n_photo_user': 0,
'n_review_user': 20,
'rating': 4.0,
'relative_date': '6 dias atrás',
'retrieval_date': '2020-03-21T15:38:25Z',
'url_user': 'https://www.google.com/maps/contrib/113547853182606933472?hl=pt-
BR',
'username': 'Thayane Vitoria'}]
Here we have less data to work with and most of them does not include a caption/description, so
we might need a larger number of points to make a deep analysis. However, since this is not a
complaint focused platform, we expect to have more positive responses from the users (and that
can be seen by the 4.25 average rating of our sample data) - allowing us to draw a better overall
picture of the store.
We conclude that the majority (~86%) of the companies do not respond, but we also noticed that
when spitted by company, there are differences between them (there are companies that do not
respond at all). Regarding the most common problems, we see that the main problems are regarding
customer support and delivery. From our word cloud and the n-grams analysis, we found that the
most common words are those related to the problems (“atendimento” -> support, “entrega” ->
delivery …), reinforcing our previous findings.
We found that we will need more data points in our final dataset, given that we want to do a
deep analysis on every store. We want to have better estimates on response time and get data on
negative conclusion (we only got positive conclusions in this sample). Thus, we will be scraping
data every day from today onward. The data features are good, specially for ReclameAQUI data,
we will have a broad feature space to build from the complaints description that will help to guide
57
our ratings. For the Google Business data, we will adapt the scraper to store the geolocation of
location. Additionally, as we are drawing from multiple sources (namely ReclameAQUI, Google
Business and Facebook Reviews) that classify businesses differently, we will also have to look into
how to aggregate data at different levels in order to achieve fruitful results.
In this new analysis, we have almost 10k of data points and develop a more general understanding
of our data. Found specific dynamics underlying weird values and had ideas on how to better
aggregate our data sources.
3.0.1 Nonsense max values for “days until resolution” and “days to first reply”
With the new batch of data, we found very weird max values for “days until resolution” (1800+
days) and “days to first reply” (500+ days). Investigating further, we uncovered two dynamics
from this investigation.
First, high values from “days until resolution” are due to users forgetting to close the complaint
ticket and only doing it years later (when they probably logged backed to the website for another
complaint). Second, the unsual high values for “days to first reply” are due to company revisiting
older complaints and asking the user to close the ticket (probably to increase their response rate
that is shown at their profile screen). We will take this in consideration when modeling and doing
further analysis.
We found that we can aggregate complaints’ tags into macro categories to create better overall
understanding of the problem. We also found that there are many problems tagged as “others”,
we plan to dig deeper and see if we can develop nlp models to “re-tag” them based on similar
complaints. Also, we want to break these tags into more specific category groups that might be of
users’ interests in the future.
Previously, we saw that the majority of the complaints were not answered, but now we have the
inverse conclusion. What we found is that newly complaints (as the ones that we scrape from the
firsts pages) take a while to receive a response, so our previous batch was highly biased.
Also, we found out that there are only a few companies that have very low response rates. This is
strange because nowadays the companies are looking forward to having good relations with their
clients. And it is also curious that the companies that are in this situation are the larger ones.
One way we try to explain that is that these stores have a lot of comments per day and the
companies just haven’t had the time to answer the complaints yet. Thus, we will intensify the
scrapping effort on these companies pages and get as many historical data as possible.
58
3.0.4 NLP analysis
In general, an NLP analysis of the dataset shows that most complaints made against furniture
retailers revolve around words related to the order (order, shop, buy, store) or to the actual delivery
of the product (day, delivery, days, arrival). A k-gram investigation of the issue confirms our
findings and word sets such as “5 working days” and “delivery date” are on top of the list. We
then proceeded to a side-by-side comparison between 2 similar sized businesses: Sylvia Design and
Inovar. A word frequency analysis shows us that both experience most customer inquires regarding
couches, however, their approaches to delivering their mecharndise differ somewhat. Sylvia Design
delivers in 45 to 60 days while Inovar’s delivery is 15 days shorter.
59