Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

語幹解析

iKnow は、語幹解析をサポートしています。これは、ソースの iKnow インデックス作成を実行する際のオプション機能です。語幹解析により、iKnow は、いくつかの文法的な形式がある単語の語幹形式を認識できます。例えば、一般に、名詞の語幹は主格の単数形の形式です。動詞の語幹は、一般に、不定詞の形式になります。語幹解析は、エンティティ・レベルで行われます。つまり、iKnow は、エンティティに含まれる個別の単語の語幹形式ではなく、エンティティの語幹形式を確立するということです。これは、元のソース・テキストからの、追加レベルの正規化になります。

Note:

語幹解析のサポートにより、iKnow インデックス作成の領域要件が大幅に増加します。また、iKnow インデックス作成のパフォーマンスにも影響を及ぼします。ドメインに対する語幹解析は、この機能が本当に必要な場合にのみ有効にすることをお勧めします。語幹解析は、ロシア語とウクライナ語のテキスト・ソースに使用することが推奨されています。

語幹解析は、パス関係のエンティティに対して実行されません。

現時点では、日本語に対する語幹解析のサポートはありません。

語幹解析により、解析済みエンティティは文法的に無効になることがあります。例えば、エンティティ “two bananas“ の語幹は “two banana“ になります。実際には、エンティティの語幹形式はインデックス作成されたソースには存在しないため、iKnow では、語幹形式と “表現形式“ をペアにしています。この表現形式とは、ソース内でインデックス作成されたエンティティとして実際に存在する語幹形式に最も近い (レーベンシュタイン距離で判断) エンティティのことです。インデックス作成されたエンティティとしてソース内に語幹形式が存在する場合は、当然のことながら、表現形式と語幹形式が同じになります。

iKnow は、語幹の生成にプラグイン・アーキテクチャを採用することで、サードパーティ製の語幹解析ツールを使用できるようにしています (利用可能な場合)。iKnow では、語幹の生成に Hunspell を使用します。そのため、語幹解析が必要になったときには、iKnow は INSTALLDIR/dev/hunspell ディレクトリにある、指定された言語用の Hunspell affix (.aff) ファイルを検索します。指定された言語用の Hunspell ディクショナリが用意されていない場合、iKnow は、指定された言語用の %Text サブクラスを検索します。Caché は、5 つの iKnow サポート対象言語用の %Text データ型クラス、%Text.EnglishOpens in a new tab (英語)、%Text.FrenchOpens in a new tab (フランス語)、%Text.GermanOpens in a new tab (ドイツ語)、%Text.PortugueseOpens in a new tab (ポルトガル語)、および %Text.SpanishOpens in a new tab (スペイン語) を提供しています。Hunspell ディクショナリ・ファイルも言語固有の %Text クラスも使用できない場合、iKnow は %Text.TextOpens in a new tab クラスを使用します。詳細は、"インターシステムズ・クラス・リファレンス" の %TextOpens in a new tab パッケージ・クラスのドキュメントを参照してください。

語幹解析の構成

語幹解析は、空のドメインに対してのみ有効化または無効化できます。ドメインにソース・テキストが入力されると、最初にドメインのすべてのコンテンツを削除した場合を除き、そのドメインに対する語幹解析オプションは変更できなくなります。

空の iKnow ドメインに対して語幹解析を有効化するには、$$$IKPSTEMMING ドメイン・パラメータを 1 に設定します。語幹解析は、既定で無効化されています。空の iKnow ドメインの語幹解析を無効化するには、$$$IKPSTEMMING を 0 に設定します。

このパラメータを設定するときには、ドメインが空になっている必要があります。語幹解析が有効化されているドメインにソース・テキストを追加すると、iKnow は、すべてのエンティティに語幹形式を作成し、語幹をクエリできるよう適切なデータ構造に移入します。

語幹解析機能のインスタンスを作成して、既定の言語を指定します (または %iKnow.Stemming.MultiLanguageConfig を使用して複数の言語を指定します)。言語の指定には、その言語の ISO 639-1 の 2 文字の省略形式を使用します。

Hunspell

Caché は、dev/hunspell ディレクトリに、ロシア語用 (ru) とウクライナ語用 (uk) の Hunspell ファイルを用意しています。その他の言語用の Hunspell ディクショナリ・ファイルは、Caché の dev/hunspell ディレクトリに配置する必要があります。

iKnow は、ある重要な一点で、Hunspell 語幹解析の動作を変更しています。Hunspell 語幹解析では、単語から接頭語が削除されます。iKnow では、Hunspell によって削除された接頭語を元に戻してから、結果としての語幹形式にインデックスを作成します。

Hunspell が 1 つの単語に対して考えられる複数の語幹を返した場合、iKnow は、エンティティが概念であるか、関係であるかを判断するために、エンティティのコンテキストを使用して、そのような選択肢のあいまいさを解消しようとします。

語幹取得のメソッド

以下に示す %iKnow.Queries.EntityAPIOpens in a new tab のメソッドは、語幹の値を返します。

指定した語幹 ID についての頻度と分布を返すこともできます。

語幹の使用

多くの iKnow クエリ・メソッドでは、エンティティではなく、語幹に対してクエリを実行できます。こうしたクエリ・メソッドは、メソッド引数 pUseStems=1 を設定することで、エンティティの値そのものではなく、語幹形式の値に基づいた値を返します。既定の pUseStems=0 では、こうしたクエリ・メソッドはエンティティの値そのものに基づいた値を返すようになります。

例えば、既定の GetTop()Opens in a new tab メソッドは、ドメイン内で最も頻繁に出現するエンティティを返します。pUseStems=1 を指定すると、このメソッドは、ドメイン内で最も頻繁に出現する語幹形式を返します。これは、文法的な形式のみ異なる複数のエンティティを 1 つの語幹形式に統合する可能性もあります。

語幹解析をサポートしていないドメインでは、pUseStems=1 を設定しても、このメソッドは結果を返しません。

詳細は、このドキュメントの "iKnow クエリ" の章を参照してください。

FeedbackOpens in a new tab