in

Una guía sobre cómo construir un algoritmo de búsqueda difusa con FuzzyWuzzy y HMNI

0cEtDiJ3RqYpu6fVo

Una guía sobre cómo construir un algoritmo de búsqueda difusa con FuzzyWuzzy y HMNI

Cheng

5 de marzo·6 min de lectura

0*cEtDiJ3RqYpu6fVo
Foto de Markus Spiske en Unsplash

Buscar con FuzzyWuzzy

seatgeek / fuzzywuzzy

Encadenamiento de cadenas difuso como un jefe. Utiliza la distancia de Levenshtein para calcular las diferencias entre secuencias en un …

github.com

# Using PIP via PyPI
pip install fuzzywuzzy
# Or the following to install python-Levenshtein too
pip install fuzzywuzzy[speedup]
# Sample Dataset
df = pd.DataFrame(index =['AMAZON', 'Netflix', 'PayPal', 'Apple', 'Spotify', 'Apple', 'Facebook', 'Google', 'Starbucks'],
columns = ['AMZ', 'PP', 'FACEBK', 'SPTF*', 'APPL', 'STARBK', 'GG', 'Starbucks TORONTO', 'NFLIX'])
# Print
df
1*SRtzp2UvMgqghd18XYJ9Sg

Conjunto de datos de muestra
# Customized similarity function with FuzzyWuzzy
def similarity_fuzzy(word1, word2):

score = fuzz.ratio(word1, word2)

d = score/100

return d
from tqdm import tqdmfor i in tqdm(range(8)): # range in number of rows 

for j in range(9): # range in number of columns

df.loc[df.index[i], df.columns[j]] = similarity_fuzzy(str(df.index[i]), str(df.columns[j]))

df
1*BrbhImkWi mRJ0g6jOQZ9w

Salida de FuzzyWuzzy

Busca con el HMNI

Christopher-Thornton / hmni

Coincidencia aproximada de nombres con aprendizaje automático. Realice tareas comunes de coincidencia de nombres difusos, incluida la puntuación de similitud …

github.com

Coincidencia aproximada de nombres con aprendizaje automático

Apilamiento de algoritmos fonéticos, métricas de cadenas e incrustación de caracteres para la coincidencia semántica de nombres

haciadatascience.com

# Using PIP via PyPI
pip install hmni
import hmni
matcher = hmni.Matcher(model='latin')
def similarity_hmni(word1, word2):

d = matcher.similarity(word1, word2)

return d
1*oZdqM6k4HpquASNeRWLvTQ

Salida del HMNI

Buscar con un algoritmo integrado

def similarity_calculator(word1, word2):

score_1 = fuzz.ratio(word1, word2) # score from fuzzywuzzy

score_2 = matcher.similarity(word1, word2) # score from hmni

score_1 = score_1/100

score = 0.2*score_1 + 0.8*score_2 # customize your own weights

return score
1*M39qjhpfIiCu0y pFCnnBA

Salida de un algoritmo integrado

Último paso

# Return a new column 'Max' that contains the alternative names for each brand input
df['Max'] = df.astype(float).idxmax(axis=1)
# Create a new dataframe 'result' to display only the input & output columns
result = pd.DataFrame(list(df.index), columns=['Input'])
result['Alternative Names'] = list(df.Max)
result
1*p9AJ5X5mhCO nhY8QHqGdQ

Tabla de marcas alternativas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

V2HAR5AxrF4e4pYaoZnXMG 1200 80

Ofertas de iPhone XR: obtenga los mejores precios y ofertas para septiembre de 2021

oracle social share 480 database

¿Qué es el procesamiento de transacciones en línea (OLTP)?