Para agrupar cualquier cosa, hay varias etapas:
- Representa los objetos que tienes como vectores.
- Encuentra una medida de similitud entre los vectores.
- Ejecute un algoritmo de agrupación en los vectores.
- 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.
- Cómo usar el aprendizaje automático en IoT Hardware Security
- ¿Qué enfoque debo tomar para manejar los datos de desequilibrio para crear un modelo de aprendizaje automático?
- En un juego de billar, ¿puede el mejor robot (diseñado específicamente para esta tarea) derrotar al campeón mundial humano?
- ¿Cómo deciden los científicos computacionales qué estrategia usar para la validación cruzada?
- ¿Qué son los núcleos de difusión?
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.