Fingerprint analyzer

fingerprint アナライザーは、OpenRefine プロジェクトによってクラスタリングを支援するために使用される フィンガープリンティングアルゴリズム を実装しています。

入力テキストは小文字に変換され、拡張文字を削除するために正規化され、ソートされ、重複が削除され、単一のトークンに連結されます。ストップワードリストが設定されている場合、ストップワードも削除されます。

Example output

Python

  1. resp = client.indices.analyze(
  2. analyzer="fingerprint",
  3. text="Yes yes, Gödel said this sentence is consistent and.",
  4. )
  5. print(resp)

Ruby

  1. response = client.indices.analyze(
  2. body: {
  3. analyzer: 'fingerprint',
  4. text: 'Yes yes, Gödel said this sentence is consistent and.'
  5. }
  6. )
  7. puts response

Js

  1. const response = await client.indices.analyze({
  2. analyzer: "fingerprint",
  3. text: "Yes yes, Gödel said this sentence is consistent and.",
  4. });
  5. console.log(response);

Console

  1. POST _analyze
  2. {
  3. "analyzer": "fingerprint",
  4. "text": "Yes yes, Gödel said this sentence is consistent and."
  5. }

上記の文は次の単一の用語を生成します:

Text

  1. [ and consistent godel is said sentence this yes ]

Configuration

fingerprint アナライザーは次のパラメータを受け入れます:

separator 用語を連結するために使用する文字。デフォルトはスペースです。
max_output_size 出力する最大トークンサイズ。デフォルトは 255 です。このサイズより大きいトークンは破棄されます。
stopwords _english_ のような事前定義されたストップワードリストまたはストップワードのリストを含む配列。デフォルトは _none_ です。
stopwords_path ストップワードを含むファイルへのパス。

ストップワードの設定に関する詳細は、ストップトークンフィルター を参照してください。

Example configuration

この例では、fingerprint アナライザーを使用して事前定義された英語のストップワードリストを設定します:

Python

  1. resp = client.indices.create(
  2. index="my-index-000001",
  3. settings={
  4. "analysis": {
  5. "analyzer": {
  6. "my_fingerprint_analyzer": {
  7. "type": "fingerprint",
  8. "stopwords": "_english_"
  9. }
  10. }
  11. }
  12. },
  13. )
  14. print(resp)
  15. resp1 = client.indices.analyze(
  16. index="my-index-000001",
  17. analyzer="my_fingerprint_analyzer",
  18. text="Yes yes, Gödel said this sentence is consistent and.",
  19. )
  20. print(resp1)

Ruby

  1. response = client.indices.create(
  2. index: 'my-index-000001',
  3. body: {
  4. settings: {
  5. analysis: {
  6. analyzer: {
  7. my_fingerprint_analyzer: {
  8. type: 'fingerprint',
  9. stopwords: '_english_'
  10. }
  11. }
  12. }
  13. }
  14. }
  15. )
  16. puts response
  17. response = client.indices.analyze(
  18. index: 'my-index-000001',
  19. body: {
  20. analyzer: 'my_fingerprint_analyzer',
  21. text: 'Yes yes, Gödel said this sentence is consistent and.'
  22. }
  23. )
  24. puts response

Js

  1. const response = await client.indices.create({
  2. index: "my-index-000001",
  3. settings: {
  4. analysis: {
  5. analyzer: {
  6. my_fingerprint_analyzer: {
  7. type: "fingerprint",
  8. stopwords: "_english_",
  9. },
  10. },
  11. },
  12. },
  13. });
  14. console.log(response);
  15. const response1 = await client.indices.analyze({
  16. index: "my-index-000001",
  17. analyzer: "my_fingerprint_analyzer",
  18. text: "Yes yes, Gödel said this sentence is consistent and.",
  19. });
  20. console.log(response1);

Console

  1. PUT my-index-000001
  2. {
  3. "settings": {
  4. "analysis": {
  5. "analyzer": {
  6. "my_fingerprint_analyzer": {
  7. "type": "fingerprint",
  8. "stopwords": "_english_"
  9. }
  10. }
  11. }
  12. }
  13. }
  14. POST my-index-000001/_analyze
  15. {
  16. "analyzer": "my_fingerprint_analyzer",
  17. "text": "Yes yes, Gödel said this sentence is consistent and."
  18. }

上記の例は次の用語を生成します:

Text

  1. [ consistent godel said sentence yes ]

Definition

fingerprint トークナイザーは次の構成要素から成ります:

fingerprint アナライザーの設定パラメータを超えてカスタマイズする必要がある場合は、custom アナライザーとして再作成し、通常はトークンフィルターを追加することで修正する必要があります。これにより、組み込みの fingerprint アナライザーが再作成され、さらなるカスタマイズの出発点として使用できます:

Python

  1. resp = client.indices.create(
  2. index="fingerprint_example",
  3. settings={
  4. "analysis": {
  5. "analyzer": {
  6. "rebuilt_fingerprint": {
  7. "tokenizer": "standard",
  8. "filter": [
  9. "lowercase",
  10. "asciifolding",
  11. "fingerprint"
  12. ]
  13. }
  14. }
  15. }
  16. },
  17. )
  18. print(resp)

Ruby

  1. response = client.indices.create(
  2. index: 'fingerprint_example',
  3. body: {
  4. settings: {
  5. analysis: {
  6. analyzer: {
  7. rebuilt_fingerprint: {
  8. tokenizer: 'standard',
  9. filter: [
  10. 'lowercase',
  11. 'asciifolding',
  12. 'fingerprint'
  13. ]
  14. }
  15. }
  16. }
  17. }
  18. }
  19. )
  20. puts response

Js

  1. const response = await client.indices.create({
  2. index: "fingerprint_example",
  3. settings: {
  4. analysis: {
  5. analyzer: {
  6. rebuilt_fingerprint: {
  7. tokenizer: "standard",
  8. filter: ["lowercase", "asciifolding", "fingerprint"],
  9. },
  10. },
  11. },
  12. },
  13. });
  14. console.log(response);

Console

  1. PUT /fingerprint_example
  2. {
  3. "settings": {
  4. "analysis": {
  5. "analyzer": {
  6. "rebuilt_fingerprint": {
  7. "tokenizer": "standard",
  8. "filter": [
  9. "lowercase",
  10. "asciifolding",
  11. "fingerprint"
  12. ]
  13. }
  14. }
  15. }
  16. }
  17. }