フィンガープリントトークンフィルター
トークンストリームから重複トークンをソートして削除し、ストリームを単一の出力トークンに連結します。
例えば、このフィルターは[ the, fox, was, very, very, quick ]
トークンストリームを次のように変更します:
- 1. トークンをアルファベット順にソートして
[ fox, quick, the, very, very, was ]
- 2.
very
トークンの重複インスタンスを削除します。 - 3. トークンストリームを出力単一トークンに連結します:
[fox quick the very was ]
このフィルターによって生成される出力トークンは、OpenRefineプロジェクトで説明されているように、テキストのフィンガープリンティングやクラスタリングに役立ちます。
このフィルターはLuceneのFingerprintFilterを使用します。
例
次の分析APIリクエストは、fingerprint
フィルターを使用してテキストzebra jumps over resting
resting dog
の単一出力トークンを作成します:
Python
resp = client.indices.analyze(
tokenizer="whitespace",
filter=[
"fingerprint"
],
text="zebra jumps over resting resting dog",
)
print(resp)
Ruby
response = client.indices.analyze(
body: {
tokenizer: 'whitespace',
filter: [
'fingerprint'
],
text: 'zebra jumps over resting resting dog'
}
)
puts response
Js
const response = await client.indices.analyze({
tokenizer: "whitespace",
filter: ["fingerprint"],
text: "zebra jumps over resting resting dog",
});
console.log(response);
コンソール
GET _analyze
{
"tokenizer" : "whitespace",
"filter" : ["fingerprint"],
"text" : "zebra jumps over resting resting dog"
}
フィルターは次のトークンを生成します:
テキスト
[ dog jumps over resting zebra ]
アナライザーに追加
次のインデックス作成APIリクエストは、fingerprint
フィルターを使用して新しいカスタムアナライザーを構成します。
Python
resp = client.indices.create(
index="fingerprint_example",
settings={
"analysis": {
"analyzer": {
"whitespace_fingerprint": {
"tokenizer": "whitespace",
"filter": [
"fingerprint"
]
}
}
}
},
)
print(resp)
Ruby
response = client.indices.create(
index: 'fingerprint_example',
body: {
settings: {
analysis: {
analyzer: {
whitespace_fingerprint: {
tokenizer: 'whitespace',
filter: [
'fingerprint'
]
}
}
}
}
}
)
puts response
Js
const response = await client.indices.create({
index: "fingerprint_example",
settings: {
analysis: {
analyzer: {
whitespace_fingerprint: {
tokenizer: "whitespace",
filter: ["fingerprint"],
},
},
},
},
});
console.log(response);
コンソール
PUT fingerprint_example
{
"settings": {
"analysis": {
"analyzer": {
"whitespace_fingerprint": {
"tokenizer": "whitespace",
"filter": [ "fingerprint" ]
}
}
}
}
}
設定可能なパラメータ
max_output_size
- (オプション、整数) 出力トークンの最大文字数(空白を含む)。デフォルトは
255
です。この長さを超える連結トークンは出力されません。 separator
- (オプション、文字列) トークンストリーム入力を連結するために使用する文字。デフォルトはスペースです。
カスタマイズ
例えば、次のリクエストは、`````+`````を使用してトークンストリームを連結するカスタム`````fingerprint`````フィルターを作成します。このフィルターは、出力トークンを`````100`````文字以下に制限します。
#### Python
``````python
resp = client.indices.create(
index="custom_fingerprint_example",
settings={
"analysis": {
"analyzer": {
"whitespace_": {
"tokenizer": "whitespace",
"filter": [
"fingerprint_plus_concat"
]
}
},
"filter": {
"fingerprint_plus_concat": {
"type": "fingerprint",
"max_output_size": 100,
"separator": "+"
}
}
}
},
)
print(resp)
`
Ruby
response = client.indices.create(
index: 'custom_fingerprint_example',
body: {
settings: {
analysis: {
analyzer: {
whitespace_: {
tokenizer: 'whitespace',
filter: [
'fingerprint_plus_concat'
]
}
},
filter: {
fingerprint_plus_concat: {
type: 'fingerprint',
max_output_size: 100,
separator: '+'
}
}
}
}
}
)
puts response
Js
const response = await client.indices.create({
index: "custom_fingerprint_example",
settings: {
analysis: {
analyzer: {
whitespace_: {
tokenizer: "whitespace",
filter: ["fingerprint_plus_concat"],
},
},
filter: {
fingerprint_plus_concat: {
type: "fingerprint",
max_output_size: 100,
separator: "+",
},
},
},
},
});
console.log(response);
コンソール
PUT custom_fingerprint_example
{
"settings": {
"analysis": {
"analyzer": {
"whitespace_": {
"tokenizer": "whitespace",
"filter": [ "fingerprint_plus_concat" ]
}
},
"filter": {
"fingerprint_plus_concat": {
"type": "fingerprint",
"max_output_size": 100,
"separator": "+"
}
}
}
}
}