2010-09-21 20 views
10

Estoy creando una aplicación en .NET.Generador de frases usando Thesaurus

Recibí un nombre de aplicación en ejecución http://www.spinnerchief.com/. Hizo lo que necesitaba, pero no recibí ayuda de Google. Necesito resultados funcionales para mi aplicación, donde los usuarios pueden dar una oración y luego el usuario puede obtener la misma oración, pero que tenga una redacción diferente.

Aquí hay un ejemplo de deseo que quiero.

Supongamos que pongo una oración que es "Pankaj es un buen hombre". La salida debe ser similar a la siguiente:

Pankaj es una gran persona.
Pankaj es un hombre excelente.
Pankaj es un tipo aceptable.
Pankaj es un tipo maravilloso.
Pankaj es un hombre excelente.
Pankaj es un buen humano.
Pankaj es un espléndido caballero

+1

+1 por una forma inteligente de obtener gafas para pensar que eres muy cool la próxima vez que se gafas! –

Respuesta

-3

No sé nada acerca de .Net, pero hay que mirar en el uso de una función de diccionario (estoy seguro que hay uno, o por lo menos una biblioteca que hace más eficiente el proceso de si no hay)

Luego, tendría que pasar por la cadena, y omitir palabras como "es" o "a". Solo tomando palabras para las que quiere tener sinónimos.

Después de esto, es bastante simple tener un loop escupiendo tus oraciones.

Buena suerte.

+1

¿Qué quiere decir con función de diccionario? –

7

Para hacer esto correctamente para cualquier oración arbitraria necesitaría realizar un análisis de lenguaje natural de la oración fuente. Es posible que desee consultar el SharpNLP library: es una biblioteca gratuita de herramientas de procesamiento de lenguaje natural para C# /. NET.

Si está buscando un enfoque más simple, debe estar dispuesto a sacrificar la corrección hasta cierto punto. Por ejemplo, podría crear un diccionario de palabras desencadenantes, que, cuando aparecen en una oración, se reemplacen por sinónimos de un diccionario de sinónimos. El problema con este enfoque es asegurarse de reemplazar una palabra con una parte equivalente del discurso. En inglés, es posible que ciertas palabras sean diferentes partes del discurso (verbo, adjetivo, adverbio, etc.) en función de su uso contextual en una oración.

Se deriva una consideración adicional que deberá abordar (si no está utilizando una biblioteca NLP). En la mayoría de los idiomas, ciertas partes del habla están conjugados/modificados (verbos en inglés) en función del tema al que se aplican (o el objeto, el hablante o el tiempo de la oración).

Si todo lo que quiere hacer es reemplazar los adjetivos (como en su ejemplo), el enfoque de usar palabras de activación puede funcionar, pero no será fácilmente extensible. Antes de hacer nada, sugiero que haya definido claramente los requisitos y las reglas para su dominio problemático ... y lo use para decidir qué ruta tomar.

3

Para esto, lo mejor que puede usar es WordNet y sus relaciones hipónimo/hipernym. Hay una biblioteca WordNet .Net. Para cada palabra que desee alternar, puede obtener su hipernym (es decir, para una persona, un hipernym significa "persona es un tipo de ...") o un hipónimo ("X es un tipo de persona"). Luego simplemente reemplaza la palabra que estás alternando.

Querrás asegurarte de tener la parte correcta del discurso (es decir, sustantivo, adjetivo, verbo ...) y también está el tema de los sentidos, que puede introducir algunas alternancias no deseadas (el sentido n. ° 1 es los más comunes).

Cuestiones relacionadas