ハイフネーションデコンパウンドトークンフィルター

XMLベースのハイフネーションパターンを使用して、複合語の中の潜在的なサブワードを見つけます。これらのサブワードは、指定された単語リストと照合されます。リストにないサブワードはトークン出力から除外されます。

このフィルターは、ドイツ語系言語用に構築されたLuceneのHyphenationCompoundWordTokenFilterを使用しています。

以下のanalyze APIリクエストは、hyphenation_decompounderフィルターを使用して、Kaffeetasse内のサブワードをドイツのハイフネーションパターンに基づいてanalysis/hyphenation_patterns.xmlファイルで見つけます。フィルターは、これらのサブワードを指定された単語のリストkaffeezucker、およびtasseと照合します。

Python

  1. resp = client.indices.analyze(
  2. tokenizer="standard",
  3. filter=[
  4. {
  5. "type": "hyphenation_decompounder",
  6. "hyphenation_patterns_path": "analysis/hyphenation_patterns.xml",
  7. "word_list": [
  8. "Kaffee",
  9. "zucker",
  10. "tasse"
  11. ]
  12. }
  13. ],
  14. text="Kaffeetasse",
  15. )
  16. print(resp)

Js

  1. const response = await client.indices.analyze({
  2. tokenizer: "standard",
  3. filter: [
  4. {
  5. type: "hyphenation_decompounder",
  6. hyphenation_patterns_path: "analysis/hyphenation_patterns.xml",
  7. word_list: ["Kaffee", "zucker", "tasse"],
  8. },
  9. ],
  10. text: "Kaffeetasse",
  11. });
  12. console.log(response);

コンソール

  1. GET _analyze
  2. {
  3. "tokenizer": "standard",
  4. "filter": [
  5. {
  6. "type": "hyphenation_decompounder",
  7. "hyphenation_patterns_path": "analysis/hyphenation_patterns.xml",
  8. "word_list": ["Kaffee", "zucker", "tasse"]
  9. }
  10. ],
  11. "text": "Kaffeetasse"
  12. }

フィルターは次のトークンを生成します:

テキスト

  1. [ Kaffeetasse, Kaffee, tasse ]

設定可能なパラメータ

  • hyphenation_patterns_path
  • (必須、文字列) Apache FOP (Formatting Objects Processor) XMLハイフネーションパターンファイルへのパス。
    このパスは、configの場所に対して絶対または相対でなければなりません。FOP v1.2互換ファイルのみがサポートされています。
    例えば、FOP XMLハイフネーションパターンファイルについては、次を参照してください:
  • 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です。

アナライザーのカスタマイズと追加

  1. 例えば、以下の[create index API](/read/elasticsearch-8-15/b5c127aabf881d48.md)リクエストは、カスタム`````hyphenation_decompounder`````フィルターを使用して新しい[カスタムアナライザー](/read/elasticsearch-8-15/f8c7123dddb484d0.md)を構成します。
  2. カスタム`````hyphenation_decompounder`````フィルターは、`````analysis/hyphenation_patterns.xml`````ファイル内のハイフネーションパターンに基づいてサブワードを見つけます。フィルターは、`````analysis/example_word_list.txt`````ファイルに指定された単語のリストに対してこれらのサブワードをチェックします。22文字を超えるサブワードはトークン出力から除外されます。
  3. #### Python
  4. ``````python
  5. resp = client.indices.create(
  6. index="hyphenation_decompound_example",
  7. settings={
  8. "analysis": {
  9. "analyzer": {
  10. "standard_hyphenation_decompound": {
  11. "tokenizer": "standard",
  12. "filter": [
  13. "22_char_hyphenation_decompound"
  14. ]
  15. }
  16. },
  17. "filter": {
  18. "22_char_hyphenation_decompound": {
  19. "type": "hyphenation_decompounder",
  20. "word_list_path": "analysis/example_word_list.txt",
  21. "hyphenation_patterns_path": "analysis/hyphenation_patterns.xml",
  22. "max_subword_size": 22
  23. }
  24. }
  25. }
  26. },
  27. )
  28. print(resp)
  29. `

Js

  1. const response = await client.indices.create({
  2. index: "hyphenation_decompound_example",
  3. settings: {
  4. analysis: {
  5. analyzer: {
  6. standard_hyphenation_decompound: {
  7. tokenizer: "standard",
  8. filter: ["22_char_hyphenation_decompound"],
  9. },
  10. },
  11. filter: {
  12. "22_char_hyphenation_decompound": {
  13. type: "hyphenation_decompounder",
  14. word_list_path: "analysis/example_word_list.txt",
  15. hyphenation_patterns_path: "analysis/hyphenation_patterns.xml",
  16. max_subword_size: 22,
  17. },
  18. },
  19. },
  20. },
  21. });
  22. console.log(response);

コンソール

  1. PUT hyphenation_decompound_example
  2. {
  3. "settings": {
  4. "analysis": {
  5. "analyzer": {
  6. "standard_hyphenation_decompound": {
  7. "tokenizer": "standard",
  8. "filter": [ "22_char_hyphenation_decompound" ]
  9. }
  10. },
  11. "filter": {
  12. "22_char_hyphenation_decompound": {
  13. "type": "hyphenation_decompounder",
  14. "word_list_path": "analysis/example_word_list.txt",
  15. "hyphenation_patterns_path": "analysis/hyphenation_patterns.xml",
  16. "max_subword_size": 22
  17. }
  18. }
  19. }
  20. }
  21. }