(57)【要約】【課題】自然言語で記述されたビジネスルール文をＤＲＬ言語文に自動変換する。【解決手段】言語変換装置１０は、自然言語で記述されたビジネスルール文を構文単位でＤＲＬ言語文に変換するための構文を定義する構文定義情報３０と、ビジネスルール文の要素変数をＤＲＬ言語文の要素変数に変換するための変換情報４０とを記憶する記憶装置１６と、ビジネスルール文と構文定義情報３０とを比較することにより、ビジネスルール文の構文を解析し、変換情報４０を参照してビジネスルール文をＤＲＬ言語文に変換するＣＰＵ１１とを備える。【選択図】図１
2015028763.tif 000002
【特許請求の範囲】
【請求項１】
自然言語で記述された一つ以上の構文要素から成るビジネスルール文を構文単位でＤＲＬ言語文に変換するための複数の構文を定義する構文定義情報と、前記ビジネスルール文の構文要素に含まれる要素変数を前記ＤＲＬ言語文の要素変数に変換するための変換情報とを記憶する記憶手段と、
前記ビジネスルール文の文字列と、前記構文定義情報に定義されている各構文を構成する構文要素の文字列とを比較することにより、前記ビジネスルール文の構文が、前記構文定義情報に定義されている複数の構文のうちどの構文に一致するかを判定する構文解析手段と、
前記変換情報を参照して、前記ビジネスルール文の要素変数を前記ＤＲＬ言語文の要素変数に変換するとともに、前記ビジネスルール文の要素変数以外の構文要素を、前記ビジネスルール文の構文に一致するとの判定がなされた構文を有する前記ＤＲＬ言語文の構文要素に変換することにより、前記ビジネスルール文を前記ＤＲＬ言語文に変換する変換手段と、
を備える言語変換装置。
【請求項２】
請求項１に記載の言語変換装置であって、
前記構文定義情報は、複数種類の基本的な構文の組み合わせにより前記ビジネスルールを前記ＤＲＬ言語文に変換できるように類型化されている、言語変換装置。
【請求項３】
請求項１又は請求項２に記載の言語変換装置であって、
前記構文定義情報は、制御構文をその種類に応じて区別して定義する文字列の情報を含むとともに、前記ビジネスルール文に記述されている特定の構文をそれが記述されている制御構文の種類に応じて異なるＤＲＬ言語文に変換することを定義しており、
前記構文解析手段は、前記ビジネスルール文の特定の構文に、前記制御構文を定義する文字列が記述されているか否かを判定し、その判定結果が肯定の場合に、前記変換手段は、前記特定の構文を前記制御構文の種類に応じて異なるＤＲＬ言語文に変換する、言語変換装置。
【請求項４】
請求項１乃至請求項３のうち何れか１項に記載の言語変換装置であって、
前記ビジネスルール文は、複数の構文がネストされた入れ子構造を含み、
前記構文解析手段は、前記入れ子構造の全体の構文を解析し、
前記変換手段は、前記入れ子の内側の構文から優先的に前記ＤＲＬ言語文への変換を行う、言語変換装置。
【請求項５】
コンピュータにより実行される言語変換方法であって、
自然言語で記述された一つ以上の構文要素から成るビジネスルール文を構文単位でＤＲＬ言語文に変換するための複数の構文を定義する構文定義情報に定義されている各構文を構成する構文要素の文字列と、前記ビジネスルール文の文字列とを比較することにより、前記ビジネスルール文の構文が、前記構文定義情報に定義されている複数の構文のうちどの構文に一致するかを判定するステップと、
前記ビジネスルール文の構文要素に含まれる要素変数を前記ＤＲＬ言語文の要素変数に変換するための変換情報を参照して前記ビジネスルール文の要素変数を前記ＤＲＬ言語文の要素変数に変換するとともに、前記ビジネスルール文の要素変数以外の構文要素を、前記ビジネスルール文の構文に一致するとの判定がなされた構文を有する前記ＤＲＬ言語文の構文要素に変換することにより、前記ビジネスルール文を前記ＤＲＬ言語文に変換するステップと、
を備える言語変換方法。
【請求項６】
コンピュータに、
自然言語で記述された一つ以上の構文要素から成るビジネスルール文を構文単位でＤＲＬ言語文に変換するための複数の構文を定義する構文定義情報に定義されている各構文を構成する構文要素の文字列と、前記ビジネスルール文の文字列とを比較することにより、前記ビジネスルール文の構文が、前記構文定義情報に定義されている複数の構文のうちどの構文に一致するかを判定するステップと、
前記ビジネスルール文の構文要素に含まれる要素変数を前記ＤＲＬ言語文の要素変数に変換するための変換情報を参照して前記ビジネスルール文の要素変数を前記ＤＲＬ言語文の要素変数に変換するとともに、前記ビジネスルール文の要素変数以外の構文要素を、前記ビジネスルール文の構文に一致するとの判定がなされた構文を有する前記ＤＲＬ言語文の構文要素に変換することにより、前記ビジネスルール文を前記ＤＲＬ言語文に変換するステップと、
を実行させるための言語変換プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は自然言語で記述されたビジネスルール文をＤＲＬ（Drools Rule Language）言語文に変換するための装置、方法、及びプログラムに関わる。
【背景技術】
【０００２】
業務上の規則、条件、判断基準、或いは経験的な対処方法をビジネスルールとして定義及び登録し、その組み合わせから複雑な業務判断を自動的に行うコンピュータシステムは、ビジネスルール管理システム（ＢＲＭＳ）と呼ばれており、例えば、金融業界における与信や保険加入の審査、或いは携帯電話料金の複雑な割引プランを踏まえた料金算定等に用いられている。ビジネスルールは、「もし〜ならば、〜とする（しない）」というプロダクションルール（if-thenルール）の形式で定義される。従来では、ビジネスルールの設定には、ナレッジエンジニアと呼ばれる専門家が必要とされていたが、近年のビジネスルール管理システムでは、自然言語でビジネスルールの登録及び変更が可能となり、矛盾したビジネスルールが排除される等の仕組みが実現されているため、専門知識を持たない者でも運用することが可能である。このようなビジネスルール管理システムとして、ＩＢＭ社が提供するＪＲｕｌｅｓと呼ばれる製品が知られている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、ビジネス管理システムとして商用化されている製品の全てが必ずしも自然言語でのビジネスルールの記述を可能にしている訳ではない。例えば、ＲｅｄＨａｔ社が提供するＪＢｏｓｓと呼ばれる製品では、自然言語でビジネスルールを記述することができないため、ＤＲＬ言語でビジネスルールを記述する必要がある。このため、ＪＲｕｌｅｓ等の製品で使用するために自然言語で記述されたビジネスルールをＪＢｏｓｓで使用するためには、ＤＲＬ言語への変換が必要となるが、斯かる言語変換を手作業で行うには、多大な労力及びコストを必要とする。
【０００４】
そこで、本発明は、自然言語で記述されたビジネスルール文をＤＲＬ言語文に自動変換する装置、方法、及びプログラムを提案することを課題とする。
【課題を解決するための手段】
【０００５】
上記の課題を解決するため、本発明に係る言語変換装置は、自然言語で記述された一つ以上の構文要素から成るビジネスルール文を構文単位でＤＲＬ言語文に変換するための複数の構文を定義する構文定義情報と、ビジネスルール文の構文要素に含まれる要素変数をＤＲＬ言語文の要素変数に変換するための変換情報とを記憶する記憶手段と、ビジネスルール文の文字列と、構文定義情報に定義されている各構文を構成する構文要素の文字列とを比較することにより、ビジネスルール文の構文が、構文定義情報に定義されている複数の構文のうちどの構文に一致するかを判定する構文解析手段と、変換情報を参照して、ビジネスルール文の要素変数をＤＲＬ言語文の要素変数に変換するとともに、ビジネスルール文の要素変数以外の構文要素を、ビジネスルール文の構文に一致するとの判定がなされた構文を有するＤＲＬ言語文の構文要素に変換することにより、ビジネスルール文をＤＲＬ言語文に変換する変換手段と、を備える。斯かる構成によれば、自然言語で記述されたビジネスルール文をＤＲＬ言語文に自動変換することができる。
【０００６】
構文定義情報は、例えば、複数種類の基本的な構文の組み合わせによりビジネスルールをＤＲＬ言語文に変換できるように類型化してもよい。本発明者の鋭意努力により、複数種類の基本的な構文の組み合わせによりビジネスルールをＤＲＬ言語文に変換できることが判明した。これにより、言語変換処理を簡略化することができる。
【０００７】
構文定義情報は、制御構文をその種類に応じて区別して定義する文字列の情報を含むとともに、ビジネスルール文に記述されている特定の構文をそれが記述されている制御構文の種類に応じて異なるＤＲＬ言語文に変換することを定義してもよい。構文解析手段は、ビジネスルール文の特定の構文に、制御構文を定義する文字列が記述されているか否かを判定し、その判定結果が肯定の場合に、変換手段は、特定の構文を制御構文の種類に応じて異なるＤＲＬ言語文に変換してもよい。これにより、制御構文の種類に応じて柔軟な言語変換が可能になる。
【０００８】
ビジネスルール文は、複数の構文がネストされた入れ子構造を含んでもよい。構文解析手段は、入れ子構造の全体の構文を解析し、変換手段は、入れ子の内側の構文から優先的に前記ＤＲＬ言語文への変換を行ってもよい。これにより、複雑な入れ子構造を適切に解析して言語変換することができる。
【０００９】
本発明に係るコンピュータにより実行される言語変換方法は、自然言語で記述された一つ以上の構文要素から成るビジネスルール文を構文単位でＤＲＬ言語文に変換するための複数の構文を定義する構文定義情報に定義されている各構文を構成する構文要素の文字列と、ビジネスルール文の文字列とを比較することにより、ビジネスルール文の構文が、構文定義情報に定義されている複数の構文のうちどの構文に一致するかを判定するステップと、ビジネスルール文の構文要素に含まれる要素変数をＤＲＬ言語文の要素変数に変換するための変換情報を参照してビジネスルール文の要素変数をＤＲＬ言語文の要素変数に変換するとともに、ビジネスルール文の要素変数以外の構文要素を、ビジネスルール文の構文に一致するとの判定がなされた構文を有するＤＲＬ言語文の構文要素に変換することにより、ビジネスルール文をＤＲＬ言語文に変換するステップとを備える。この方法によれば、自然言語で記述されたビジネスルール文をＤＲＬ言語文に自動変換することができる。
【００１０】
本発明に係る言語変換プログラムは、コンピュータに、自然言語で記述された一つ以上の構文要素から成るビジネスルール文を構文単位でＤＲＬ言語文に変換するための複数の構文を定義する構文定義情報に定義されている各構文を構成する構文要素の文字列と、ビジネスルール文の文字列とを比較することにより、ビジネスルール文の構文が、構文定義情報に定義されている複数の構文のうちどの構文に一致するかを判定するステップと、ビジネスルール文の構文要素に含まれる要素変数をＤＲＬ言語文の要素変数に変換するための変換情報を参照してビジネスルール文の要素変数をＤＲＬ言語文の要素変数に変換するとともに、ビジネスルール文の要素変数以外の構文要素を、ビジネスルール文の構文に一致するとの判定がなされた構文を有するＤＲＬ言語文の構文要素に変換することにより、ビジネスルール文をＤＲＬ言語文に変換するステップと、を実行させるためのものである。
【発明の効果】
【００１１】
本発明によれば、自然言語で記述されたビジネスルール文をＤＲＬ言語文に自動変換することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態に係る言語変換装置の構成を示すブロック図である。
【図２】本実施形態に係る言語変換処理を説明するための図である。
【図３】本実施形態に係る言語変換処理を説明するための図である。
【図４】本実施形態に係る言語変換処理を説明するための図である。
【図５】本実施形態に係る言語変換処理を説明するための図である。
【図６】本実施形態に係る言語変換処理を説明するための図である。
【図７】本実施形態に係る言語変換処理を説明するための図である。
【図８】本実施形態に係る言語変換処理を説明するための図である。
【図９】本実施形態に係る言語変換処理を説明するための図である。
【図１０】本実施形態に係る言語変換処理を説明するための図である。
【図１１】本実施形態に係る言語変換処理を説明するための図である。
【図１２】本実施形態に係る言語変換処理を説明するための図である。
【図１３】本実施形態に係る言語変換処理を説明するための図である。
【図１４】本実施形態に係る言語変換処理を説明するための図である。
【図１５】本実施形態に係る言語変換処理を説明するための図である。
【図１６】本実施形態に係る言語変換処理を説明するための図である。
【図１７】本実施形態に係る言語変換処理の流れを示すフローチャートである。
【図１８】本実施形態に係る言語変換処理の流れを示すフローチャートである。
【図１９】本実施形態に係る言語変換処理の流れを示すフローチャートである。
【図２０】本実施形態に係る言語変換処理の流れを示すフローチャートである。
【図２１】本実施形態に係る言語変換処理の流れを示すフローチャートである。
【図２２】本実施形態に係る言語変換処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、各図を参照しながら本発明の実施形態について説明する。
図１は本実施形態に係る言語変換装置１０の構成を示すブロック図である。言語変換装置１０は、自然言語で記述されたビジネスルール文をＤＲＬ言語文に変換するためのコンピュータである。本明細書では、自然言語で記述されたビジネスルール文を「ＢＲＭＳ自然言語文」と称する。言語変換装置１０は、ＣＰＵ１１、ＲＡＭ１２、ＲＯＭ１３、入力インタフェース１４、出力インタフェース１５、及び記憶装置１６を備えている。記憶装置１６は、コンピュータ読み取り可能な記録媒体（例えば、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＤＶＤ等の可搬媒体、ハードディスクドライブ又はソリッドステートドライブ等の記憶資源）である。記憶装置１６には、言語変換プログラム２０、構文定義情報３０、及び変換情報４０が格納されている。言語変換プログラム２０は、ＢＲＭＳ自然言語文をＤＲＬ言語文に変換するためのコンピュータプログラムである。ＣＰＵ１１と言語変換プログラム２０との協働により実現される言語変換機能は、言語変換ツール又は言語変換エンジンと呼ばれる。
【００１４】
言語変換プログラム２０は、その主プログラムの中でサブルーチンとして呼び出されて、読み込み処理（図１７に示すステップ１０２〜１０４）及び言語変換処理（図１８に示すステップ１０５）を実行するための複数のソフトウェアモジュールを備える。言語変換処理（図１８に示すステップ１０５）を実行するソフトウェアモジュールは、ＢＲＭＳ自然言語文を読み込む処理（図１８に示すステップ１０６）を実行するサブモジュール、ＢＲＭＳ自然言語文の分割処理（図１８に示すステップ１０７）を実行するサブモジュール、エラー判定（図１８に示すステップ１０８）を実行するサブモジュール、エラー情報出力処理（図１８に示すステップ１０９）を実行するサブモジュール、及びＤＲＬ言語文作成処理（図１８に示すステップ１１０）を実行するサブモジュールを含む。ＢＲＭＳ自然言語文の分割処理（図１８に示すステップ１０７）を実行するサブモジュールは、図１９乃至図２２に示す各ステップを実行する下位モジュールを含む。図１７乃至図２２に示す各ステップの詳細については、後述する。但し、各ステップの機能は、必ずしもソフトウェアモジュールによって実現される必要はなく、その一部又は全部は、言語変換装置１０のハードウェアモジュールによって実現されてもよい。
【００１５】
構文定義情報３０は、ＢＲＭＳ自然言語文を構文単位でＤＲＬ言語文に変換するための複数の構文を定義する。変換情報４０は、ＢＲＭＳ自然言語文の要素変数をＤＲＬ言語文の要素変数に変換するための情報を定義する。変換情報４０は、例えば、ＢＲＭＳ自然言語文のクラス変数からＤＲＬ言語文のクラス変数への変換を定義するクラス定義情報４１、ＢＲＭＳ自然言語文のグローバル変数からＤＲＬ言語文のグローバル変数への変換を定義するルール定数情報４２、及びＢＲＭＳ自然言語文のメソッドからＤＲＬ言語文のメソッドへの変換を定義するルールメソッド情報４３を含む。クラス定義情報４１は、クラス名と、クラスを構成する属性を合わせたクラスそのものの情報とを定義したものである。クラス名は、クラス定義情報４１に定義されているクラス名称である。ルール定数情報４２は、ＢＲＭＳ自然言語定数名、ＤＲＬ言語定数名、及び定数の型を対応付けたものである。ルールメソッド情報４３は、ＢＲＭＳ自然言語関数名、ＤＲＬ言語関数名、及び関数の型を対応付けたものである。
【００１６】
ＣＰＵ１１は、言語変換プログラム２０を解釈及び実行することにより、構文定義情報３０に基づいてＢＲＭＳ自然言語文の構文を解析し、変換情報４０を参照してＢＲＭＳ自然言語文をＤＲＬ言語文に変換する処理を行う。ＲＡＭ１２は、ＣＰＵ１１のワークエリアとして機能し、言語変換に必要な情報（例えば、構文定義情報３０や変換情報４０等）を読み込む。ＲＯＭ１３は、ＣＰＵ１１のＢＩＯＳ等のプログラムを格納する不揮発性メモリである。入力インタフェース１４は、ＢＲＭＳ自然言語文を入力するためのインタフェースである。出力インタフェース１５は、ＢＲＭＳ自然言語文から変換されたＤＲＬ言語文を出力するためのインタフェースである。
【００１７】
次に、図２乃至図８を参照しながら言語変換処理の概略について説明する。
構文定義情報３０は、ＢＲＭＳ自然言語文からＤＲＬ言語文へのあらゆる変換パターンを構文単位で定義する。一つの構文は、複数の構文要素から成る文であり、構文要素には、要素変数が含まれる。要素変数には、クラス変数、グローバル変数、メソッド、文字列、数値、日付、配列、及び数式が含まれる。構文要素と要素変数は、どちらも、構文を構成する要素として共通する側面を有するが、構文要素は、構文解析の指標となるのに対し、要素変数は、構文解析の指標とならない点で両者は異なる側面を有している。構文定義情報３０は、キーワード、キー構文を示すフラグ、ＢＲＭＳ自然言語の構文、構文の文字数、構文を適用する制御構造の範囲、制御構造の指定、構文に対する特殊処理（例えば、図１４に示す変換処理等）、オブジェクト用のＤＲＬ言語文、変数用のＤＲＬ言語文、構文要素の数、及び構文要素の内容の情報を含む。「キーワード」は、構文解析の指標となる構文要素の文字列を意味し、具体的には、論理演算子（例えば、図７に示す「および」、「または」、「（否定）」、及び「（）」）並びに制御構造（例えば、図８に示す「定義部」、「条件部」、及び「処理部」）を含む。「文字列」は、構文要素を構成する単位であり、社会通念上文字として認識されているもの（例えば、漢字、平仮名、片仮名、アルファベット、ローマ字、ギリシャ文字等）に限らず、数字や記号等を含む。「キー構文を示すフラグ」は、キーワードの使用が定義された構文を識別するための識別情報である。「構文要素の内容の情報」は、ＢＲＭＳ自然言語文を構成する構文要素及び要素変数の情報である。構文を構成する構文要素及び要素変数のそれぞれの配列順やその文字列は、構文定義情報３０において予め定められているものとする。従って、構文定義情報３０で定義されていない構文は、ＤＲＬ言語文への変換が不能となるため、変換エラーとなる。図２は、構文定義情報３０により定義される言語変換の一例を示しており、ＢＲＭＳ自然言語の構文「＄Ａ＄は＄Ｂ＄と同一である」は、ＤＲＬ言語の構文「＄Ａ＄＝＝＄Ｂ＄」に変換される。ここで、＄Ａ＄及び＄Ｂ＄は、それぞれ要素変数である。説明の便宜上、自然言語の一例として、日本語を例示しているが、人間が理解できる言語であれば、特に限定されるものではなく、例えば、英語、中国語、ドイツ語、フランス語等でもよい。
【００１８】
構文定義情報３０により定義されるＢＲＭＳ自然言語文の構文「＄Ａ＄は＄Ｂ＄と同一である」は、図３に示すように、複数の構文要素に分割される。一方、図４は、言語変換の対象となる具体的なＢＲＭＳ自然言語文を示しており、複数の構文要素に分割される。ＣＰＵ１１は、言語変換の対象となるＢＲＭＳ自然言語文の構文と構文定義情報３０で定義される構文とを比較することにより、言語変換の対象となるＢＲＭＳ自然言語文の構文が、構文定義情報３０により定義される構文「＄Ａ＄は＄Ｂ＄と同一である」に一致するものと判定する。構文の一致が判定されると、図５に示すように、ＣＰＵ１１は、「契約者情報（現在）の契約者タイプコード」が要素変数＄Ａ＄に対応し、“０１”が要素変数＄Ｂ＄に対応するものと判定する。「契約者情報（現在）の契約者タイプコード」のように、「…の〜」という形式で記述される要素変数は、クラス変数であることを示しており、この例では、「契約者情報（現在）」は、「契約者タイプコード」の親クラス（スーパークラス）である。ＣＰＵ１１は、クラス定義情報４１を参照することにより、クラス変数の変換を行う。「契約者情報（現在）の契約者タイプコード」は、「契約者情報（現在）」の子クラス（サブクラス）である「契約者タイプコード」の取得を指示するメソッドget Contractor Type Code()を用いて、＄契約者情報＿現在＿get Contractor Type Code()に変換される。メソッドの引数は、全種類の要素変数を指定することができる。一方、“”で囲まれた字句は、「文字列」として認識される。ＣＰＵ１１は、文字列である“０１”をそのまま“０１”に変換する。このような処理を経て、図４に示す自然言語で記述されたビジネスルール文は、図６に示すＤＲＬ言語文に変換される。
【００１９】
なお、要素変数がグローバル変数である場合には、ルール定数情報４２を参照してグローバル変数の変換が行われ、要素変数がメソッドある場合には、ルールメソッド情報４３を参照してメソッドの変換が行われる。要素変数が数値、日付、配列、又は数式である場合には、そのまま変換される。ここで、日付は、ＹＹＹＹ／ＭＭ／ＤＤ形式、又はＹＹＹＹ年、ＭＭ月、ＤＤ日の形式を有する。配列は、｛ａ，ｂ，…,ｃ｝の形式を有し、ａ，ｂ，…,ｃとして全種類の要素変数を指定することができる。数式は、数字と算術演算子との組み合わせから成り、算術演算子として、「＋」、「−」、「×」、「÷」、（）を指定することができる。
【００２０】
ＢＲＭＳ自然言語文、及びＤＲＬ言語文は、共に、論理演算子で連結された論理式として記述することが可能であるから、ＣＰＵ１１は、論理演算子と論理式とを区別して言語変換を行う。例えば、図７に示すように、論理演算子の変換も構文定義情報３０に定義される。また、ＢＲＭＳ自然言語文は、複数種類の制御構文（例えば、「定義部」、「条件部」、「処理部」）を有してもよい。ＣＰＵ１１は、制御構文の種類を区別して、言語変換を行う。例えば、図８に示すように、制御構文の変換も構文定義情報３０に定義される。より具体的には、構文定義情報３０は、制御構文をその種類に応じて区別して定義する文字列の情報を含むとともに、ＢＲＭＳ自然言語文に記述されている特定の構文をそれが記述されている制御構文の種類に応じて異なるＤＲＬ言語文に変換することを定義してもよい。
【００２１】
ＢＲＭＳ自然言語文は、複数の構文がネストされた入れ子構造を含んでもよい。ＣＰＵ１１は、入れ子構造の全体の構文を解析し、入れ子の内側の構文から優先的にＤＲＬ言語文への変換を行う。
【００２２】
なお、ＢＲＭＳ自然言語文の区切れは、論理演算子、制御構文、句読点等のキーワードで判定されるため、一つの構文の中の任意の箇所で改行することができる。
【００２３】
構文定義情報３０は、複数種類の基本的な構文の組み合わせによりＢＲＭＳ自然言語文をＤＲＬ言語文に変換できるように類型化されている。基本的な言語変換例の一例について、図９乃至図１６を参照しながら説明する。
図９に示すように、構文定義情報３０は、ＢＲＭＳ自然言語文の要素変数の中で「この」が付いた要素変数を“this”に変換するように定義してもよい。例えば、ＢＲＭＳ自然言語文「設定：あるＡを回線情報とする。ここで、Ｂはこの回線情報と同一である」は、ＤＲＬ言語文「＄回線情報：Ａ（Ｂ＝＝this）」に変換される。
【００２４】
図１０に示すように、構文定義情報３０は、要素変数の型に応じてＢＲＭＳ自然言語文を異なるＤＲＬ言語文に変換するように定義してもよい。例えば、要素変数が整数型の変数である場合に、ＢＲＭＳ自然言語文「ＡはＢと同一である」は、ＤＲＬ言語文「Ａ＝＝Ｂ」に変換される。一方、要素変数がオブジェクトである場合に、ＢＲＭＳ自然言語文「ＡはＢと同一である」は、ＤＲＬ言語文「Ａ.equals（Ｂ）」に変換される。但し、オブジェクトＡがnullである場合は、Exceptionとなるため、図１１に示すように、Ａ！＝nullを追加する。
【００２５】
図１２に示すように、構文定義情報３０は、否定がかかるＢＲＭＳ自然言語文の全体を！（）で囲んでＤＲＬ言語文に変換するように定義してもよい。例えば、ＢＲＭＳ自然言語文「数値条件：Ａがない」は、ＤＲＬ言語文「！（Ａ＝＝０）」に変換される。
【００２６】
図１３に示すように、構文定義情報３０は、ＢＲＭＳ自然言語文に記述されている特定の構文をそれが記述されている制御構文の種類に応じて異なるＤＲＬ言語文に変換するように定義してもよい。例えば、ＢＲＭＳ自然言語文「ＡはＢと同一である」は、それが定義部に記述されている場合に、ＤＲＬ言語文「Ａ＝＝Ｂ」に変換される。この言語変換は、要素変数がオブジェクトであっても適用されるため、図１０に示す言語変換の例外である。一方、ＢＲＭＳ自然言語文「ＡはＢと同一である」は、それが条件部に記述されている場合に、ＤＲＬ言語文「Ａ.equals（Ｂ）」に変換される。
【００２７】
図１４に示すように、構文定義情報３０は、ＢＲＭＳ自然言語文の配列要素を「||」で連結してＤＲＬ言語文に変換するように定義してもよい。例えば、ＢＲＭＳ自然言語文「Ａは｛“ＵＤ，”“ＵＨ”｝の１つである」は、それが定義部に記述されている場合に、ＤＲＬ言語文「Ａ in （“ＵＤ，”“ＵＨ”）」に変換される。一方、ＢＲＭＳ自然言語文「Ａは｛“ＵＤ，”“ＵＨ”｝の１つである」は、それが条件部に記述されている場合に、ＤＲＬ言語文「Ａ.equals（“ＵＤ”）||Ａ.equals（“ＵＨ”）」に変換される。
【００２８】
図１５に示すように、構文定義情報３０は、ＢＲＭＳ自然言語で記述されたメソッドをＤＲＬ言語で記述されたメソッドへ変換するように定義してもよい。ＢＲＭＳ自然言語では、メソッドを《》で囲み、その引数を＜＞で囲んで指定することができる。メソッドの引数は、全種類の要素変数を指定することが可能である。例えば、ＢＲＭＳ自然言語文「メソッド：《文字列取得》＜Ａ＞の＜１＞文字目から＜１＞文字目までは“１”と同一である」は、ＤＲＬ言語文「rule Function. call Sub String（Ａ．１，１）.equals （“１”）」に変換される。
【００２９】
図１６に示すように、構文定義情報３０は、一つの制御構造に記述されたＢＲＭＳ自然言語文の特定の構文を複数の異なる制御構造に分けた上でＤＲＬ言語文に変換するように定義してもよい。例えば、ＢＲＭＳ自然言語文の数値条件は、条件部に記載されるが、ＤＲＬ言語文ではこれを定義部と条件部に分けて記載する。具体的には、条件部に記載されるＢＲＭＳ自然言語文「数値条件：Ａがない。ここでＡの属性はＢの属性と同一である」は、定義部に記載されるＤＲＬ言語文「＄var１:Long （） from accumulate （＄a1:Ａ（Ａ．属性！＝null＆＆Ａ．属性.equals （Ｂ）, count （＄a1）））」と、条件部に記載されるＤＲＬ言語文「＄var１＝＝０」とに分けて変換される。なお、定義部に記載されるＤＲＬ言語文は、関数accumulateの引数として関数countを用いる入れ子構造を有しており、入れ子の内側の引数から優先的にＤＲＬ言語文への変換が行われる。このような入れ子構造では、ＣＰＵ１１は、入れ子構造全体の構文を解析した後に、入れ子の内側から外側へ順次言語変換する。
【００３０】
次に、図１７乃至図２２を参照しながら言語変換処理の詳細について説明する。
ステップ１０１では、ＢＲＭＳ自然言語文からＤＲＬ言語文への言語変換の指示がオペレータにより入力される。
ステップ１０２では、ＣＰＵ１１は、各クラス定義について記憶装置１６からクラス定義情報４１を読み込む処理１０２Ａを再帰的に繰り返す。
ステップ１０３では、ＣＰＵ１１は、各ルール定数について記憶装置１６からルール定数情報４２を読み込む処理１０３Ａを再帰的に繰り返す。
ステップ１０４では、ＣＰＵ１１は、各ルールメソッドについて記憶装置１６からルールメソッド情報４３を読み込む処理１０４Ａを再帰的に繰り返す。
ステップ１０５では、ＣＰＵ１１は、入力フォルダに格納されている各設計書について言語変換処理（ステップ１０６〜ステップ１１０）を行う。ここで、設計書とは、言語変換対象となるＢＲＭＳ自然言語文を意味する。ステップ１０５の初期設定として、ＣＰＵ１１は、エラー件数をカウントするパラメータの値をゼロにリセットし、パッケージを管理するパラメータの値をゼロにリセットし、数値条件を管理するパラメータの値をゼロにリセットし、数値条件の状態を管理するパラメータを“false“にリセットし（数値条件を処理しているきは、“true“になる）、定義部で宣言した変数の数を管理するパラメータの値をゼロにリセットする。
【００３１】
ステップ１０６では、ＣＰＵ１１は、各ＢＲＭＳ自然言語文について入力インタフェース１４からＢＲＭＳ自然言語文を読み込む処理１０６Ａを再帰的に繰り返す。
【００３２】
ステップ１０７では、ＣＰＵ１１は、構文定義情報３０及び変換情報４０を用いて、ＢＲＭＳ自然言語文を分割する処理を行い、ＢＲＭＳ自然言語情報、構文分割情報、及び要素変数情報を作成する。ＢＲＭＳ自然言語情報は、ＢＲＭＳ自然言語文の内容、行位置、列位置、数値条件内の文を判断するフラグ、ＢＲＭＳ自然言語文を構文分割した分割数、及びＢＲＭＳ自然言語文を構文分割した内容の情報を含む。構文分割情報は、構文定義情報の番号、キー又は構文、ＢＲＭＳ自然言語文の内容、変換結果であるＤＲＬ言語文、ＢＲＭＳ自然言語文で使用している変数要素の数、及びＢＲＭＳ自然言語文で使用している変数要素の内容の情報を含む。要素変数情報は、＄Ａ＄や＄Ｂ＄等の構文定義情報の要素変数、要素変数の種別（関数、数式、配列、文字列、数値、null、変数等）、要素変数の型（文字列、整数等）、ＢＲＭＳ自然言語文の要素変数の内容、及び変換結果であるＤＲＬ言語文の要素変数の内容の情報を含む。ステップ１０７の詳細については、後述する。
【００３３】
ステップ１０８では、ＣＰＵ１１は、エラーの有無を判定する。
エラーがあるときは、ＣＰＵ１１は、エラー情報を出力する（ステップ１０９）。エラーがないときは、ＣＰＵ１１は、ＤＲＬ言語文作成処理を行う（ステップ１１０）。
ステップ１１０では、ＣＰＵ１１は、出力ファイルをオープンし（ステップ１１１）、ヘッダ部を出力し（ステップ１１２）、ＤＲＬ言語構文出力処理（ステップ１１３）を行い、出力ファイルをクローズする（ステップ１１４）。ステップ１１２では、ＣＰＵ１１は、固定のimport文と、パッケージ情報と、Rule Functionのimport文と、Rule文とをヘッダ部に出力し、Rule Functionをglobal宣言する。ステップ１１３では、ＣＰＵ１１は、数値条件の条件定義を出力する処理１１３Ａを各数値条件について再帰的に繰り返し、更にＤＲＬ言語構文を出力する処理１１３Ｂを構文分割情報について再帰的に繰り返す。なお、処理１１３Ａ，１１３Ｂは、ＢＲＭＳ自然言語情報について再帰的に繰り返し実行される。
【００３４】
ＢＲＭＳ自然言語文を分割するステップ１０７では、ＣＰＵ１１は、ＢＲＭＳ自然言語文について、ステップ２０１〜ステップ２０５を再帰的に繰り返す。
ステップ２０１では、ＣＰＵ１１は、ＢＲＭＳ自然言語文の先頭からキーワードマッチングを行う。キーワードマッチングでは、ＢＲＭＳ自然言語文を構成する文字列とキーワードとを比較し、キーワードの文字列に一致する文字列がＢＲＭＳ自然言語文に存在するか否かが解析される。「キーワード」は、構文解析の指標となる構文要素の文字列を意味し、具体的には、論理演算子及び制御構造を含む。ＢＲＭＳ自然言語文にキーワードが存在する場合は、構文定義情報３０を用いて構文分割情報を作成する（ステップ２０２）。構文分割情報は、構文定義の番号、解析対象のＢＲＭＳ自然言語文がキー構文であるか否かを示す情報、構文定義情報３０に定義されているＢＲＭＳ自然言語文、ＢＲＭＳ自然言語文に対応するＤＲＬ言語構文（オブジェクト用の構文）の情報を含む。なお、「構文定義の番号」は、各構文を識別するために割り当てられた番号であり、この番号は、構文定義情報３０に規定されている。「キー構文」とは、「キーワード」の使用が定義された構文を意味する。ＣＰＵ１１は、ＢＲＭＳ自然言語文の特定の構文に、制御構文を定義する文字列が記述されているか否かを判定し、その判定結果が肯定の場合に、特定の構文を制御構文の種類に応じて異なるＤＲＬ言語文に変換してもよい。一方、ＢＲＭＳ自然言語文にキーワードが存在しない場合は、ＣＰＵ１１は、キーワード以外の構文要素とＢＲＭＳ自然言語文とを比較してＢＲＭＳ自然言語文を解析するステップ２０４と、要素変数を変換してＤＲＬ言語構文を作成するステップ２０５とを行う。ステップ２０４，２０５の詳細については、後述する。
ステップ２０２又はステップ２０５が終了すると、ＣＰＵ１１は、数値条件の構文であれば、数値条件情報を設定する（ステップ２０３）。数値条件情報は、数値条件、数値条件内の構文数、及びＢＲＭＳ自然言語文の管理番号の情報を含む。
【００３５】
ステップ２０４では、ＣＰＵ１１は、ＢＲＭＳ自然言語文と構文要素とを比較し、構文分割情報を作成する処理２０４Ａを構文要素と構文定義情報のそれぞれについて再帰的に繰り返す。構文分割情報は、構文定義の番号、解析対象のＢＲＭＳ自然言語文がキー構文であるか否かを示す情報、ＢＲＭＳ自然言語文、要素変数数（一つのＢＲＭＳ自然言語文に含まれている要素変数の個数）、及び要素変数の情報を含む。
【００３６】
ここで、処理２０４Ａの詳細について説明する。処理２０４Ａの解析対象となるＢＲＭＳ自然言語文は、「キーワード」を含まないため、例えば、図４に示すような構文を有している。ＣＰＵ１１は、解析対象となるＢＲＭＳ自然言語文の文字列と、構文定義情報３０に定義されている各構文を構成する構文要素の文字列（例えば、“は”及び“と同一である”の文字列）とを比較し、解析対象となるＢＲＭＳ自然言語文の構文が、構文定義情報３０に定義されている複数の構文のうちどの構文に一致するかを判定する。このとき、ＣＰＵ１１は、解析対象となるＢＲＭＳ自然言語文を構成する文字列のうち、構文定義情報３０に定義されている各構文を構成する構文要素（要素変数を除く）の文字列に一致しない文字列を「要素変数」と見做す。このような処理を経て、ＣＰＵ１１は、解析対象となる、図４に示すＢＲＭＳ自然言語文の構文が、“は”及び“と同一である”の文字列を構文要素として有するものと判定すると、当該解析対象となるＢＲＭＳ自然言語文の構文が、構文定義情報３０に定義されている、図３に示す構文に一致するものと判定する。構文の一致が判定されると、ＣＰＵ１１は、図５に示すように、解析対象となるＢＲＭＳ自然言語文の構文要素である「契約者情報（現在）の契約者タイプコード」が要素変数＄Ａ＄に対応し、解析対象となるＢＲＭＳ自然言語文の構文要素である“０１”が要素変数＄Ｂ＄に対応するものと判定する。ＣＰＵ１１は、構文定義情報３０を参照することにより、「契約者情報（現在）の契約者タイプコード」がクラス変数であることを確認すると、クラス定義情報４１に基づいて、「契約者情報（現在）の契約者タイプコード」を＄契約者情報＿現在＿get Contractor Type Code()に変換する。一方、“”で囲まれた字句は、「文字列」として認識される。ＣＰＵ１１は、文字列である“０１”をそのまま“０１”に変換する。このような処理を経て、図４に示す自然言語で記述されたビジネスルール文は、図６に示すＤＲＬ言語文に変換される。
【００３７】
ステップ２０５では、ＣＰＵ１１は、構文要素が＄Ｂｏｍ＄の場合に、クラス定義からクラス名を取得し、クラスのパッケージを管理する処理２０５Ａと、構文要素が＄Ｂｏｍ＄以外の場合に、ＢＲＭＳ自然言語文の構文要素を変換する処理２０５Ｂとを構文要素について再帰的に繰り返す。ここで、＄Ｂｏｍ＄は、クラス名としてクラス定義情報４１に定義されている。クラスは、パッケージと呼ばれる情報を有しており、処理２０５Ａでは、そのパッケージの管理が行われる。要するに、解析対象となるＢＲＭＳ自然言語文の構文要素のうち、＄Ｂｏｍ＄については、処理２０５Ａが実行され、＄Ｂｏｍ＄以外については、処理２０５Ｂが実行される。処理２０５Ｂの詳細については後述する。
【００３８】
ステップ２０５Ａ，２０５Ｂが終了すると、ＣＰＵ１１は、ＢＲＭＳ自然言語文が設定の場合に、設定変数情報を管理する（ステップ２０５Ｃ）。設定変数情報は、定義部で設定した変数（ＢＲＭＳ自然言語文で使用する変数）、元の変数名（クラスの和名）、及びクラス（クラスの英名）の情報を含む。
ステップ２０５Ｃが終了すると、ＣＰＵ１１は、構文要素が配列の場合に、配列要素を分解して“or”で連結する処理２０５Ｄと、構文要素が配列以外の場合に、ＤＲＬ言語文の要素変数を変換内容で置換する処理２０５Ｅとを各構文要素について再帰的に繰り返す。
ステップ２０５Ｄ及びステップ２０５Ｅが終了すると、ＣＰＵ１１は、ＢＲＭＳ自然言語文が否定である場合に、ＤＲＬ言語文を“！（”と“）”とで括る（ステップ２０６Ｆ）。
ステップ２０６Ｆが終了すると、ＣＰＵ１１は、数値条件情報の数値条件に構文定義情報のオブジェクト用構文を定義し、構文定義情報のＤＲＬ言語構文に構文定義情報の変数用構文を定義する（ステップ２０５Ｇ）。
【００３９】
ＢＲＭＳ自然言語文の構文要素を変換する処理２０５Ｂでは、ＣＰＵ１１は、構文要素の種類に応じた変換処理を行う。構文要素が関数の場合、ＣＰＵ１１は、ＢＲＭＳ自然言語関数変換処理３０１を行う。この処理３０１では、ＣＰＵ１１は、≪≫内を関数名として保持し（ステップ３０１Ａ）、＜＞内を引数として内部配列に保持し（ステップ３０１Ｂ）、ルールメソッド情報４３を参照して関数名を変換する（ステップ３０１Ｃ）。但し、＜＞はネストするので、ステップ３０１Ｂでは、対応する括弧までを引数として処理する。ステップ３０１Ｃが終了すると、ＣＰＵ１１は、ＢＲＭＳ自然言語を要素変換する処理３０１Ｄと、変換結果を“，”で連結して引数を作成する処理３０１Ｅとを各引数について再帰的に繰り返す。
【００４０】
一方、構文要素が日付の場合、ＣＰＵ１１は、日付の形式であることを確認し、これを文字列として変換する（ステップ３０２）。構文要素が数式の場合、ＣＰＵ１１は、ＢＲＭＳ自然言語数式変換処理３０３を行う。この処理３０３では、ＣＰＵ１１は、算術演算子で連結された要素変数を切り離し（ステップ３０３Ａ）、切り出した要素変数について、要素変換をし（ステップ３０３Ｂ）、変換結果を演算子で連結して数式を作成する処理３０３Ｃを再帰的に繰り返す。構文要素が配列の場合、ＣＰＵ１１は、｛｝を削除する（ステップ３０４）。配列は、｛｝で囲まれた要素から成る。構文要素が文字列の場合、ＣＰＵ１１は、“”を削除する（ステップ３０５）。文字列は、“”で囲まれた文字列から成る。構文要素が数値の場合、ＣＰＵ１１は、そのまま変換する（ステップ３０６）。構文要素が“null”の場合、ＣＰＵ１１は、そのまま変換する（ステップ３０７）。構文要素が変数の場合、ＣＰＵ１１は、ＢＲＭＳ自然言語変数変換処理３０８を行う。この処理３０８では、ＢＲＭＳ自然言語文を「の」で分割して要素変数を切り出す（ステップ３０８Ａ）。そして、ＣＰＵ１１は、切り出した要素変数の頭に“＄”を追加する処理３０８Ｂと、２番目以降の要素変数についてクラス定義を参照してクラス属性に変換する処理３０８Ｃとを各要素変数について再帰的に繰り返す。但し、処理３０８Ｂでは、「この」が付いた要素変数は“this”に変換する。また、処理３０８Ｃでは、取得したクラス属性がオブジェクト型の場合は、getter参照とする。
【００４１】
本実施形態によれば、自然言語で記述されたビジネスルール文をＤＲＬ言語文に自動変換することができる。また、複数種類の基本的な構文の組み合わせによりビジネスルールをＤＲＬ言語文に変換することにより、言語変換処理を簡略化することができる。また、特定の構文が記述されている制御構文の種類に応じて異なるＤＲＬ言語文に変換することにより、多様な変換処理を可能にできる。また、ビジネスルール文の入れ子構造の全体の構文を解析し、入れ子の内側の構文から優先的にＤＲＬ言語文への変換を行うことにより、複雑な入れ子構造を適切に解析して言語変換することができる。
【００４２】
なお、言語変換プログラム２０は、言語変換装置１０から伝送媒体を介して、或いは伝送媒体中の伝送波を介して他のコンピュータシステムに伝送されてもよい。伝送媒体は、インターネット等のネットワークや電話回線等の通信回線のように情報を伝送する機能を有する媒体のことをいう。
【符号の説明】
【００４３】
１０…言語変換装置  １１…ＣＰＵ  １２…ＲＡＭ  １３…ＲＯＭ  １４…入力Ｉ／Ｆ  １５…出力Ｉ／Ｆ  １６…記憶装置  ２０…言語変換プログラム  ３０…構文定義情報  ４０…変換情報  ４１…クラス定義情報  ４２…ルール定数情報  ４３…ルールメソッド情報
【図１】
2015028763.tif 000003
【図２】
2015028763.tif 000004
【図３】
2015028763.tif 000005
【図４】
2015028763.tif 000006
【図５】
2015028763.tif 000007
【図６】
2015028763.tif 000008
【図７】
2015028763.tif 000009
【図８】
2015028763.tif 000010
【図９】
2015028763.tif 000011
【図１０】
2015028763.tif 000012
【図１１】
2015028763.tif 000013
【図１２】
2015028763.tif 000014
【図１３】
2015028763.tif 000015
【図１４】
2015028763.tif 000016
【図１５】
2015028763.tif 000017
【図１６】
2015028763.tif 000018
【図１７】
2015028763.tif 000019
【図１８】
2015028763.tif 000020
【図１９】
2015028763.tif 000021
【図２０】
2015028763.tif 000022
【図２１】
2015028763.tif 000023
【図２２】
2015028763.tif 000024