Comment faire la conversion de cas en Prolog?
Question
Je suis interface avec WordNet , et quelques-uns des termes que je voudrais classer (divers bon noms) sont capitalisés dans la base de données, mais l'entrée que je reçois ne peuvent pas être correctement capitalisé. Mon idée initiale est ici pour écrire un prédicat qui produit les différents possibles d'une capitalisation entrée, mais je ne suis pas sûr de savoir comment s'y prendre.
Quelqu'un at-il une idée de comment s'y prendre, ou mieux encore, d'une manière plus efficace de réaliser ce que je voudrais faire?
La solution
Il dépend de ce que la mise en œuvre Prolog que vous utilisez, mais il peut y avoir des fonctions de bibliothèque que vous pouvez utiliser.
par exemple. de la SWI-Prolog manuel de référence:
4.22.1 conversion de cas
Il n'y a rien dans la norme Prolog pour la conversion en cas de données textuelles. Le SWI-Prolog prédicats code_type / 2 et char_type / 2 peut être utilisé pour tester et convertir individuelle personnages. Nous avons commencé un soutien supplémentaire:
downcase_atom (+ anycase, -LowerCase)
convertit les caractères en minuscules de anycase comme char_type / 2 ne (par exemple basé sur le locale définie si Prolog prend en charge des paramètres régionaux sur la plate-forme d'hébergement) et unifie la atome minuscule avec minuscules.
upcase_atom (+ anycase, -UpperCase)
convertit, similaire à downcase_atom / 2, un atome de majuscules.
Depuis ce juste downcases tout ce qui est passé à, vous pouvez facilement écrire un prédicat simple à désinfectez toutes les entrées avant de faire une analyse.