ハイフネーションデコンパウンドトークンフィルター
XMLベースのハイフネーションパターンを使用して、複合語の中の潜在的なサブワードを見つけます。これらのサブワードは、指定された単語リストと照合されます。リストにないサブワードはトークン出力から除外されます。
このフィルターは、ドイツ語系言語用に構築されたLuceneのHyphenationCompoundWordTokenFilterを使用しています。
例
以下のanalyze APIリクエストは、hyphenation_decompounder
フィルターを使用して、Kaffeetasse
内のサブワードをドイツのハイフネーションパターンに基づいてanalysis/hyphenation_patterns.xml
ファイルで見つけます。フィルターは、これらのサブワードを指定された単語のリストkaffee
、zucker
、およびtasse
と照合します。
Python
resp = client.indices.analyze(
tokenizer="standard",
filter=[
{
"type": "hyphenation_decompounder",
"hyphenation_patterns_path": "analysis/hyphenation_patterns.xml",
"word_list": [
"Kaffee",
"zucker",
"tasse"
]
}
],
text="Kaffeetasse",
)
print(resp)
Js
const response = await client.indices.analyze({
tokenizer: "standard",
filter: [
{
type: "hyphenation_decompounder",
hyphenation_patterns_path: "analysis/hyphenation_patterns.xml",
word_list: ["Kaffee", "zucker", "tasse"],
},
],
text: "Kaffeetasse",
});
console.log(response);
コンソール
GET _analyze
{
"tokenizer": "standard",
"filter": [
{
"type": "hyphenation_decompounder",
"hyphenation_patterns_path": "analysis/hyphenation_patterns.xml",
"word_list": ["Kaffee", "zucker", "tasse"]
}
],
"text": "Kaffeetasse"
}
フィルターは次のトークンを生成します:
テキスト
[ Kaffeetasse, Kaffee, tasse ]
設定可能なパラメータ
hyphenation_patterns_path
- (必須、文字列) Apache FOP (Formatting Objects Processor) XMLハイフネーションパターンファイルへのパス。
このパスは、config
の場所に対して絶対または相対でなければなりません。FOP v1.2互換ファイルのみがサポートされています。
例えば、FOP XMLハイフネーションパターンファイルについては、次を参照してください:- Formatting Objects (OFFO) Sourceforgeプロジェクト
- offo-hyphenation_v1.2.zipの直接ダウンロード (v2.0以上のハイフネーションパターンファイルはサポートされていません)
word_list
- (必須*、文字列の配列) サブワードのリスト。ハイフネーションパターンを使用して見つかったサブワードで、このリストにないものはトークン出力から除外されます。
実装前に単語リストの品質をテストするために、dictionary_decompounder
フィルターを使用できます。
このパラメータまたはword_list_path
のいずれかを指定する必要があります。 word_list_path
- (必須*、文字列) サブワードのリストを含むファイルへのパス。ハイフネーションパターンを使用して見つかったサブワードで、このリストにないものはトークン出力から除外されます。
このパスは、config
の場所に対して絶対または相対でなければならず、ファイルはUTF-8エンコードされている必要があります。ファイル内の各トークンは改行で区切られている必要があります。
実装前に単語リストの品質をテストするために、dictionary_decompounder
フィルターを使用できます。
このパラメータまたはword_list
のいずれかを指定する必要があります。 max_subword_size
- (オプション、整数) 最大サブワード文字長。長いサブワードトークンは出力から除外されます。デフォルトは
15
です。 min_subword_size
- (オプション、整数) 最小サブワード文字長。短いサブワードトークンは出力から除外されます。デフォルトは
2
です。 min_word_size
- (オプション、整数) 最小単語文字長。短い単語トークンは出力から除外されます。デフォルトは
5
です。 only_longest_match
- (オプション、ブール値)
true
の場合、最も長い一致するサブワードのみを含めます。デフォルトはfalse
です。
アナライザーのカスタマイズと追加
例えば、以下の[create index API](/read/elasticsearch-8-15/b5c127aabf881d48.md)リクエストは、カスタム`````hyphenation_decompounder`````フィルターを使用して新しい[カスタムアナライザー](/read/elasticsearch-8-15/f8c7123dddb484d0.md)を構成します。
カスタム`````hyphenation_decompounder`````フィルターは、`````analysis/hyphenation_patterns.xml`````ファイル内のハイフネーションパターンに基づいてサブワードを見つけます。フィルターは、`````analysis/example_word_list.txt`````ファイルに指定された単語のリストに対してこれらのサブワードをチェックします。22文字を超えるサブワードはトークン出力から除外されます。
#### Python
``````python
resp = client.indices.create(
index="hyphenation_decompound_example",
settings={
"analysis": {
"analyzer": {
"standard_hyphenation_decompound": {
"tokenizer": "standard",
"filter": [
"22_char_hyphenation_decompound"
]
}
},
"filter": {
"22_char_hyphenation_decompound": {
"type": "hyphenation_decompounder",
"word_list_path": "analysis/example_word_list.txt",
"hyphenation_patterns_path": "analysis/hyphenation_patterns.xml",
"max_subword_size": 22
}
}
}
},
)
print(resp)
`
Js
const response = await client.indices.create({
index: "hyphenation_decompound_example",
settings: {
analysis: {
analyzer: {
standard_hyphenation_decompound: {
tokenizer: "standard",
filter: ["22_char_hyphenation_decompound"],
},
},
filter: {
"22_char_hyphenation_decompound": {
type: "hyphenation_decompounder",
word_list_path: "analysis/example_word_list.txt",
hyphenation_patterns_path: "analysis/hyphenation_patterns.xml",
max_subword_size: 22,
},
},
},
},
});
console.log(response);
コンソール
PUT hyphenation_decompound_example
{
"settings": {
"analysis": {
"analyzer": {
"standard_hyphenation_decompound": {
"tokenizer": "standard",
"filter": [ "22_char_hyphenation_decompound" ]
}
},
"filter": {
"22_char_hyphenation_decompound": {
"type": "hyphenation_decompounder",
"word_list_path": "analysis/example_word_list.txt",
"hyphenation_patterns_path": "analysis/hyphenation_patterns.xml",
"max_subword_size": 22
}
}
}
}
}