¿Cuál es la forma mejor y más simple de agrupar productos por sus nombres?

Para agrupar cualquier cosa, hay varias etapas:

  1. Representa los objetos que tienes como vectores.
  2. Encuentra una medida de similitud entre los vectores.
  3. Ejecute un algoritmo de agrupación en los vectores.
  4. Evaluar los resultados.

Ahora, tus objetos son nombres de productos. (Si puede obtener otros detalles del producto, probablemente le ayudarían). Repasemos las etapas:

1. Nombres => vectores: Tokenice los nombres: comience con la tokenización basada en espacios en blanco, aunque probablemente necesitará algo más elegante. No todos los tokens se crearon de la misma manera: necesitará algo como TF / IDF o la versión BM25 de TF / IDF para pesar los tokens.

2. Medida de similitud: me gusta la ponderación BM25 seguida de la normalización y luego la similitud del coseno. Juega con varias medidas para ver cuál funciona mejor para ti.
Una medida más sofisticada podría usar sinónimos o una ontología para términos cercanos.

3. Algoritmo de agrupamiento: K-means es el más simple, y a veces hace un buen trabajo. Echa un vistazo a reinicios aleatorios o inicialización basada en dosel.

4. Evaluación – esa es una pregunta difícil – primero mira tus resultados para ver si tienen algún sentido. Puede usar algo como BDe o similitud entre grupos versus similitud dentro de grupos para una evaluación numérica.

Hasta ahora esto no depende del lenguaje de programación. No sé mucho sobre las bibliotecas de Ruby. Encontré AI4R :: Inteligencia artificial para Ruby, Ruby, Procesamiento de lenguaje natural y sphinx para Ruby. Probablemente hay otras bibliotecas.

Puede cambiar la mayoría de las etapas aquí y obtener resultados diferentes. Una mención especial va a la agrupación jerárquica: tal vez desee un árbol que agrupe todos los iPhones juntos, y luego iPhones y iPads juntos, etc.

La mejor y más simple forma de agrupar por nombre es reunir un corpus razonable de datos de prueba y luego contratar talentos subcontratados para crear una lista de sinónimos para los sustantivos que le interesan a mano.

Para ser claros, esta no es una buena solución: es frágil, propensa a falsos positivos y falsos negativos, lenta y altamente inflexible.

Sin embargo, dado que solicitó dos criterios que literalmente se cancelan entre sí (simple y mejor), entonces sospecho que tiene expectativas poco realistas sobre una solución posible dado dónde se encuentra. Por lo tanto, construir un diccionario no puede ser peor que no hacer nada en absoluto. Puede darle lo que necesita para demostrar la viabilidad del concepto y la oportunidad de mercado, permitiéndole recaudar suficiente dinero para resolver este problema de manera inteligente.

En el caso de que desee una opción fuera de línea para lidiar con un gran conjunto de nombres de productos aleatorios que solo desea limpiar una sola vez, puede probar Google Refine / OpenRefine. Debería hacer todas las cosas relacionadas con la coincidencia difusa que necesitarías: simplemente no estoy seguro de si es algo que puedes configurar para que se ejecute automáticamente o si todavía estás atascado en el proceso manual.

google-refine – Google Refine, una herramienta poderosa para trabajar con datos desordenados (anteriormente Freebase Gridworks) – Google Project Hosting

More Interesting

¿Qué sería más beneficioso para un estudiante de tercer año de ECE, hacer aprendizaje automático u otros cursos?

En R, ¿qué significa elegir lambda por validación cruzada (cresta, lazo)?

¿Existe alguna medida estadística que demuestre que un clasificador Neural Net con una precisión del 96% en un conjunto de datos de N ejemplos proporcionará una precisión similar en el mundo real?

¿Cuándo veremos una base teórica y una base matemática para el aprendizaje profundo?

¿Qué tan bueno es el ADVI en STAN en la práctica?

¿Qué tan difícil es aprender TensorFlow?

¿Puedo controlar las señales neuronales desde un lugar?

He completado la clase Coursera de Andrew Ng sobre aprendizaje automático. ¿Qué debería hacer después? ¿Qué puedo hacer a continuación?

¿Ha habido alguna investigación sobre cómo las pérdidas de capacitación en la convergencia de los algoritmos de aprendizaje profundo varían con el tamaño de los datos que ingresan?

¿Cuál crees que es la razón detrás de la asociación de Microsoft y Amazon en la tecnología de red neuronal llamada 'Gluon'?

¿Por qué la optimización convexa es tan importante en el aprendizaje automático?

¿Qué sistemas IDS, IPS en Network Security hoy en día son los más adaptables para aprender nuevas amenazas? ¿Hay algún tipo de punto de referencia estándar para medir esto?

¿Dónde puedo aprender sobre los conceptos básicos de la inteligencia artificial?

¿Es el curso de aprendizaje automático de Andrew Ng en Coursera una versión simplificada del curso CS 229: aprendizaje automático que enseñó en Stanford?

¿Cuál es la diferencia entre diferentes tamaños de kernel convolucional como 3 × 3 y 5 × 5? ¿Existe alguna teoría al respecto?