Pregunta

Tengo un problema de agrupar gran cantidad de frases en grupos según sus significados. Esto es similar a un problema cuando se tiene un montón de frases y desea agruparlos por sus significados.

¿Qué algoritmos se sugieren para hacer esto? No sé el número de racimos por adelantado (ya medida que más datos que entran en racimos pueden cambiar así), ¿qué características se usan normalmente para representar cada frase?

Estoy intentando ahora las características más simples con apenas lista de palabras y frases distancia entre definidos como:

introducir descripción de la imagen aquí

(A y B son conjuntos de palabras frase A y B correspondientes)

¿tiene sentido en absoluto?

Estoy tratando de aplicar algoritmo Mean-Shift de la biblioteca scikit a esta distancia, ya que no requiere número de racimos por adelantado.

Si alguien le aconsejará mejores métodos / enfoques para el problema -. Va a ser muy apreciada ya que estoy todavía nuevo en el tema

¿Fue útil?

Solución

Compruebe el Stanford PNL Grupo 's de software de código abierto ( http: //www-nlp.stanford edu / software), en particular, Stanford Clasificador ( http: / /www-nlp.stanford.edu/software/classifier.shtml ). El software está escrito en Java, que probablemente le delicias, pero también tiene algunos enlaces para otros idiomas. Nota, el licencias -. Si va a utilizar su código en productos comerciales, usted tiene que adquirir la licencia comercial

Otra interesante conjunto de librerías de código abierto, en mi humilde opinión adecuado para esta tarea y mucho más, es marco paralelo para aprendizaje automático GraphLab ( http://select.cs.cmu.edu/code/graphlab ), que incluye biblioteca agrupación , la aplicación de diversos algoritmos de agrupación (http://select.cs.cmu.edu/code/graphlab/clustering.html ). Es especialmente adecuado para volumen muy grande de datos (como si tuviera), ya que implementa el modelo MapReduce y, por lo tanto, soportes multinúcleo y multiprocesador procesamiento paralelo .

Lo más probable es consciente de los siguientes, pero voy a mencionar por si acaso. Natural Language Toolkit (NLTK) para Python ( http://www.nltk.org ) contiene módulos para la agrupación / clasificación / categorización de texto. Compruebe el capítulo correspondiente en el NLTK Book: http://www.nltk.org/book/ch06.html .

ACTUALIZACIÓN:

Hablando de algoritmos , parece que has probado la mayoría de los de scikit-learn, tal como se ilustra en este ejemplo la extracción tema: http://scikit-learn.org/stable/auto_examples/applications/topics_extraction_with_nmf.html . Sin embargo, es posible encontrar otras bibliotecas útiles, que implementan una amplia variedad de agrupación algoritmos , incluyendo no negativo matriz de factorización (NMF) . Uno de tales bibliotecas es Python factorización de la matriz (PyMF) con la página de inicio en https://code.google. com / p / pymf y el código fuente en https://github.com/nils-werner/pymf . Otro, aún más interesante, biblioteca, también basado en Python, es NIMFA , que implementa diversos NMF algoritmos http://nimfa.biolab.si . Aquí hay un trabajo de investigación, que describe NIMFA: http://jmlr.org/papers/volume13/zitnik12a/zitnik12a.pdf . He aquí un ejemplo de su documentación, que presenta la solución para el problema de procesamiento de texto muy similar de tema agrupación http://nimfa.biolab.si/nimfa.examples.documents.html .

Licenciado bajo: CC-BY-SA con atribución
scroll top