2009-08-07 15 views
2

私はWordNetと接続していますが、私が分類したい用語(さまざまな固有名詞)はデータベースに大文字で入力していますが、私が得た入力は正しく資本化されないことがあります。私の最初のアイデアは、入力の可能なさまざまな資本化を生成する述語を書くことですが、私はそれについてどうやって行くのかは分かりません。Prologで大文字と小文字を変換する方法は?

私は何をしたいと思うかを達成するために、これについて、あるいはそれ以上に、より効率的な方法を知る人がいますか?

答えて

2

使用しているPrologの実装によって異なりますが、使用できるライブラリ関数がある可能性があります。

SWI-Prolog reference manualから:

4.22.1ケース変換

テキストデータにケースを変換するためのProlog標準では何もありません。 SWI-Prolog 述語code_type/2およびchar_type/2を使用して、個々の 文字をテストおよび変換することができます。我々はいくつかの追加のサポートを開始しました:プロローグは上のロケールサポートを提供する場合CHAR_TYPE/2(すなわち 定義されているロケールに基づいてないよう

downcase_atom(+ AnyCase、-lowercase)

を小文字にAnyCaseの文字を変換しますホスティングプラットフォーム)、 小文字アトムをLowerCaseと統合します。

upcase_atom(+ AnyCase、-uppercase)類似

変換し、/ 2、大文字の原子をdowncase_atomします。

これは、それが渡されたものをすべて破棄するため、分析を行う前にすべての入力をサニタイズする簡単な述語を簡単に作成できます。

+0

私はSWI-Prologを使用しています(私は言及するつもりでしたが、忘れてしまった)ので、これは大きな助けになりました。残念なことに、ルックアップを行うだけでなく、小文字の検索語句と同じ単語をデータベース全体で検索する必要があるため、少し遅いです。しかし、それは動作するので、再び歓声! – arnsholt

+0

@arnsholt:うれしいです。あなたが示唆しているように、明白な選択肢は2つのルックアップを試してみるというものです。最初の入力は入力となり、2番目の文字は最初の文字を大文字にして最初のものが見つからない場合に表示されます。 char_typeを使用してテストを行い、変換を生成することができます(詳細については、マニュアルページを参照してください)。私は2つのルックアップがデータベースマッチより効率的であると期待しています。とにかく、何かを試してみてください。 –

関連する問題