2010-05-19 23 views
5

Certaines langues, en particulier les langues slaves, changent la fin des noms des personnes en fonction du contexte grammatical. (Pour ceux d'entre vous qui connaissent la grammaire ou étudié les langues qui font cela pour les mots, comme l'allemand ou le russe, et pour aider avec les mots clés de recherche, je parle de déclinaison nominale.)Grammaire en langage naturel et noms saisis par l'utilisateur

Ceci est probablement plus facile avec un ensemble d'exemples (en polonais, pour sauver tout le problème différent alphabet):

  1. Dorothy a vu le chat - Dorota zobaczyła kota
  2. le chat a vu Dorothy - Kot zobaczył Doroté
  3. Il est Le chat de Dorothy - Pour plaisanterie kot Doroty
  4. J'ai donné le chat à Dorothy - Dalam kota Dorotie
  5. Je suis allé pour une promenade avec Dorothy - Poszłam na entretoise z Dorota
  6. « Bonjour, Dorothy! » - « Witam, Doroto! »

maintenant, si, dans ces exemples, le nom ici devaient être entrées par l'utilisateur, qui introduit un monde de cauchemars de grammaire. Il est important, si je suis allé pour Katie (Kasia), le examples are not directly comparable-3 et 4 sont tous deux Kasi, plutôt que * Kasy et * Kasie - et les hommes sera wholly different again.

Je suppose que quelqu'un a déjà fait face à cette situation, mais mon Google-fu semble être faible aujourd'hui. Je peux trouver beaucoup de liens sur le traitement en langage naturel, mais je ne pense pas que ce soit ce que je veux. Pour être clair: je vais seulement avoir un nom entré par utilisateur par utilisateur et je vais devoir les décliner dans des configurations connues - je vais avoir un texte localisé qui aura des espaces réservés quelque chose comme {name nominative} et {name dative}, pour le souci de l'argument. Je ne veux vraiment pas avoir à faire une analyse lexicale du texte pour travailler sur les choses, je n'aurai jamais besoin de refuser ce nom entré par un utilisateur.

Quelqu'un a des recommandations sur la façon de faire, ou dois-je commencer à appeler les agences de localisation rondes; o)


Pour en savoir plus (tout sur Wikipédia) pour l'intéressé:

Disclaimer: Je sais que cela se passe dans beaucoup d'autres langues; mettre en évidence les langues slaves est simplement parce que j'ai un projet qui va être localisé dans certaines langues slaves.

+0

juste une note rapide: (. Pour ceux qui connaissent des langues de grammaire ou étudiés qui font des mots, comme l'allemand ou russe, et pour aider avec des mots clés de recherche, je parle substantif Déclinaison) êtes-vous sûr que cela se fait en allemand ?? – RoflcoptrException

+0

En allemand, les noms communs changent selon leur cas, mais pas les noms propres (y compris les noms des personnes). –

+0

@Sebi: Tommy est correct. La déclinaison nom (et pronom) se passe en allemand, mais pas avec les noms de lieux ou de personnes. L'équivalent en allemand est der Tisch> den Tisch> des Tisches> dem Tische, par exemple. –

Répondre

1

En allemand, la seule chose qui est modifiée est l'article: Der, Die, Das. Et les noms ne les ont pas. Donc, rien d'extraordinaire à propos de l'allemand. (Par exemple, ce n'est pas Slave)

sur russe (mon natif). tout ce concept de changement de terminaison est douloureux pour le traitement, mais (!) si vous n'avez que des noms de personnes et que vous avez des indices comme {nominatif} c'est relativement facile. La majorité des noms féminins ont une structure commune: root + a/ya (а/я), et chaque indice vous donnera la possibilité de changer la fin. Je vois qu'en polonais c'est pareil: Dorot | a, Dorot | ę. Les noms masculins sont aussi simples. Ils suivent exactement les mêmes règles (si fin avec a/ya (а/я)) ou s'ils se terminent par j/y (comme mon nom Andrey) le mapping est légèrement différent.

+1

Merci, Andrey. Alors pensez-vous qu'il serait plus facile de construire un moteur de grammaire relativement simple qui analyse les noms et élabore les déclinaisons? Je vois qu'il ne serait pas * très * difficile de construire une table de correspondance pour les noms, mais je m'inquiète de la différence entre Kasia (Kasię, Kasi, Kasi, Kasią) et Dorota (Dorotę , Doroty, Dorotie, Dorotą), où je ne peux pas prédire le génitif (генитив) et le datif (датив) simplement d'eux étant des noms féminins se terminant par -a. –

+0

@Owen Blacker http://en.wikipedia.org/wiki/Russian_grammar#First_declension_-_masculine_nouns Les tableaux suivants vous donnent une belle référence. désolé, mais je sens que je ne comprends pas votre but ultime et ce qui est donné pour votre tâche. – Andrey

+0

@Andrey: Donc, est-il fiable que tous les noms masculins seront dans le modèle consonne/а/у/а/ом/е (donc vous êtes Андреий Андреия Андреия Андреием Андреии) et les noms féminins seront tous dans а/ы/е/у/ой/е pattern à moins qu'ils ne se terminent par ь? Donc Артур Артура Артуру Артура Артуром Артуре. Mais qu'en est-il d'Илья? Я n'est pas l'un des personnages mentionnés dans la première déclinaison. Aussi Екатерина devient Екатерины Екатерине Екатериной Екатерине et Любовь refuserait de Любовьи Любовьи Любовь Любовью Любовьи. Et si une fille s'appelle Нелли, quelle déclinaison est-ce que j'utilise alors? Toujours confus ...: oS –

1

Il me semble que vous voulez un moteur de morphologie pour polir. En bref, ils peuvent faire à la fois l'analyse et la génération depuis la surface (ce que nous lisons et écrivent) jusqu'à une forme abstraite, comme "Dorothy + FEM + DAT", en tenant compte à la fois des déclinaisons et de la phonologie.

Jetez un coup d'oeil ici (je ne suis pas poli, mais il semble bon, et la plupart imporantly il a téléchargements :)) http://nlp.ipipan.waw.pl/~wolinski/morfeusz/

Here sont une introduction sur le sujet.

+0

Je pense que je deviens plutôt hors de ma profondeur ici. Je pense que vous avez raison - j'ai besoin d'un moteur de morphologie quelconque (c'est le russe dont j'ai besoin, pas le polonais, que j'ai utilisé pour les exemples, pour éviter de confondre les cyrilliques avec l'exemple). Mais je n'ai pas besoin de quelque chose d'aussi compliqué que l'analyse morphologique. Je sais que le texte d'entrée peut être considéré comme un nom (et nous pouvons demander à l'utilisateur le genre, si nécessaire). Je dois juste être capable de faire quelque chose comme: Kasia + FEM + GEN = Kasi mais Dorota + FEM + GEN = Doroty. Je pense qu'un moteur de morphologie complet pourrait bien être exagéré ici, peut-être? –