2010-05-19 19 views
5

Algunos idiomas, particularmente los idiomas eslavos, cambian las terminaciones de los nombres de las personas según el contexto gramatical. (Para aquellos de ustedes que saben gramática o estudiaron idiomas que hacen esto con palabras, como alemán o ruso, y para ayudar con palabras clave de búsqueda, estoy hablando de declinación de sustantivo.)Gramática del lenguaje natural y nombres ingresados ​​por el usuario

Esto es probablemente más fácil con un conjunto de ejemplos (en polaco, para salvar a todo el problema de diferente alfabeto):

  1. Dorothy vio que el gato - Dorota zobaczyła Kota
  2. el gato vio Dorothy - Kot zobaczył Doroté
  3. es El gato de Dorothy - Para broma kot Doroty
  4. le di al gato a Dorothy - dentro de Kota Dorotie
  5. fui a dar un paseo con Dorothy - Poszłam na espaciador z Dorota
  6. “Hola, Dorothy!” - “Witam, Doroto!”

Ahora bien, si, en estos ejemplos, el nombre que aquí iban a ser introducida por el usuario, que introduce un mundo de pesadillas gramática. Es importante destacar que, si iba para Katie (Kasia), el examples are not directly comparable - 3 y 4 son tanto Kasi, en lugar de * Kasy y * Kasie - nombres masculinos y será wholly different again.

Supongo que alguien ha enfrentado esta situación anteriormente, pero mi Google-fu parece estar débil hoy. Puedo encontrar muchos enlaces sobre el procesamiento del lenguaje natural, pero no creo que eso sea exactamente lo que quiero. Para ser claro: solo tendré un nombre ingresado por usuario por usuario y tendré que declinarlos en configuraciones conocidas. Tendré un texto localizado que tendrá marcadores de posición como {name nominative} y {name dative}, para el motivo de discusión. Realmente no quiero tener que hacer un análisis léxico del texto para trabajar, solo necesitaré rechazar el nombre ingresado por el usuario.

Alguien tiene alguna recomendaciones sobre cómo hacer esto, o tengo que empezar a llamar a las agencias de localización redondas; o)


Otras lecturas (todos en Wikipedia) para el interesado:

responsabilidad: Sé que esto sucede en muchos otros idiomas; destacando idiomas eslavos es simplemente porque tengo un proyecto que se va a localizar en algunos idiomas eslavos.

+0

sólo una nota rápida: (. Para aquellos de ustedes que conocen la gramática o estudiado idiomas que hacen esto a las palabras, como el alemán o el ruso, y para ayudar con las palabras clave de búsqueda, estoy hablando de declinación nominal) ¿Estás seguro de que esto se hace en alemán? – RoflcoptrException

+0

En alemán, los nombres comunes cambian de acuerdo con su caso, pero los nombres propios (incluidos los nombres de las personas) no lo hacen. –

+0

@Sebi: Tommy tiene razón. La declinación del sustantivo (y del pronombre) ocurre en alemán, pero no con nombres de lugares o personales. El equivalente en alemán es der Tisch> den Tisch> des Tisches> dem Tische, por ejemplo. –

Respuesta

1

en alemán, lo único que se modifica es artículo: Der, Die, Das. Y los nombres no los tienen. Así que no hay nada lujoso en alemán. (por cierto, no es eslavo)

sobre ruso (mi nativo). todo este concepto de cambio de final es doloroso para el procesamiento, pero (!) si solo tiene nombres de personas y tiene sugerencias como {name nominative}, es relativamente fácil. La mayoría de los nombres femeninos tienen una estructura común: root + a/ya (а/я), y cada sugerencia le dará una idea definitiva de cómo cambiar el final. Veo que en polaco es lo mismo: Dorot | a, Dorot | ê. Los nombres masculinos también son simples. O siguen exactamente las mismas reglas (si terminan con a/ya (а/я)) o si terminan con j/y (como mi nombre Andrey) la asignación es ligeramente diferente.

+1

Gracias, Andrey. Entonces, ¿crees que sería realmente más fácil construir un motor de gramática relativamente simple que analiza los nombres y resuelve las declinaciones? Veo que no sería * muy * difícil construir una tabla de búsqueda para las terminaciones de nombres, pero me preocupa la diferencia entre Kasia (Kasię, Kasi, Kasią) y Dorota (Dorotę , Doroty, Dorotie, Dorotą), donde no puedo predecir el genitivo (генитив) y dativo (датив) simplemente a partir de nombres femeninos que terminan en -a. –

+0

@Owen Blacker http://en.wikipedia.org/wiki/Russian_grammar#First_declension_-_masculine_nouns Las siguientes tablas le dan una buena referencia. lo siento, pero siento que no entiendo tu objetivo final y lo que se otorga para tu tarea. – Andrey

+0

@Andrey: Entonces, ¿es confiable que todos los nombres masculinos estén en el patrón consonante/а/у/а/ом/е (de modo que usted es Андреий Андреия Андреию Андреия Андреием Андреии) y los nombres femeninos estarán todos en а/ы/е/у/ой/е patrón a menos que terminen en ь? So Артур Артура Артуру Артура Артуром Артуре. Pero ellos que hay de Илья? Я no es uno de los personajes mencionados en la primera declinación. También Екатерина se convierte en Екатерины Екатерине Екатерину Екатериной Екатерине y Любовь se rechazaría Любовьи Любовьи Любовь Любовью Любовьи. ¿Qué pasa si una chica se llama Нелли, qué declinación uso entonces? Todavía confundido ...: oS –

1

Me parece que quiere un motor de morfología para pulir. En resumen, pueden hacer tanto el análisis como la generación desde la forma superficial (lo que leemos y escribimos) hasta alguna forma abstracta, como "Dorothy + FEM + DAT", teniendo en cuenta tanto las declinaciones como la fonología.

Echa un vistazo aquí (no soy polaco pero se ve bien, y la mayoría tiene imporantly descargas :)) http://nlp.ipipan.waw.pl/~wolinski/morfeusz/

Here son algunos introductoria sobre el tema.

+0

Creo que me estoy poniendo cada vez mejor fuera de mi profundidad aquí. Creo que tienes razón, necesito un motor de morfología de algún tipo (es el ruso que realmente necesito, no el polaco, que solo utilicé para los ejemplos, para evitar confundir a las personas con el cirílico en el ejemplo). Pero no necesito algo tan complicado como el análisis morfológico. Sé que se puede suponer que el texto de entrada es un nombre (y podemos preguntarle al usuario el sexo, si es necesario). Solo necesito hacer algo como: Kasia + FEM + GEN = Kasi pero Dorota + FEM + GEN = Doroty. Creo que un motor de morfología completa podría ser excesivo aquí, tal vez? –

Cuestiones relacionadas