¿Cómo hacer crecer una lista de palabras relacionadas basadas en palabras clave iniciales?

19

Recientemente vi una característica interesante que alguna vez estuvo disponible en las Hojas de cálculo de Google: comienza escribiendo algunas palabras clave relacionadas en celdas consecutivas, por ejemplo: "azul", "verde", "amarillo", y genera automáticamente palabras clave similares (en este caso , otros colores). Vea más ejemplos en este video de YouTube .

Me gustaría reproducir esto en mi propio programa. Estoy pensando en usar Freebase, y funcionaría así intuitivamente:

  1. Recupere la lista de palabras dadas en Freebase;
  2. Encuentre su "denominador (es) común" y construya una métrica de distancia basada en esto;
  3. Clasifique otros conceptos basados ​​en su "distancia" a las palabras clave originales;
  4. Mostrar los siguientes conceptos más cercanos.

Como no estoy familiarizado con esta área, mis preguntas son:

  • ¿Hay una mejor manera de hacer esto?
  • ¿Qué herramientas están disponibles para cada paso?
nassimhddd
fuente
Mi conjetura es que esto se basa en temas de aprendizaje en un gran corpus.
tchakravarty
Si desea encontrar su explicación, creo que había un documento sobre el método subyacente llamado Google Sets.
jamesmf
1
Este problema se llama "expansión de consulta".
Emre

Respuestas:

15

El algoritmo word2vec puede ser una buena forma de recuperar más elementos para una lista de palabras similares. Es un algoritmo de "aprendizaje profundo" no supervisado que se ha demostrado previamente con datos de entrenamiento basados ​​en Wikipedia (los scripts de ayuda se proporcionan en la página de códigos de Google).

Actualmente hay implementaciones de C y Python . Este tutorial de Radim Řehůřek , autor de la biblioteca de modelado de temas Gensim , es un excelente lugar para comenzar.

La demostración de "tema único" en el tutorial es un buen ejemplo de recuperar palabras similares a un solo término (intente buscar en "rojo" o "amarillo"). Debería ser posible extender esta técnica para encontrar las palabras que tienen la mayor similitud general con un conjunto de palabras de entrada.

joews
fuente
5

¿Ha considerado un enfoque basado en la frecuencia que explota la coincidencia simple de palabras en corpus? Al menos, eso es lo que he visto que la mayoría de la gente usa para esto. Creo que podría tratarse brevemente en el libro de Manning y Schütze, y parece recordar algo como esto como una tarea en la escuela de posgrado ...

Más información aquí: http://nlp.stanford.edu/IR-book/html/htmledition/automatic-thesaurus-generation-1.html

Para este paso:

Clasifique otros conceptos basados ​​en su "distancia" a las palabras clave originales;

Hay varias métricas de similitud semántica que podría considerar. Aquí hay un enlace a algunas diapositivas que preparé para un proyecto de clase usando algunas de estas métricas de similitud en WordNet: http://www.eecis.udel.edu/~trnka/CISC889-11S/lectures/greenbacker-WordNet-Similarity. pdf

Charlie Greenbacker
fuente
3

Este es uno de los buenos problemas donde el alcance puede variar de una tarea a un proyecto de tamaño de Google.

De hecho, puede comenzar con la coincidencia de las palabras (por ejemplo, probabilidad condicional). Descubrirá rápidamente que obtiene la lista de palabras vacías relacionadas con la mayoría de las palabras simplemente porque son muy populares. El uso de la elevación de la probabilidad condicional se encargará de las palabras de detención, pero hará que la relación sea propensa a errores en un pequeño número (la mayoría de sus casos). Puede probar Jacard, pero como es simétrico, habrá muchas relaciones que no encontrará.

Entonces puede considerar relaciones que aparecen solo a corta distancia de la palabra base. Puede (y debe) considerar la base de relaciones en el corpus general (por ejemplo, Wikipedia) y el usuario específico (por ejemplo, sus correos electrónicos).

Muy pronto tendrá muchas medidas de relación, cuando todas las medidas sean buenas y tengan alguna ventaja sobre las demás.

Para combinar tales medidas, me gusta reducir el problema a un problema de clasificación.

Debe crear un conjunto de datos de paris de palabras y etiquetarlas como "está relacionado". Para construir un gran conjunto de datos etiquetados, puede:

  • Use fuentes de palabras relacionadas conocidas (por ejemplo, buenas categorías antiguas de Wikipedia) para los positivos
  • La mayor parte de la palabra no conocida como relacionada no está relacionada.

Luego use todas las medidas que tenga como características de los pares. Ahora está en el dominio del problema de clasificación supervisada. Cree un clasificador en el conjunto de datos, evaluado de acuerdo con sus necesidades y obtenga una medida de similitud que se ajuste a sus necesidades.

DaL
fuente