その他の言語および Unicode に関する考慮事項
このトピックでは、集計言語と Unicode サロゲート ペアのステミングに関する考慮事項と、サロゲート ペアを使用して Unicode 文字セットを拡張して異なる文字セットに対応する場合について説明します。 このトピックでは、ワード ブレーカーがテキスト内の語句を識別し、改行しないスペースを処理する方法、およびワード ブレーカーとステマーが数値と日付、複合語、複合語句、特殊な単語と文字、頭字語と省略形、および大文字と小文字を処理する方法についても説明します。
このトピックは次のように整理されています。
語句の識別
語句は、1 つ以上の他のユーザーによって変更された単語または単語のグループです。 同じ名詞を持つ複数の語句で同じ修飾子が使用される可能性があるため、語句を一貫して識別することは困難です。 たとえば、"新しい家"、"議会の下院"、"新しい議会" などです。
Windows Search では、クエリ時に最も頻繁にフレーズが使用されます。 クエリ テキスト内のフレーズは、個々の単語よりも高い重みを受け取ります。 前の例から、"下院" を含むドキュメントは、文書内の異なるポイントで "下院" と "議会" を含む文書よりも上位にランク付けされています。 語句が少なくとも 1 つのドキュメントと一致する可能性がある場合は、ワード ブレーカーでクエリ時に語句を生成することをお勧めします。
Agglutinative Languages
凝集言語は、複合的なアイデアを表現するために、小さなモルフェムの組み合わせを通じて単語を形成します。 これらの各モーフィムは、通常、1 つの意味または機能を持ち、組み合わせプロセス中に元の形式と意味を保持します。 トルコ語、フィンランド語、ハンガリー語、韓国語などの凝集性の形態を持つ言語の場合、特定のルートワードに対して何千もの形式を生成できます。
次の表は、フィンランド語の "talo" ("house") の変更されたフォームの一覧を示しています。
Word | 翻訳 |
---|---|
Talo | 自社 |
Taloni | 私の家 |
Talossa | 家の中で |
Talossani | 私の家で |
Taloja | 家 |
Taloissa | 家の中で |
英語、フランス語、ラテン語などの変化言語には、1 つのルート 単語に対して可能な単語形式の数が非常に少ない。 変化言語では、変形はバインド時に互いに影響を与えます。 変曲のほとんどの変更は、語尾または語尾に存在します。 凝集言語とは対照的に、変化した言語は、単一のモーフェムに対して異なる機能を持つ傾向があります。 たとえば、モーフェムは数値と大文字と小文字の両方を決定できます。
凝集言語のステマーは、可能な単語形式の数のサブセットのみを生成するために、パフォーマンスと精度の間のトレードオフを比較する必要があります。
数値、時刻、日付
Word ブレーカーでは、一貫性のあるクエリを容易にするために、数値、時刻、日付を表す共通の形式を使用する必要があります。
ワード ブレーカーを作成するときは、"NNddDcc" というパターンを使用して、ワード ブレーカーで数値を正規表現に正規化することをお勧めします。ここで、NN はリテラル シーケンス "NN"、 dd は数値の整数部分、D はリテラル "D"、 cc は数値の小数部です。 Word ブレーカーは、整数または数値の分数部分の桁数を制限しません。 ワード ブレーカーでは、ピリオド (.) とコンマ (,) の両方で区切られた数値パターンを認識することをお勧めします。 たとえば、Windows Search は "1,000.2" と "1.000,2" の両方を "NN1000D2" として表します。
ワード ブレーカーとステマーの両方に 1 つの形式を選択します。 1 バイトのアラビア数字は、これらのフォームのいずれかを含むクエリが他の形式のドキュメントと一致できるように正規化されます。
ワード ブレーカーを作成する場合、ワード ブレーカーは"TThhmmss" というパターンを使用して常に 24 時間表現として表示することをお勧めします。ここで、TT はリテラル プレフィックス "TT"、 hh は時間、 mm は分、 秒 は秒です。 Windows Search は、ミリ秒単位など、追加の時間単位と一致しません。 A.M. パターンと P.M. パターンの解析は省略可能です。
ワード ブレーカーを作成する場合は、ワード ブレーカーで標準形式の "DDyyyymmdd" の日付を生成することをお勧めします。ここで、DD はリテラル "DD"、 yyyy は年、 mm は月、 dd は日です。 ワード ブレーカーでは、20 世紀と 21 世紀の両方の形式で 2 桁の年を格納することもお勧めします。 たとえば、ワード ブレーカーは "2.2.99" を "DD19990202" および "DD20990202" として表します。 クエリ時に、Windows Search は Windows アプリケーション プログラミング インターフェイス (API) を使用して日付を派生し、サーバーが正しい形式 (19XX または 20XX) を表示するクロスオーバー日付を決定します。
複合語
ドイツ語などの一部の言語では、名詞は単純な名詞から複合化されます。 これらの複合名詞は、合理的なクエリの呼び戻しのために意味が具体的すぎます。 たとえば、分解を行わないと、"Versicherung" ("insurance") のクエリが "Lebensversicherungsgesellschaft" ("life-insurance salesman") と一致しません。 このような場合は、インデックスの作成とクエリ時間の両方で、ワード ブレーカーでこれらの複合単語を基本コンポーネントに分割することをお勧めします。 ドイツ語のワード ブレーカーは、"Lebensversicherungsgesellschaft" をコンポーネントの単語 "Leben"、"Versicherung"、"Gesellschaft" に分割します。クエリ時に同じ分解を適用し、結果の各用語に対して省略可能なステミングを適用します。
複合語句
韓国語などの一部の言語には、さまざまな方法で分割できる複雑なフレーズが含まれています。 韓国語の語句は、名詞、代名詞、動詞、形容詞などの コンテンツ単語の後に 、機能語が続きます。 機能的な単語は、位置と終わりの後に見つかります。 ポストポジションは文中の名詞または代名詞の機能的役割を示します。語尾は動詞または形容詞の機能的役割を示します。
1 つのフレーズに複数の分析を含め、各分析は複数のコンテンツ ワードで構成できます。 ワード ブレーカーでは、言語固有のヒューリスティックを使用して、さまざまな分析に与える重みの程度をコンテキストから判断する必要があります。 ワード ブレーカーは、結果として得られるコンポーネントワードの数に基づいて、使用する分解を決定できます。 ワード ブレーカーによっては、長い用語の短いシーケンスが優先される場合もあれば、他のワード ブレーカーでは、より小さい単語の長いシーケンスが優先される場合があります。
もう 1 つの考慮事項は、韓国語では、名詞と代名詞を、対応する機能語なしでインデックスに格納できることです。 韓国語は集約言語であり、多数の単語の終わりと動詞と形容詞を組み合わせて、無数の変化した形を形成します。 語句で識別される動詞と形容詞は、インデックスの末尾と共に保存されますが、ワード ブレーカーでは新しいフォームは生成されません。
特殊文字と単語
特殊文字は、"、"、" © ™ などの文字です。 これらの文字は、クエリではほとんど使用しません。 Word ブレーカーでは、インデックスの作成時とクエリ時に特殊文字を削除する必要があります。
ワード ブレーカーでは、"C++"、"C#"、".NET"、成績、音楽表記などの特別な単語を認識することをお勧めします。 Word ブレーカーでは、言語ヒューリスティックを使用して、特別な単語のパターンを識別できます。 Word ブレーカーでは、認識された特殊な単語を含むユーザー辞書を使用することもできます。
頭字語と略語
ワード ブレーカーを実装するときは、頭字語と省略形を考慮する必要があります。 多くの言語では、頭字語の個々の文字はピリオドで区切られます。 頭字語や略語が認識されない単語が省略される場合があります。 たとえば、"米国 of America" は"USA" または "U.S.A" と省略できます。Windows Search に含まれるWord ブレーカーは、通常、単一文字の単語をノイズワードとして識別し、クエリ時にそれらの単語をプレースホルダーとして扱います。 クエリ時に、一般的な頭字語を認識しないワード ブレーカー、または省略形を認識しないワード ブレーカーは、省略形 "U.S.A" を "U"、"S"、および "A" に変換します。 この分解では、すべてのクエリ用語がノイズ ワードであるため、フルテキスト インデックス内の単語と一致するのに十分な情報は提供されません。 ワード ブレーカーを作成するときは、ワード ブレーカーで頭字語の文字を区切る期間を削除することをお勧めします。 この例では、"U.S.A" は "USA" として格納され、"U.S.A" を含むクエリ用語は実際には "USA" に対してクエリを実行します。ワード ブレーカーが省略形を処理する場合、その省略形の期間は EOS 区切りとして扱われません。 このため、省略形が文の末尾にある場合、ワード ブレーカーで EOS 区切りが正しく識別されないことがあります。
[大文字/小文字の設定]
現在、Windows Search では、フルテキスト インデックスに単語を保存するときに大文字と小文字は保持されません。 Wordブレーカーとステマーは、単語の大文字と小文字を変更しないでください。
改行しないスペース
ワード ブレーカーを作成するときは、ワード ブレーカーで改行されていないスペースが単語区切り記号として扱われるようにすることをお勧めします。 また、ワード ブレーカーは、改行しないスペースの有無にかかわらず、単語の代替形式を生成することもお勧めします。 アンダースコアなどの一部の文字は、見つかったテキストのソースが原因で改行されていない文字として扱われる特殊文字です。 たとえば、ソース コードやファイル名には、アンダースコアを改行しない文字として含めることができます。
サロゲート ペア
サロゲート ペアは、2 つの Unicode 値のシーケンスで構成される 1 つの文字を表すソース コードの文字表現です。 コード化されたペアでは、最初の値は高いサロゲートで、2 番目の値は低サロゲートです。 上位サロゲートは、U+D800 ~ U+DBFF の範囲の文字です。 低サロゲートは、U+DC00 ~ U+DFFF の範囲内の文字です。 サロゲート ペアは、Unicode 文字を超えて文字セットを拡張します。 サロゲート ペアを処理するときは、ワード ブレーカーで次の規則を使用することをお勧めします。
- 高サロゲートは、低いサロゲートの前に置く必要があります。
- 低サロゲートは、上位サロゲートに従う必要があります。
- 他の半分に対応する値がない上位サロゲートまたは低サロゲートは意味がありません。
Wordブレーカーは、任意のペアを考慮し、インデックスでそのようにペアを生成する必要があります。 詳細については、「 サロゲートと補助文字」を参照してください。