2010-03-23 17 views
6

Creo que esta es una pregunta interesante, al menos para mí.Definir el contexto de una palabra - Python


que tienen una lista de palabras, digamos:

foto, gratis, búsqueda, imagen, CSS3, css, tutoriales, diseño web, tutorial, Google, China, la censura, la política , Internet

y yo tenemos una lista de contextos:

  • Programación
  • Noticias
  • Tecnología
  • Diseño Web

tengo que tratar de palabras coinciden con el contexto apropiado/contextos, si es posible.

Quizás descubriendo relaciones de palabras de alguna manera.

alt text


¿Alguna idea?

Ayuda sería muy apreciada!

+2

No creo que haya una solución preparada para eso. Tal vez algunos algoritmos de aprendizaje automático? –

+1

Por favor intente y enmarque mejor el problema. Por ejemplo: a) son las palabras dentro de la "lista de palabras" [a priori] completamente independientes o podemos inferir algunas su "contexto" a partir de palabras vecinas. b) es la lista de contexto predefinido o debería el algoritmo descubrir esto c) puede una palabra simultáneamente pertenecer a contextos múltiples d) cómo se relaciona esto con el árbol de palabras centrado en la imagen de "Voz" ... – mjv

+1

@RadiantHex: En vista de las pocas respuestas hasta ahora, puede ver por qué sugiero que se enmarque mejor el problema ... '¡Las preguntas vagas engendran respuestas vagas!' – mjv

Respuesta

3

Parece que es más un problema de categorización/ontología que NLP. Pruebe WordNet para una ontología estándar.

No veo ningún NLP real en su problema establecido, pero si necesita algún análisis semántico o un analizador intente NLTK.

+0

@ Adam: ¡muchas gracias! ¡Esto es realmente útil! :) – RadiantHex

2

¿De dónde vienen estas palabras? ¿Vienen de textos reales? Si lo son, entonces es un problema clásico de minería de datos. Lo que necesita hacer es colocar su conjunto de documentos en la matriz donde las filas representan de qué documento proviene la palabra y las columnas representan las palabras en los documentos.

Por ejemplo, si tiene dos documentos como éste:

D1: la necesidad de encontrar un sentido. D2: necesidad de separar las manzanas de las naranjas

que Matrix se verá así:

 Need to find meaning Apples Oranges Separate From 
D1: 1  1 1  1  0  0  0  0 
D2: 1  1 0  0  1  1  1  1 

Esto se llama plazo mediante la matriz documento

Después de haber recogido esta estadística se puede utilizar algoritmos como K-Means al grupo documentos similares juntos. Como ya sabes cuántos conceptos tienes, tus tareas deberían ser un poco más fáciles.K-medias es algoritmo muy lento, por lo que puede tratar de optimizar el uso de técnicas tales como SVD

2

acabo de encontrar esto hace un par de días: ConceptNet

Es una ontología común, por lo que podría no ser tan específica como desearía, pero tiene una API de Python y puede descargar su base de datos completa (actualmente, alrededor de 1 GB descomprimido). Solo tenga en cuenta su licensing restrictions.

Si leyó the papers que fueron publicados por el equipo que lo desarrolló, puede obtener algunas ideas sobre cómo relacionar sus palabras con conceptos/contextos.

+0

@tgray: ¡muchas gracias! Estoy leyendo los documentos – RadiantHex

1

La respuesta a su pregunta obviamente depende de la taxonomía de destino en la que intenta mapear sus términos. Una vez que haya decidido esto, necesitará averiguar qué tan detallados deben ser los conceptos. WordNet, como se ha sugerido en otras respuestas, le dará sinones, es decir, conjuntos de términos que son más o menos sinónimos, pero que tendrá que mapear a conceptos como 'Diseño web' o 'Noticias del mundo' por algún otro mecanismo desde estos no están codificados en WordNet. Si está apuntando a una categorización semántica muy amplia, podría usar nodos de concepto de alto nivel de WordNet que diferencien, p. (subiendo en la jerarquía) humano de animal, animal de plantas, sustancias de sólidos, concreto de cosas abstractas, etc.

Otro tipo de taxonomía que puede ser bastante útil para usted es el sistema de categoría de Wikipedia. Esta no es solo una idea espontánea que acabo de presentar, sino que ha habido a lot of work para obtener ontologías reales de las categorías de Wikipedia. Eche un vistazo al Java Wikipedia Library - la idea sería encontrar un artículo de Wikipedia para el término en cuestión (por ejemplo, 'css3'), extraer las categorías a las que pertenece este artículo, y elegir las mejores con respecto a algún criterio (es decir, 'programación ',' tecnología 'y' desarrollo web '). Dependiendo de lo que esté tratando de hacer, este último paso (elegir la mejor de varias categorías) puede ser difícil o no.

Consulte here para obtener una lista de otras ontologías/bases de conocimiento que podría utilizar.

+0

@ferdy ¡Oh Dios mío! Tuve la idea de usar API de Google para buscar artículos relacionados de Wikipedia anoche, ya que las palabras clave como 'css3' podrían dar problemas. Creo que podría ir con su sugerencia, ¡gracias por la respuesta tan informativa! – RadiantHex

+0

Me alegro de poder ayudar :) – ferdystschenko

Cuestiones relacionadas