nlp - texto - Encontrar palabras relacionadas(específicamente objetos físicos) a una palabra específica
como buscar una palabra en word 2010 (2)
Estoy tratando de encontrar palabras (específicamente objetos físicos) relacionadas con una sola palabra. Por ejemplo:
Tenis : raqueta de tenis, pelota de tenis, zapatillas de tenis
Snooker : taco de snooker, bola de snooker, 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 siguientes resultados:
Tenis : saque, volea, falta de pie, punto de ajuste, retorno, ventaja.
Snooker : nada
Ajedrez : movimiento de ajedrez, tablero de ajedrez (cuyas propias relaciones meronimarias muestran ''cuadrado'' y ''diagonal'')
Librería : estantería
Eventualmente se requerirá la 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 era 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 es capaz de hacer coincidir términos tales como (listas cortadas por brevedad):
- golf: [bola, hierro, tee, bolso, club]
- Fotografía: [cámara, película, fotografía, arte, imagen]
- pesca: [pez, red, anzuelo, trampa, cebo, señuelo, caña]
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.
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:
- 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 que le interesan. WordNet::Similarity (escrito en Perl) es bastante bueno.
- Trate de usar OpenCyc como base de conocimiento . 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.
- Análisis de frecuencia n-gramo . 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.
- Análisis semántico latente . Un enfoque basado en datos similar al análisis de frecuencia de n-gramas 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 el 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 ligados 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 está interesado en sustantivos, filtrar su salida para que contenga solo sustantivos o frases nominales (mediante el uso de un etiquetador de parte de voz ) podría mejorar los resultados.
En el primer caso, probablemente esté buscando n-grams donde n = 2. Puede obtenerlos de lugares como Google o crear los suyos propios de Wikipedia .
Para obtener más información, consulte esta pregunta relacionada sobre el desbordamiento de pila .