このトピックでは、凝集言語と Unicode サロゲート ペアのステミングに関する考慮事項と、サロゲート ペアを使用して Unicode 文字セットを拡張して異なる文字セットに対応する場合について説明します。 このトピックでは、ワード ブレーカーがテキスト内の語句を識別し、改行されていないスペースを処理する方法、およびワード ブレーカーとステマーが数値と日付、複合語、複合語句、特殊な単語と文字、頭字語と省略形、および大文字と小文字を処理する方法についても説明します。
このトピックは次のように構成されています。
語句の識別
語句とは、1 つ以上の他のユーザーによって変更された単語または単語のグループです。 同じ名詞を持つ複数の語句で同じ修飾子が使用される可能性があるため、語句を一貫して識別することは困難です。 たとえば、"新しい家"、"議会の家"、"新しい議会" などです。
Windows Search では、クエリ時に最も頻繁に語句が使用されます。 クエリ テキスト内の語句は、個々の単語よりも高い重みを受け取ります。 前の例から、"議会" を含む文書は、文書内の異なるポイントで "下院" と "議会" を含む文書よりも上位にランク付けされています。 語句が少なくとも 1 つのドキュメントと一致する可能性が高い場合は、ワード ブレーカーでクエリ時に語句を生成することをお勧めします。
凝集言語
凝集言語は、より小さな形態の組み合わせによって単語を形成し、複合的なアイデアを表現します。 これらの各モーフィムは、一般的に1つの意味または機能を持ち、組み合わせプロセス中に元の形と意味を保持します。 トルコ語、フィンランド語、ハンガリー語、韓国語などの凝集性を持つ言語の場合、特定のルート語に対して何千もの形式を生成できます。
次の表は、フィンランド語の "talo" ("house" ) の変更されたフォームの一覧を示しています。
言葉 | 翻訳 |
---|---|
Talo | 家 |
Taloni | 私の家 |
Talossa | 家の中で |
Talossani | 私の家の中で |
タロジャ | 家 |
タロイッサ | 家の中で |
英語、フランス語、ラテン語などの影響を受ける言語には、1 つのルート 単語に対して非常に少数の単語形式があります。 変化する言語では、モーフィムはバインド時に互いに影響を与えます。 変曲のほとんどの変更は、語幹または語尾に存在します。 凝集言語とは対照的に、変化された言語は、単一のモーフィムに対して異なる機能を持つ傾向があります。 たとえば、モーフェムは数値とケースの両方を決定できます。
凝集言語のステマーは、可能な単語形式の数のサブセットのみを生成するために、パフォーマンスと精度のトレードオフを検討する必要があります。
数値、時刻、および日付
ワード ブレーカーでは、一貫性のあるクエリを容易にするために、数値、時刻、日付を表すために共通の形式を使用する必要があります。
ワード ブレーカーを作成するときは、"NNddDcc" というパターンを使用して、ワード ブレーカーで数値を正規表現に正規化することをお勧めします。ここで NN はリテラル シーケンス "NN" で、dd は数値の整数部分、D はリテラル "D" で、cc は数値の小数部です。 ワード ブレーカーでは、整数または数値の分数部分の桁数は制限されません。 ワード ブレーカーでは、ピリオド (.) とコンマ (,) の両方で区切られた数値パターンを認識することをお勧めします。 たとえば、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 つの考慮事項は、韓国語では名詞と代名詞を、対応する機能語なしでインデックスに格納できることです。 韓国語は凝集言語であり、多くの単語の終わりと動詞と形容詞を組み合わせて、数え切れないほどの変化した形を形成します。 語句で識別される動詞と形容詞は、インデックスの末尾と共に保存されますが、ワード ブレーカーでは新しいフォームは生成されません。
特殊文字と単語
特殊文字は、"、"、"、© ™"" などの文字です。 これらの文字がクエリで使用されることはほとんどありません。 ワード ブレーカーは、インデックスの作成時とクエリ時に特殊文字を削除する必要があります。
ワード ブレーカーでは、"C++"、"C#"、"NET"、"グレード"、音楽表記などの特別な単語を認識することをお勧めします。 ワード ブレーカーでは、言語ヒューリスティックを使用して、特別な単語のパターンを識別できます。 ワード ブレーカーでは、認識された特別な単語を含むユーザー辞書を使用することもできます。
頭字語と省略形
ワード ブレーカーを実装するときは、頭字語と省略形を考慮する必要があります。 多くの言語では、頭字語の個々の文字はピリオドで区切られています。 頭字語や省略形が認識されない単語が省略される場合があります。 たとえば、"米国" は "USA" または "U.S.A" と省略できます。Windows Search に含まれるワード ブレーカーは、通常、単一文字の単語をノイズ ワードとして識別し、クエリ時にそれらの単語をプレースホルダーとして扱います。 クエリ時に、一般的な頭字語を認識しないワード ブレーカー、または省略形を認識しないワード ブレーカーは、省略形 "U.S.A" を "U"、"S"、および "A" に変換します。 この分解では、すべてのクエリ用語がノイズ ワードであるため、フルテキスト インデックス内の単語と一致するのに十分な情報が提供されません。 ワード ブレーカーを作成するときは、ワード ブレーカーで頭字語の文字を区切るピリオドを削除することをお勧めします。 この例では、"米国" は "USA" として格納され、"米国" を含むクエリ用語は実際には "USA" を照会します。ワード ブレーカーが省略形を処理する場合、その省略形のピリオドは EOS 区切りとして扱われません。 このため、省略形が文の末尾にある場合、ワード ブレーカーで EOS の中断が正しく識別されない可能性があります。
大文字
現在、Windows Search では、単語をフルテキスト インデックスに保存する場合、大文字と小文字は保持されません。 ワード ブレーカーとステマーは、単語の大文字と小文字を変更しないでください。
改行しないスペース
ワード ブレーカーを作成するときは、ワード ブレーカーで改行されていないスペースが単語区切り記号として扱われるようにすることをお勧めします。 また、ワード ブレーカーは、改行しないスペースを含む、または含まない代替形式の単語を生成することもお勧めします。 アンダースコアなどの一部の文字は、見つかったテキストのソースのために改行しない文字として扱われる特殊文字です。 たとえば、ソース コードやファイル名には、アンダースコアを非改行文字として含めることができます。
サロゲート ペア
サロゲート ペアは、2 つの Unicode 値のシーケンスで構成される 1 つの文字を表すソース コードの文字表現です。 コード化されたペアでは、最初の値は高いサロゲートで、2 番目の値は低サロゲートです。 上位サロゲートは、U+D800 から U+DBFF までの範囲の文字です。 低サロゲートは、U+DC00 から U+DFFF までの範囲の文字です。 サロゲート ペアは、Unicode 文字を超えて文字セットを拡張します。 サロゲート ペアを処理するときは、ワード ブレーカーで次の規則を使用することをお勧めします。
- 上位サロゲートは、下位サロゲートの前に置く必要があります。
- 低サロゲートは、上位サロゲートに従う必要があります。
- 他の半分に対応する値を持たない高または低のサロゲートには意味がありません。
ワード ブレーカーでは、任意のペアを考慮し、インデックスでペアを生成する必要があります。 詳細については、「サロゲートと補助文字の」を参照してください。