Token filters
출처: 문서
본문
토큰 필터
토큰 필터는 토크나이저로부터 토큰 스트림을 받아서 토큰을 추가, 제거 또는 수정해요. 예를 들어, 토큰 필터는 토큰을 소문자로 변환하여 Actions가 action이 되도록 하거나, than과 같은 불용어를 제거하거나, speak라는 단어에 대해 talk와 같은 동의어를 추가할 수 있어요.
다음 표는 OpenSearch가 지원하는 모든 토큰 필터를 나열해요.
토큰 필터 | 기반 Lucene 토큰 필터 | 설명
apostrophe | ApostropheFilter | 아포스트로피가 포함된 각 토큰에서 apostrophe 토큰 필터는 아포스트로피 자체와 그 뒤의 모든 문자를 제거해요.
asciifolding | ASCIIFoldingFilter | 알파벳, 숫자 및 기호 문자를 변환해요.
cjk_bigram | CJKBigramFilter | 중국어, 일본어, 한국어(CJK) 토큰의 바이그램을 형성해요.
cjk_width | CJKWidthFilter | 중국어, 일본어, 한국어(CJK) 토큰을 다음 규칙에 따라 정규화해요:
- 전각 ASCII 문자 변형을 해당하는 기본 라틴 문자로 접어요.
- 반각 가타카나 문자 변형을 해당하는 가나 문자로 접어요.
classic | ClassicFilter | 클래식 토크나이저가 생성한 토큰에 선택적 후처리를 수행해요. 소유격('s)을 제거하고 약어에서 .을 제거해요.
common_grams | CommonGramsFilter | 자주 발생하는 용어 목록에 대한 바이그램을 생성해요. 출력에는 단일 용어와 바이그램이 모두 포함돼요.
condition | ConditionalTokenFilter | 스크립트에 제공된 조건과 일치하는 토큰에 정렬된 토큰 필터 목록을 적용해요.
decimal_digit | DecimalDigitFilter | Unicode 십진수 일반 범주의 모든 숫자를 기본 라틴 숫자(0--9)로 변환해요.
delimited_payload | DelimitedPayloadTokenFilter | 제공된 구분자를 기준으로 토큰 스트림을 해당 페이로드가 있는 토큰으로 분리해요. 토큰은 구분자 앞의 모든 문자로 구성되고, 페이로드는 구분자 뒤의 모든 문자로 구성돼요. 예를 들어 구분자가 |인 경우 문자열 foo|bar에서 foo는 토큰이고 bar는 페이로드예요.
delimited_term_freq | DelimitedTermFrequencyTokenFilter | 제공된 구분자를 기준으로 토큰 스트림을 해당 용어 빈도가 있는 토큰으로 분리해요. 토큰은 구분자 앞의 모든 문자로 구성되고, 용어 빈도는 구분자 뒤의 정수예요. 예를 들어 구분자가 |인 경우 문자열 foo|5에서 foo는 토큰이고 5는 용어 빈도예요.
dictionary_decompounder | DictionaryCompoundWordTokenFilter | 많은 게르만 언어에서 발견되는 합성어를 분해해요.
edge_ngram | EdgeNGramTokenFilter | 주어진 토큰을 min_gram과 max_gram 사이의 길이를 가진 에지 n-gram(토큰의 시작 부분에서 시작하는 n-gram)으로 토큰화해요. 선택적으로 원래 토큰을 유지해요.
elision | ElisionFilter | 토큰의 시작 부분에서 지정된 생략을 제거해요. 예를 들어 l'avion(비행기)을 avion(비행기)으로 변경해요.
fingerprint | FingerprintFilter | 토큰 목록을 정렬하고 중복을 제거한 다음 토큰을 단일 토큰으로 연결해요.
flatten_graph | FlattenGraphFilter | synonym_graph 또는 word_delimiter_graph와 같은 그래프 토큰 필터에 의해 생성된 토큰 그래프를 평면화하여 인덱싱에 적합하게 만들어요.
hunspell | HunspellStemFilter | Hunspell 규칙을 사용하여 토큰을 어간 추출해요. Hunspell은 단어에 여러 어간을 허용하기 때문에 이 필터는 소비된 각 토큰에 대해 여러 토큰을 내보낼 수 있어요. 하나 이상의 언어별 Hunspell 사전 구성이 필요해요.
hyphenation_decompounder | HyphenationCompoundWordTokenFilter | XML 기반 하이픈 넣기 패턴을 사용하여 합성어에서 잠재적인 하위 단어를 찾고 지정된 단어 목록과 대조해요. 토큰 출력에는 단어 목록에 있는 하위 단어만 포함돼요.
ja_stop | StopFilter when remove_trailing is true, or SuggestStopFilter when remove_trailing is false | 토큰 스트림에서 일본어 불용어를 제거해요. 내장된 _japanese_ 중지 세트, 사용자 정의 단어 목록 또는 파일을 지원해요. 제안 및 완성 사용 사례를 위한 remove_trailing 매개변수가 포함돼요. analysis-kuromoji 플러그인이 필요해요.
keep_types | TypeTokenFilter | 특정 유형의 토큰을 유지하거나 제거해요.
keep_words | KeepWordFilter | 토큰을 지정된 단어 목록과 대조하여 목록에 있는 토큰만 유지해요.
keyword_marker | KeywordMarkerFilter | 지정된 토큰을 키워드로 표시하여 어간 추출되지 않도록 해요.
keyword_repeat | KeywordRepeatFilter | 들어오는 각 토큰을 두 번 내보내요: 한 번은 키워드로, 한 번은 비키워드로.
kstem | KStemFilter | 영어에 대한 KStem 기반 어간 추출을 제공해요. 알고리즘 어간 추출과 내장 사전을 결합해요.
kuromoji_baseform | JapaneseBaseFormFilter | 활용된 일본어 토큰을 사전 기본 형태로 대체해요. analysis-kuromoji 플러그인이 필요해요.
kuromoji_completion | JapaneseCompletionFilter | 일본어 로마자 표기 용어를 토큰 스트림에 추가해요(원래 토큰 외에). 일반적으로 일본어 검색어의 자동 완성을 지원하는 데 사용돼요. 이 필터에는 mode 매개변수가 있으며, 인덱스 분석기에서 사용할 때는 index로, 검색 분석기에서 사용할 때는 query로 설정해야 해요. analysis-kuromoji 플러그인이 필요해요. 플러그인 설치에 대한 자세한 내용은 추가 플러그인을 참조하세요.
kuromoji_number | JapaneseNumberFilter | 일본어 숫자 표현(한자 숫자, 전각 숫자)을 표준 아라비아 숫자로 정규화해요. analysis-kuromoji 플러그인이 필요해요.
kuromoji_part_of_speech | JapanesePartOfSpeechStopFilter | IPAdic 품사 태그가 구성된 중지 태그 목록과 일치하는 토큰을 제거해요. 기본적으로 조사, 조동사, 구두점 및 기타 문법 토큰을 제거해요. analysis-kuromoji 플러그인이 필요해요.
kuromoji_readingform | JapaneseReadingFormFilter | 각 토큰을 use_romaji 매개변수에 따라 가타카나 또는 로마자 읽기 형태로 대체해요. analysis-kuromoji 플러그인이 필요해요.
kuromoji_stemmer | JapaneseKatakanaStemFilter | minimum_length 매개변수(기본값은 4)로 지정된 최소 길이를 충족하는 가타카나 단어에서 후행 장음표(ー)를 제거해요. analysis-kuromoji 플러그인이 필요해요.
length | LengthFilter | min과 max로 지정된 길이 범위보다 짧거나 긴 토큰을 제거해요.
limit | LimitTokenCountFilter | 출력 토큰 수를 제한해요. 예를 들어 문서 필드 값 크기를 토큰 수에 따라 제한할 수 있어요.
lowercase | [LowerCaseFilter](https://lucene.apache.org/core/{{site.lucene_version}}/analysis/common/or | 모든 토큰을 소문자로 변환해요.
g/apache/lucene/analysis/core/LowerCaseFilter.html) | 토큰을 소문자로 변환해요. 기본 LowerCaseFilter는 영어를 처리해요. 다른 언어를 처리하려면 language 매개변수를 greek(GreekLowerCaseFilter 사용), irish(IrishLowerCaseFilter 사용), 또는 turkish(TurkishLowerCaseFilter 사용)로 설정해요.
min_hash | MinHashFilter | MinHash 기술을 사용하여 문서 유사도를 추정해요. 토큰 스트림에 대해 순차적으로 다음 작업을 수행해요:
1. 스트림의 각 토큰을 해싱해요.
2. 해시를 버킷에 할당하고 각 버킷의 가장 작은 해시만 유지해요.
3. 각 버킷에서 가장 작은 해시를 토큰 스트림으로 출력해요.
multiplexer | N/A | 같은 위치에 여러 토큰을 내보내요. 각 토큰을 지정된 필터 목록 각각에 별도로 실행하고 결과를 별도의 토큰으로 출력해요.
ngram | NGramTokenFilter | 주어진 토큰을 min_gram과 max_gram 사이의 길이를 가진 n-gram으로 토큰화해요.
Normalization | arabic_normalization: ArabicNormalizationFilter
german_normalization: GermanNormalizationFilter
hindi_normalization: HindiNormalizationFilter
indic_normalization: IndicNormalizationFilter
sorani_normalization: SoraniNormalizationFilter
persian_normalization: PersianNormalizationFilter
scandinavian_normalization : ScandinavianNormalizationFilter
scandinavian_folding: ScandinavianFoldingFilter
serbian_normalization: SerbianNormalizationFilter | 나열된 언어 중 하나의 문자를 정규화해요.
pattern_capture | N/A | 제공된 정규 표현식의 각 캡처 그룹에 대해 토큰을 생성해요. Java 정규 표현식 구문을 사용해요.
pattern_replace | N/A | 제공된 정규 표현식에서 패턴을 일치시키고 일치하는 부분 문자열을 대체해요. Java 정규 표현식 구문을 사용해요.
phonetic | N/A | 음성 인코더를 사용하여 토큰 스트림의 각 토큰에 대해 메타폰 토큰을 내보내요. analysis-phonetic 플러그인을 설치해야 해요.
porter_stem | PorterStemFilter | Porter stemming 알고리즘을 사용하여 영어에 대한 알고리즘적 형태소 분석을 수행해요.
predicate_token_filter | N/A | 지정된 조건자 스크립트와 일치하지 않는 토큰을 제거해요. 인라인 Painless 스크립트만 지원해요.
remove_duplicates | RemoveDuplicatesTokenFilter | 같은 위치에 있는 중복 토큰을 제거해요.
reverse | ReverseStringFilter | 토큰 스트림의 각 토큰에 해당하는 문자열을 뒤집어요. 예를 들어, 토큰 dog는 god가 돼요.
shingle | ShingleFilter | 토큰 스트림의 토큰에 대해 min_shingle_size와 max_shingle_size 사이의 길이를 가진 shingle을 생성해요. Shingle은 n-gram과 유사하지만 문자 대신 단어를 사용하여 생성해요. 예를 들어, 유니그램 목록 [contribute, to, opensearch]에 추가된 두 단어 shingle은 [contribute to, to opensearch]예요.
snowball | N/A | Snowball 생성 형태소 분석기를 사용하여 단어의 형태소를 분석해요. snowball 토큰 필터는 language 필드에서 다음 언어를 지원해요: Arabic, Armenian, Basque, Catalan, Danish, Dutch, English, Estonian, Finnish, French, German, German2, Hungarian, Irish, Italian, Kp, Lithuanian, Lovins, Norwegian, Porter, Portuguese, Romanian, Russian, Spanish, Swedish, Turkish.
stemmer | N/A | language 필드에서 사용되는 다음 언어에 대한 알고리즘적 형태소 분석을 제공해요: arabic, armenian, basque, bengali, brazilian, bulgarian, catalan, czech, danish, dutch, dutch_kp, english, light_english, lovins, minimal_english, porter2, possessive_english, estonian, finnish, light_finnish, french, light_french, minimal_french, galician, minimal_galician, german, german2, light_german, minimal_german, greek, hindi, hungarian, light_hungarian, indonesian, irish, italian, light_italian, latvian, Lithuanian, norwegian, light_norwegian, minimal_norwegian, light_nynorsk, minimal_nynorsk, portuguese, light_portuguese, minimal_portuguese, portuguese_rslp, romanian, russian, light_russian, sorani, spanish, light_spanish, swedish, light_swedish, turkish.
stemmer_override | N/A | 사용자 정의 매핑을 적용하여 제공된 용어가 형태소 분석되지 않도록 형태소 분석 알고리즘을 재정의해요.
stop | StopFilter | 토큰 스트림에서 불용어를 제거해요.
synonym | N/A | 분석 과정에 동의어 목록을 제공해요. 동의어 목록은 구성 파일을 사용하여 제공돼요.
synonym_graph | N/A | 다중 단어 동의어를 포함한 동의어 목록을 분석 과정에 제공해요.
trim | TrimFilter | 스트림의 각 토큰에서 앞뒤 공백 문자를 제거해요.
truncate | TruncateTokenFilter | 지정된 문자 제한을 초과하는 길이의 토큰을 잘라요.
unique | N/A | 스트림에서 중복 토큰을 제거하여 각 토큰이 고유하도록 보장해요.
uppercase | UpperCaseFilter | 토큰을 대문자로 변환해요.
word_delimiter | WordDelimiterFilter | 알파벳 숫자가 아닌 문자를 기준으로 토큰을 분할하고 지정된 규칙에 따라 정규화를 수행해요.
word_delimiter_graph | WordDelimiterGraphFilter | 알파벳 숫자가 아닌 문자를 기준으로 토큰을 분할하고 지정된 규칙에 따라 정규화를 수행해요. 다중 위치 토큰에 positionLength 속성을 할당해요.