語幹解析
インターシステムズは、InterSystems IRIS® 自然言語処理 (NLP) を非推奨Opens in a new tabにしました。インターシステムズ製品の今後のバージョンから削除される可能性があります。以下のドキュメントは、既存ユーザのみに向けたリファレンスとしています。代替のソリューションを見いだすためのサポートを必要とする既存ユーザはインターシステムズのサポート窓口Opens in a new tabにお問い合わせください。
NLP は、語幹解析をサポートしています。これは、ソースの NLP インデックス作成を実行する際のオプション機能です。語幹解析により、NLP は、いくつかの文法的な形式がある単語の語幹形式を認識できます。例えば、一般に、名詞の語幹は主格の単数形の形式です。動詞の語幹は、一般に、不定詞の形式になります。語幹解析は、エンティティ・レベルで行われます。つまり、NLP は、エンティティに含まれる個別の単語の語幹形式ではなく、エンティティの語幹形式を確立するということです。これは、元のソース・テキストからの、追加レベルの正規化になります。
語幹解析のサポートにより、NLP インデックス作成の領域要件が大幅に増加します。また、NLP インデックス作成のパフォーマンスにも影響を及ぼします。ドメインに対する語幹解析は、この機能が本当に必要な場合にのみ有効にすることをお勧めします。語幹解析は、ロシア語とウクライナ語のテキスト・ソースに使用することが推奨されています。
語幹解析は、パス関係のエンティティに対して実行されません。
現時点では、日本語に対する語幹解析のサポートはありません。
語幹解析により、解析済みエンティティは文法的に無効になることがあります。例えば、エンティティ “two bananas“ の語幹は “two banana“ になります。実際には、エンティティの語幹形式はインデックス作成されたソースには存在しないため、NLP では、語幹形式と “表現形式“ をペアにしています。この表現形式とは、ソース内でインデックス作成されたエンティティとして実際に存在する語幹形式に最も近い (レーベンシュタイン距離で判断) エンティティのことです。インデックス作成されたエンティティとしてソース内に語幹形式が存在する場合は、当然のことながら、表現形式と語幹形式が同じになります。
NLP は、語幹の生成にプラグイン・アーキテクチャを採用することで、サードパーティ製の語幹解析ツールを使用できるようにしています (利用可能な場合)。NLP では、語幹の生成に Hunspell を使用します。そのため、語幹解析が必要になったときには、NLP は INSTALLDIR/dev/hunspell ディレクトリで指定言語用の Hunspell affix (.aff) ファイルを検索します。指定された言語用の Hunspell ディクショナリが用意されていない場合、NLP は、指定された言語用の %Text サブクラスを検索します。InterSystems IRIS® Data Platform は、5 つの NLP サポート対象言語用の %Text データ型クラス、%Text.English (英語)、%Text.French (フランス語)、%Text.German (ドイツ語)、%Text.Portuguese (ポルトガル語)、および %Text.Spanish (スペイン語) を提供しています。Hunspell ディクショナリ・ファイルも言語固有の %Text クラスも使用できない場合、NLP は %Text.Text クラスを使用します。詳細は、"インターシステムズ・クラス・リファレンス" の %TextOpens in a new tab パッケージ・クラスのドキュメントを参照してください。
語幹解析の構成
語幹解析は、空のドメインに対してのみ有効化または無効化できます。ドメインにソース・テキストが入力されると、最初にドメインのすべてのコンテンツを削除した場合を除き、そのドメインに対する語幹解析オプションは変更できなくなります。
空の NLP ドメインに対して語幹解析を有効化するには、$$$IKPSTEMMING ドメイン・パラメータを 1 に設定します。語幹解析は、既定で無効化されています。空の NLP ドメインの語幹解析を無効化するには、$$$IKPSTEMMING を 0 に設定します。
このパラメータを設定するときには、ドメインが空になっている必要があります。語幹解析が有効化されているドメインにソース・テキストを追加すると、NLP は、すべてのエンティティに語幹形式を作成し、語幹をクエリできるよう適切なデータ構造に移入します。
語幹解析機能のインスタンスを作成して、既定の言語を指定します (または %iKnow.Stemming.MultiLanguageConfig を使用して複数の言語を指定します)。言語の指定には、その言語の ISO 639-1 の 2 文字の省略形式を使用します。
Hunspell
InterSystems IRIS は、dev/hunspell ディレクトリに、ロシア語用 (ru) とウクライナ語用 (uk) の Hunspell ファイルを用意しています。その他の言語用の Hunspell ディクショナリ・ファイルは、InterSystems IRIS の dev/hunspell ディレクトリに配置する必要があります。
NLP は、ある重要な一点で、Hunspell 語幹解析の動作を変更しています。Hunspell 語幹解析では、単語から接頭語が削除されます。NLP では、Hunspell によって削除された接頭語を元に戻してから、結果としての語幹形式にインデックスを作成します。
Hunspell が 1 つの単語に対して考えられる複数の語幹を返した場合、NLP は、エンティティが概念であるか、関係であるかを判断するために、エンティティのコンテキストを使用して、そのような選択肢のあいまいさを解消しようとします。
語幹取得のメソッド
以下に示す %iKnow.Queries.EntityAPIOpens in a new tab のメソッドは、語幹の値を返します。
-
GetStem()Opens in a new tab は、指定したエンティティ文字列に対応する語幹文字列を返します。
-
GetStemId()Opens in a new tab は、指定した語幹文字列の語幹 ID を返します (ドメイン内に語幹文字列が存在する場合)。
-
GetStemValue()Opens in a new tab は、指定した語幹 ID の語幹文字列を返します。
-
GetStemRepresentationForm()Opens in a new tab は、指定した語幹 ID の表現形式を返します。
指定した語幹 ID についての頻度と分布を返すこともできます。
語幹の使用
多くの NLP クエリ・メソッドでは、エンティティではなく、語幹に対してクエリを実行できます。こうしたクエリ・メソッドは、メソッド引数 pUseStems=1 を設定することで、エンティティの値そのものではなく、語幹形式の値に基づいた値を返します。既定の pUseStems=0 では、こうしたクエリ・メソッドはエンティティの値そのものに基づいた値を返すようになります。
例えば、既定の GetTop()Opens in a new tab メソッドは、ドメイン内で最も頻繁に出現するエンティティを返します。pUseStems=1 を指定すると、このメソッドは、ドメイン内で最も頻繁に出現する語幹形式を返します。これは、文法的な形式のみ異なる複数のエンティティを 1 つの語幹形式に統合する可能性もあります。
また、語義的な近似の GetProfile()Opens in a new tab メソッドでは、pUseStems=1 を設定することで、ドメイン内のエンティティではなく、語幹形式の近似プロファイルを返すことができます。
語幹解析をサポートしていないドメインでは、pUseStems=1 を設定しても、このメソッドは結果を返しません。
詳細は、このドキュメントの "NLP クエリ" の章を参照してください。