2011-11-15 33 views
7

Estoy trabajando en un problema de clasificación de texto, estoy tratando de clasificar una colección de palabras en categoría, sí, hay muchas bibliotecas disponibles para clasificación, así que por favor no responda si está sugiriendo usarlas.Clasificación de texto en categorías

Déjenme explicar lo que quiero implementar. (Pensemos por ejemplo)

lista de palabras:

  1. java
  2. programación
  3. lenguaje
  4. do sostenido

lista de categorías.

  1. java
  2. do sostenido

aquí vamos a entrenar al conjunto, como:

  1. mapas de Java a la categoría 1. java
  2. programación mapas a la categoría 1. java
  3. programación de mapas a la categoría 2.c-sharp
  4. mapas idiomas para la categoría 1.java
  5. mapas idiomas para la categoría 2.c sostenido
  6. mapas do sostenido a la categoría 2.c sostenido

Ahora tenemos una frase "La mejor de programación java libro " de la frase dada siguientes palabras son un partido a nuestra "lista de palabras":.

  1. java
  2. programación

"programación" tiene dos categorías asignadas "java" & "c-sharp", por lo que es una palabra común.

"java" está asignado a la categoría "java" solamente.

Así que nuestra categoría de coincidencia para la frase es "java"

Esto es lo que vino a la mente, es esta solución bien, se puede implementar, ¿cuáles son sus sugerencias, cualquier cosa que estoy perdiendo, defectos , etc.

+0

nada, esa es la pregunta, ¿esto va a funcionar, debería dedicar tiempo tratando de implementar esto? –

Respuesta

4

Por supuesto, esto se puede implementar. Si entrena un clasificador Naive Bayes o una SVM lineal en el conjunto de datos correcto (títulos de los libros de programación Java y C#, supongo), debería aprender a asociar el término "Java" con Java, "C#" y ".NET" con C# y "programación" con ambos. Es decir, un clasificador Naive Bayes probablemente aprenda una probabilidad aproximada de Java o C# para términos comunes como "programación" si el conjunto de datos se divide de manera uniforme.

+0

+1 ¿Qué pasa si estoy tratando de clasificar texto bajo 1000 categorías diferentes ...? El clasificador de Naive Bayes será una buena opción ... ¿Puede suceder esto, el texto mientras se prueba arrojará 100 resultados diferentes ... Por favor sugiera ... . – Wazzzy

0

Si es posible, lea la sección llamada "A Naive Classifier" en el capítulo "Document Filtering" en el libro llamado "Programación de la inteligencia colectiva". Aunque los ejemplos están en Python, espero que no le causen muchos problemas.

2

Una manera sencilla de implementar esto es usar Lucene directo (o cualquier motor de indexación de texto). Cree un solo documento Lucene con todos los ejemplos "java" y otro con los ejemplos "C#", y agréguelos al índice. Para clasificar un nuevo documento, O todos los términos en el documento y ejecutar una consulta contra el índice, y tomar la categoría con la puntuación más alta.

Cuestiones relacionadas