Quando comparamos o preço do quarto de hotel entre diferentes websites, devemos ter certeza de que estamos comparando maçãs com maçãs
Na ciência da computação, fuzzy string matching é a técnica de encontrar cordas que combinam com um padrão aproximadamente (ao invés de exatamente). Em outra palavra, o fuzzy string matching é um tipo de busca que vai encontrar correspondências mesmo quando os usuários digitam palavras erradas ou digitam apenas palavras parciais para a busca. Também é conhecido como correspondência aproximada de cadeia de caracteres.
Pesquisa de cadeia de caracteres difusa pode ser usada em várias aplicações, tais como:
- Um corrector ortográfico e corrector ortográfico, corrector ortográfico. Por exemplo, um usuário digita “Missisaga” no Google, uma lista de acertos é retornada juntamente com “Mostrando resultados para Mississauga”. Ou seja, a consulta de pesquisa retorna resultados mesmo que a entrada do usuário contenha caracteres adicionais ou ausentes, ou outros tipos de erro ortográfico.
- Um software pode ser usado para verificar se há registros duplicados. Por exemplo, se um cliente é listado várias vezes com diferentes compras na base de dados devido a diferentes ortografias do seu nome (ou seja, Abigail Martin vs. Abigail Martinez) um novo endereço, ou um número de telefone inserido por engano.
Fala de deduplicação, pode não ser tão fácil como parece, em particular se você tiver centenas de milhares de registros. Mesmo a Expedia não faz 100% certo:
Este post vai explicar o que é o fuzzy string matching junto com seus casos de uso e dar exemplos usando a biblioteca Fuzzywuzzy de Python.
Cada hotel tem sua própria nomenclatura para nomear seus quartos, o mesmo cenário vai para a Agência de Viagens Online (OTA). Por exemplo, um quarto no mesmo hotel, Expedia chama “Studio, 1 King Bed with Sofa bed, Corner”, Booking.com pode achar seguro mostrar o quarto simplesmente como um “Corner King Studio”.
Não há nada de errado aqui, mas pode levar a confusão quando queremos comparar a tarifa do quarto entre OTAs, ou uma OTA quer ter certeza que outra OTA siga o acordo de paridade de tarifas. Em outra palavra, para poder comparar preços, temos que ter certeza de que estamos comparando maçãs com maçãs.
Uma das questões mais consistentemente frustrantes para sites e aplicativos de comparação de preços é tentar descobrir se dois itens (ou quartos de hotel) são para a mesma coisa, automaticamente.
Fuzzywuzzy é uma biblioteca Python que usa a distância Levenshtein para calcular as diferenças entre sequências num pacote simples de usar.
A fim de demonstrar, eu crio meu próprio conjunto de dados, ou seja, para a mesma propriedade de hotel, eu pego um tipo de quarto da Expedia, vamos dizer “Suite, 1 King Bed (Parlor)”, então eu faço a correspondência com um tipo de quarto em Booking.com que é “King Parlor Suite”. Com um pouco de experiência, a maioria dos humanos saberia que eles são a mesma coisa. Siga esta metodologia, eu crio um pequeno conjunto de dados com mais de 100 pares de tipos de quartos que podem ser encontrados em Github.
Usando este conjunto de dados, vamos testar como o Fuzzywuzzy pensa. Em outras palavras, estamos usando Fuzzywuzzy para combinar registros entre duas fontes de dados.
import pandas as pddf = pd.read_csv('room_type.csv')
df.head(10)