Encontrar palabras relacionadas (específicamente objetos físicos) a una palabra específica

StackOverflow https://stackoverflow.com/questions/610399

  •  03-07-2019
  •  | 
  •  

Pregunta

Estoy tratando de encontrar palabras (específicamente objetos físicos) relacionadas con una sola palabra. Por ejemplo:

Tenis : raqueta de tenis, pelota de tenis, zapatilla de tenis

Snooker : taco de billar, bola de billar, tiza

Ajedrez : tablero de ajedrez, pieza de ajedrez

Librería : libro

He intentado usar WordNet, específicamente la relación semántica meronym; sin embargo, este método no es consistente como lo muestran los resultados a continuación:

Tenis : saque, volea, falta de pie, punto de ajuste, devolución, ventaja

Snooker : nombre

Ajedrez : movimiento de ajedrez, tablero de ajedrez (cuyas propias relaciones meronym muestran "cuadrado" y "diagonal")

Librería : archivado

Eventualmente se requerirá una ponderación de los términos, pero eso no es realmente una preocupación ahora.

¿Alguien tiene alguna sugerencia sobre cómo hacer esto?


Solo una actualización: terminé usando una mezcla de respuestas de Jeff y StompChicken.

La calidad de la información recuperada de Wikipedia es excelente, específicamente cómo (como es de esperar) hay tanta información relevante (en comparación con algunos corpus donde no existen términos como 'blog' e 'ipod').

La gama de resultados de Wikipedia es la mejor parte. El software puede hacer coincidir términos tales como (listas cortadas por brevedad):

  • golf: [bola, hierro, camiseta, bolsa, club]
  • fotografía: [cámara, película, fotografía, arte, imagen]
  • pesca: [peces, redes, anzuelos, trampas, cebos, señuelos, varillas]

El mayor problema es clasificar ciertas palabras como artefactos físicos; WordNet predeterminado no es un recurso confiable, ya que muchos términos (como 'ipod' e incluso 'trampolining') no existen en él.

¿Fue útil?

Solución

Creo que lo que estás pidiendo es una fuente de relaciones semánticas entre conceptos. Para eso, puedo pensar en varias maneras de ir:

  1. Algoritmos de similitud semántica . Estos algoritmos generalmente realizan una caminata por el árbol sobre las relaciones en Wordnet para obtener una puntuación real de cómo se relacionan los dos términos. Estos se verán limitados por la forma en que WordNet modela los conceptos en los que está interesado. WordNet :: La similitud (escrita en Perl) es bastante buena.
  2. Intente usar OpenCyc como base de conocimientos . OpenCyc es una versión de código abierto de Cyc, una base de conocimientos muy amplia de hechos del "mundo real". Debería tener un conjunto mucho más rico de becas semánticas que WordNet. Sin embargo, nunca he usado OpenCyc, así que no puedo hablar de lo completo que es o de lo fácil que es usarlo.
  3. Análisis de frecuencia de n-gramas . Como lo mencionó Jeff Moser. Un enfoque basado en datos que puede "descubrir" relaciones a partir de grandes cantidades de datos, pero a menudo puede producir resultados ruidosos.
  4. Análisis semántico latente . Un enfoque basado en datos similar al análisis de frecuencia de n-gramo que encuentra conjuntos de palabras relacionadas semánticamente.

[...]

A juzgar por lo que dices que quieres hacer, creo que las dos últimas opciones tienen más probabilidades de tener éxito. Si las relaciones no están en Wordnet, la similitud semántica no funcionará y OpenCyc no parece saber mucho sobre snooker aparte del hecho de que existe.

Creo que una combinación de n-grams y LSA (o algo así) sería una buena idea. Las frecuencias N-gram encontrarán conceptos estrechamente vinculados a su concepto objetivo (por ejemplo, una pelota de tenis) y LSA encontraría conceptos relacionados mencionados en la misma oración / documento (por ejemplo, net, serve). Además, si solo te interesan los sustantivos, filtra la salida para que contenga solo sustantivos o frases nominales (mediante etiquetador de parte de voz ) podría mejorar los resultados.

Otros consejos

En el primer caso, probablemente estés buscando n-grams donde n = 2. Puedes obtenerlos de lugares como Google o crear los tuyos desde toda la Wikipedia .

Para obtener más información, consulte esta pila relacionada Pregunta de desbordamiento .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top