我正在与WordNet交互,我想分类的一些术语(各种专有名称)在数据库中大写,但我得到的输入可能没有正确大写。我最初的想法是编写一个谓词来产生输入的各种可能的大小写,但我不知道如何去做。
有谁知道如何解决这个问题,甚至更好,一种更有效的方式来实现我想做的事情?
这取决于您使用的 Prolog 实现,但可能有您可以使用的库函数。
例如来自SWI-Prolog 参考手册:
4.22.1 案例转换
Prolog 标准中没有任何内容可用于在文本数据中转换大小写。SWI-Prolog 谓词 code_type/2 和 char_type/2 可用于测试和转换单个字符。我们已经开始了一些额外的支持:
downcase_atom(+AnyCase, -LowerCase)
像 char_type/2 一样将 AnyCase 的字符转换为小写(即,如果 Prolog 在宿主平台上提供语言环境支持,则基于定义的语言环境)并将小写原子与小写字母统一。
upcase_atom(+AnyCase, -UpperCase)
类似于 downcase_atom/2,将原子转换为大写。
由于这只是对传递给它的任何内容进行小写,因此您可以轻松编写一个简单的谓词来在进行任何分析之前清理每个输入。