2009-08-07 45 views
2

我與WordNet接口,並且我想分類的一些術語(各種專有名稱)在數據庫中大寫,但我得到的輸入可能不會正確大寫。我最初的想法是編寫一個謂詞,它可以產生可能的輸入的各種大小寫,但我不知道如何去做。如何在Prolog中進行大小寫轉換?

有沒有人有一個想法如何去做到這一點,甚至更好,更有效的方式來實現我想做的事情?

回答

2

這取決於您使用的是什麼Prolog實現,但可能存在您可以使用的庫函數。

例如從SWI-Prolog reference manual

4.22.1大小寫轉換

沒有什麼在Prolog的標準爲文本數據轉換情況。 SWI-Prolog 謂詞code_type/2和char_type/2可用於測試和轉換個別的 字符。我們已經開始增加一些支持:

downcase_atom(+ AnyCase,-LowerCase)

AnyCase的字符轉換成小寫爲char_type/2呢(即,基於 定義的區域,如果Prolog的提供語言環境支持託管平臺)並將小寫字母與LowerCase相結合。

upcase_atom(+ AnyCase,-UpperCase)

將轉換,類似於downcase_atom/2,一個原子爲大寫。

因爲這只是減少了傳遞給它的任何東西,所以在進行任何分析之前,可以輕鬆地編寫一個簡單的謂詞來清理每個輸入。

+0

我正在使用SWI-Prolog(我打算提一下,但忘記了),所以這是一個很好的幫助,謝謝!不幸的是,它有點慢,因爲必須搜索整個數據庫中與小寫搜索詞相同的單詞,而不僅僅是能夠進行查找。但它有效,所以再次歡呼! – arnsholt 2009-08-07 10:33:18

+0

@arnsholt:很高興有用。正如你所建議的那樣,明顯的選擇是嘗試兩次查找,第一次使用提供的輸入,第二次查找時第一個字母大寫,如果第一個字母不匹配。您可以使用char_type進行測試並生成轉換(請參閱手冊頁以瞭解詳細信息)。我希望兩個查找比數據庫匹配更有效。無論如何,要嘗試一些東西。 – 2009-08-07 10:55:14

相關問題