All Products
Search
Document Center

Artificial Intelligence Recommendation:Operator fitur bawaan

Last Updated:Mar 21, 2026

id_feature

Ikhtisar

Operator id_feature memproses fitur diskrit, baik bernilai tunggal seperti ID pengguna maupun bernilai ganda seperti warna yang tersedia untuk suatu item.

Konfigurasi

{
  "feature_type": "id_feature",
  "feature_name": "item_is_main",
  "expression": "item:is_main",
  "need_prefix": true,
  "separator": "\u001D",
  "default_value": ""
}

Parameter

Wajib

Deskripsi

feature_name

Ya

Nama fitur output. Nama ini juga digunakan sebagai awalan dalam nilai fitur yang dihasilkan.

expression

Ya

Bidang sumber yang digunakan untuk menghasilkan fitur.

need_prefix

Tidak

Menentukan apakah akan menambahkan feature_name di awal nilai output. Nilai yang valid:

  • true: feature_name ditambahkan di awal.

  • false (default): feature_name tidak ditambahkan di awal.

value_type

Tidak

Tipe data fitur output. Default-nya adalah string.

separator

Tidak

Pemisah nilai ganda untuk fitur input. Default-nya adalah \u001D. Hanya satu karakter yang didukung.

default_value

Tidak

Nilai default yang digunakan ketika fitur input kosong.

weighted

Tidak

Menandai apakah input berada dalam format kunci:nilai. Jika diatur ke true, nilai fitur dan bobot keduanya dioutput (tipe Map).

value_dimension

Tidak

Memotong output ketika fitur memiliki beberapa nilai. Nilai default-nya adalah 0, yang menunjukkan tidak ada pemotongan.

Jika nilainya 1, tipe skema tabel output adalah value_type. Jika tidak, tipe skemanya adalah array<value_type>.

stub_type

Tidak

Jika diatur ke true, transformasi fitur yang dikonfigurasi hanya digunakan sebagai hasil antara dalam pipeline dan tidak dioutput ke model. Default-nya adalah false.

Contoh

Contoh berikut menunjukkan input dan output untuk fitur item:is_main dengan konfigurasi berbeda.

Tipe

Nilai

Fitur output

int64_t

100

item_is_main_100

double

5.2

item_is_main_5.2

string

abc

item_is_main_abc

String bernilai ganda

abc^]bcd

[item_is_main_abc, item_is_main_bcd]

Int bernilai ganda

123^]456

[item_is_main_123, item_is_main_456]

Simbol ^] merepresentasikan pemisah nilai ganda, yaitu satu karakter dengan kode ASCII "\x1D", yang juga dapat ditulis sebagai "\u001d".

raw_feature

Ikhtisar

Operator raw_feature memproses fitur kontinu dan mendukung tipe numerik seperti int, float, dan double, baik untuk fitur bernilai tunggal maupun bernilai ganda.

Konfigurasi

{
 "feature_type" : "raw_feature",
 "feature_name" : "ctr",
 "expression" : "item:ctr",
 "normalizer" : "method=log10"
}

Parameter

Wajib

Deskripsi

feature_name

Ya

Menentukan nama fitur.

expression

Ya

Bidang sumber tempat fitur bergantung. Sumber yang valid adalah user, item, atau context.

normalizer

Tidak

Metode normalisasi. Untuk detailnya, lihat bagian Normalizer.

value_type

Tidak

Tipe data fitur output. Default: float.

separator

Tidak

Pemisah untuk fitur input bernilai ganda. Default-nya adalah \u001D. Pemisah harus berupa satu karakter.

default_value

Tidak

Nilai default untuk fitur input yang kosong.

value_dimension

Tidak

Dimensi bidang output. Default-nya adalah 1. Parameter ini dapat digunakan untuk memotong output dalam tugas offline. Jika dimensinya 1, tipe skema tabel output adalah value_type. Jika tidak, tipe skemanya adalah array<value_type>.

stub_type

Tidak

Default-nya adalah false. Jika diatur ke true, transformasi fitur ini hanya berfungsi sebagai hasil antara dan tidak dioutput ke model.

Contoh

^] merepresentasikan pemisah nilai ganda, yaitu satu karakter dengan encoding ASCII "\x1D", bukan dua karakter.

Tipe

Nilai

Fitur output

int64_t

100

100

double

100.1

100.1

Int bernilai ganda

123^]456

[123, 456] (Dimensi bidang input harus sesuai dengan yang ditentukan dalam parameter value_dimension.)

Normalizer

Parameter raw_feature dan match_feature mendukung empat jenis normalizer: minmax, zscore, log10, expression. Konfigurasi dan metode perhitungannya sebagai berikut:

  • minmax

    Contoh konfigurasi: method=minmax,min=2.1,max=2.2

    Rumus: x' = (x - min) / (max - min)

  • zscore

    Contoh konfigurasi: method=zscore,mean=0.0,standard_deviation=10.0

    Rumus: x' = (x - mean) / standard_deviation

  • log10

    Contoh konfigurasi: method=log10,threshold=1e-10,default=-10

    Rumus: x' = log10(x) jika x > threshold; jika tidak, x' = default

  • expression

    Contoh konfigurasi: method=expression,expr=sign(x)

    Rumus: Memungkinkan Anda mendefinisikan fungsi atau ekspresi kustom. Nilai input direpresentasikan oleh variabel x.

expr_feature

Ikhtisar

Operator expr_feature mengevaluasi ekspresi matematika dan mengembalikan hasilnya sebagai nilai fitur. Operator ini mendukung Batch Computing dan Broadcasting.

Penting: Semua input harus dapat dikonversi ke tipe data double.

Konfigurasi

{
  "feature_type" : "expr_feature",
  "feature_name" : "ctr_sigmoid",
  "value_type": "float",
  "expression" : "sigmoid(pv/(1+click))",
  "variables": ["item:pv", "item:click"]
}

Ketika pv = 2, click = 3, nilai fitur ekspresi di atas adalah 0.6224593312.

Parameter

Wajib

Deskripsi

feature_name

Ya

Menentukan nama fitur output.

expression

Ya

Menentukan ekspresi matematika yang akan dievaluasi.

variables

Ya

Menentukan variabel, atau bidang input, yang digunakan dalam ekspresi. Sumber untuk setiap variabel harus berupa user, item, atau context.

value_type

Tidak

Opsional. Menentukan tipe data fitur output. Nilai yang valid adalah float, double, int32, dan int64. Nilai default-nya adalah float.

separator

Tidak

Opsional. Menentukan pemisah untuk bidang input string bernilai ganda. Nilai default-nya adalah \u001D. Hanya satu karakter yang didukung.

default_value

Tidak

Opsional. Menentukan nilai default yang digunakan ketika fitur input kosong.

value_dimension

Tidak

Nilai default-nya adalah 0, yang merepresentasikan dimensi bidang output dan dapat digunakan untuk memotong atau mengisi output. Tipe skema tabel output adalah value_type jika nilainya 1, atau array<value_type> jika tidak.

stub_type

Tidak

Opsional. Jika diatur ke true, Transformasi Fitur ini hanya berfungsi sebagai hasil antara dalam pipeline dan tidak diteruskan ke Model. Nilai default-nya adalah false.

Contoh

{
    "feature_name": "expr_feat",
    "feature_type": "expr_feature",
    "value_type": "float",
    "expression": "a+b",
    "variables": ["a", "b"],
    "value_dimension": 3
}
  • Komputasi skalar dan vektor (Broadcasting)

    • Ketika a=1 dan b=[1, 2, 6], hasilnya adalah [2, 3, 7].

  • Komputasi element-wise vektor-ke-vektor

    • Ketika a=[3, 2, 1] dan b=[1, 2, 6], hasilnya adalah [4, 4, 7].

  • Variabel Sementara dan Ekspresi Koma

    • Contohnya: x=roundp(a),(a-x)*b. Dalam contoh ini, x adalah variabel sementara dan tidak perlu dikonfigurasi dalam variables.

    • Ekspresi koma dievaluasi dari kiri ke kanan, dan mengembalikan nilai sub-ekspresi paling kanan sebagai hasil akhir.

    • Untuk mengurangi overhead memori, Anda dapat menggunakan ulang variabel yang ada sebagai variabel sementara ketika secara semantik sesuai.

Menggabungkan ekspresi dan fitur sekuens

{
  "features": [
    {
      "feature_name": "sphere_distance",
      "feature_type": "expr_feature",
      "expression": "sphere_dist(click_id_lng,click_id_lat,j_lng,j_lat)",
      "variables": ["user:click_id_lng", "user:click_id_lat", "item:j_lng", "item:j_lat"],
      "default_value": "0",
      "value_dimension": 3,
      "stub_type": true
    },
    {
      "feature_name": "time_diff",
      "feature_type": "expr_feature",
      "variables": ["user:cur_time", "user:clk_time_seq"],
      "expression": "cur_time-clk_time_seq",
      "default_value": "0",
      "separator": ";",
      "value_dimension": 3,
      "stub_type": true
    },
    {
      "sequence_name": "click_seq",
      "sequence_length": 3,
      "sequence_delim": ";",
      "sequence_pk": "user:click_item",
      "features": [
        {
          "feature_name": "spherical_distance",
          "feature_type": "raw_feature",
          "expression": "feature:sphere_distance",
          "default_value": "0.0"
        },
        {
          "feature_name": "time_diff_seq",
          "feature_type": "id_feature",
          "expression": "feature:time_diff",
          "default_value": "0.0",
          "num_buckets": 10000
        }
      ]
    }
  ]
}

Ekspresi

  • Fungsi bawaan (skalar)

    Nama fungsi

    Jumlah parameter

    Deskripsi

    rnd

    0

    Menghasilkan bilangan acak dalam rentang [0, 1).

    sin

    1

    Menghitung sinus suatu bilangan.

    cos

    1

    Menghitung cosinus suatu bilangan.

    tan

    1

    Menghitung tangen suatu bilangan.

    asin

    1

    Menghitung arcsinus suatu bilangan.

    acos

    1

    Menghitung arccosinus suatu bilangan.

    atan

    1

    Menghitung arctangen suatu bilangan.

    sinh

    1

    Menghitung sinus hiperbolik suatu bilangan.

    cosh

    1

    Menghitung cosinus hiperbolik suatu bilangan.

    tanh

    1

    Menghitung tangen hiperbolik suatu bilangan.

    asinh

    1

    Menghitung sinus hiperbolik invers suatu bilangan.

    acosh

    1

    Menghitung cosinus hiperbolik invers suatu bilangan.

    atanh

    1

    Menghitung tangen hiperbolik invers suatu bilangan.

    log2

    1

    Menghitung logaritma basis-2 suatu bilangan.

    log10

    1

    Menghitung logaritma basis-10 suatu bilangan.

    log

    1

    Menghitung logaritma natural (basis e) suatu bilangan.

    ln

    1

    Menghitung logaritma natural (basis e) suatu bilangan.

    exp

    1

    Memangkatkan bilangan Euler (e) dengan pangkat suatu bilangan.

    sqrt

    1

    Menghitung akar kuadrat suatu bilangan.

    sign

    1

    Mengembalikan tanda suatu bilangan: -1 untuk negatif, 1 untuk positif, atau 0 untuk nol.

    abs

    1

    Menghitung nilai absolut suatu bilangan.

    rint

    1

    Membulatkan bilangan ke bilangan bulat terdekat.

    round

    1

    Membulatkan bilangan ke bilangan bulat terdekat menggunakan metode 'round half away from zero'.

    roundp

    2

    Membulatkan bilangan ke presisi tertentu. Misalnya, roundp(3.14159, 2) mengembalikan 3.14.

    mod

    2

    Menghitung sisa pembagian.

    floor

    1

    Membulatkan bilangan ke bawah ke bilangan bulat terdekat.

    ceil

    1

    Membulatkan bilangan ke atas ke bilangan bulat terdekat.

    trunc

    1

    Memotong bilangan menjadi bilangan bulat dengan menghapus bagian pecahannya.

    sigmoid

    1

    Menghitung sigmoid suatu bilangan.

    sphere_dist

    4

    Menghitung jarak bola antara dua titik GPS. Argumen: lng1, lat1, lng2, lat2.

    haversine

    4

    Menghitung jarak Haversine antara dua titik GPS. Argumen: lng1, lat1, lng2, lat2.

    min

    Variabel

    Mengembalikan nilai minimum dari daftar argumen.

    max

    Variabel

    Mengembalikan nilai maksimum dari daftar argumen.

    sum

    Variabel

    Mengembalikan jumlah semua argumen.

    avg

    Variabel

    Mengembalikan nilai rata-rata semua argumen.

    Catatan: Fungsi bawaan ini mendukung Batch Computing dan Broadcasting.

  • Fungsi operasi vektor bawaan

    Nama fungsi

    Jumlah parameter

    Deskripsi

    len

    1

    Mengembalikan panjang (jumlah elemen) suatu vektor.

    l2_norm

    1

    Melakukan normalisasi L2 pada suatu vektor.

    squared_norm

    1

    Menghitung norma L2 kuadrat dari suatu vektor.

    dot

    2

    Menghitung produk dot dua vektor.

    euclid_dist

    2

    Menghitung jarak Euclidean antara dua vektor.

    corr

    2

    Menghitung koefisien korelasi Pearson antara dua vektor.

    std_dev

    1

    Menghitung deviasi standar sampel suatu vektor (membagi dengan n-1).

    pop_std_dev

    1

    Menghitung deviasi standar populasi suatu vektor (membagi dengan n).

    variance

    1

    Menghitung varians sampel suatu vektor (membagi dengan n-1).

    pop_variance

    1

    Menghitung varians populasi suatu vektor (membagi dengan n).

    reduce_min

    1

    Mengembalikan nilai minimum dalam suatu vektor.

    reduce_max

    1

    Mengembalikan nilai maksimum dalam suatu vektor.

    reduce_sum

    1

    Mengembalikan jumlah semua elemen dalam suatu vektor.

    reduce_mean

    1

    Mengembalikan nilai rata-rata semua elemen dalam suatu vektor.

    reduce_prod

    1

    Mengembalikan hasil perkalian semua elemen dalam suatu vektor.

    Catatan: Jika suatu ekspresi mencakup fungsi operasi vektor bawaan, semua variabel lain dalam ekspresi tersebut harus berupa skalar.

  • Operator biner bawaan

    Operator

    Deskripsi

    Prioritas

    =

    Penugasan. Operator khusus ini memodifikasi salah satu argumennya dan hanya berlaku untuk variabel.

    0

    ||

    OR logis

    1

    &&

    AND logis

    2

    |

    OR bitwise

    3

    &

    AND bitwise

    4

    <=

    Kurang dari atau sama dengan

    5

    >=

    Lebih dari atau sama dengan

    5

    !=

    Tidak sama dengan

    5

    ==

    Sama dengan

    5

    >

    Lebih dari

    5

    <

    Kurang dari

    5

    +

    Penambahan

    6

    -

    Pengurangan

    6

    *

    Perkalian

    7

    /

    Pembagian

    7

    %

    Modulo

    7

    ^

    Memangkatkan x ke pangkat y

    8

  • Operator ternary bawaan

    Mendukung logika if-then-else menggunakan sintaks gaya C.

    Menggunakan evaluasi malas (lazy evaluation), artinya hanya cabang ekspresi yang diperlukan yang dievaluasi.

    Operator

    Deskripsi

    Sintaks

    ?:

    Operator if-then-else

    condition ? value_if_true : value_if_false

  • Konstanta bawaan

    Konstanta

    Deskripsi

    Nilai

    _pi

    Konstanta matematika pi (π).

    3.141592653589793

    _e

    Konstanta matematika e, juga dikenal sebagai bilangan Euler.

    2.718281828459045

combo_feature

Ikhtisar

Operator combo_feature membuat kombinasi fitur, atau Produk Kartesius, dari beberapa bidang input atau ekspresi. Proses ini juga dikenal sebagai persilangan fitur. Anda dapat menganggap operator id_feature sebagai kasus khusus dari combo_feature di mana hanya satu bidang yang digunakan untuk persilangan. Biasanya, bidang-bidang yang terlibat dalam persilangan berasal dari sumber data yang berbeda, misalnya saat melakukan persilangan fitur pengguna dengan fitur item.

Konfigurasi

{
  "feature_type" : "combo_feature",
  "feature_name" : "comb_age_item",
  "expression" : ["user:age_class", "item:item_id"],
  "need_prefix": true,
  "separator": "\u001D",
  "default_value": ""
}

Parameter

Wajib

Deskripsi

feature_name

Ya

Menentukan awalan untuk fitur output.

expression

Ya

Array yang menentukan bidang sumber tempat fitur bergantung.

need_prefix

Tidak

Menunjukkan apakah akan menambahkan feature_name sebagai awalan. Nilai yang valid:

  • true: Menambahkan awalan.

  • false (default): Tidak menambahkan awalan.

value_type

Tidak

Menentukan tipe data fitur output. Nilai default-nya adalah string.

separator

Tidak

Menentukan pemisah nilai ganda untuk fitur input. Nilai default-nya adalah \u001D. Pemisah harus berupa satu karakter.

default_value

Tidak

Menentukan nilai default yang digunakan ketika fitur input kosong.

value_dimension

Tidak

Nilai default-nya adalah 0, yang dapat digunakan dalam tugas offline untuk memotong output. Jika nilainya 1, tipe skema tabel output adalah value_type. Jika tidak, tipe skemanya adalah array<value_type>.

stub_type

Tidak

Nilai default-nya adalah false. Jika diatur ke true, pipeline menggunakan transformasi fitur yang dikonfigurasi hanya sebagai hasil antara dan tidak meneruskannya ke model.

  • Operator ini mendukung Pengelompokan Fitur. Untuk informasi lebih lanjut, lihat Pengelompokan Fitur (Diskretisasi).

  • Operator ini mendukung input bernilai ganda bertipe array.

Contoh

Simbol ^] merepresentasikan pemisah nilai ganda. Simbol ini adalah satu karakter dengan kode ASCII \x1D, bukan dua karakter terpisah.

user:age_class

item:item_id

Fitur output

123

45678

comb_age_item_123_45678

abc, bcd

45678

[comb_age_item_abc_45678, comb_age_item_bcd_45678]

abc, bcd

12345^]45678

[comb_age_item_abc_12345, comb_age_item_abc_45678, comb_age_item_bcd_12345, comb_age_item_bcd_45678]

Jumlah fitur output dihitung sebagai:

|F1| * |F2| * ... * |Fn|

Di mana |Fn| merepresentasikan jumlah nilai dalam bidang input ke-n.

lookup_feature

Ikhtisar

Operator lookup_feature mirip dengan match_feature. Operator ini mengambil nilai dari sekumpulan pasangan kunci-nilai.

Operator ini memerlukan parameter map dan key:

  • map adalah tipe dictionary atau bidang bertipe MultiString, di mana setiap string memiliki format "k1:v1".

  • key dapat berupa bidang bertipe apa pun. Input bertipe array direkomendasikan untuk beberapa kunci. Untuk menghasilkan fitur, nilai kunci diambil, dikonversi ke tipe kunci dari map, lalu dicocokkan dengan pasangan kunci-nilai dalam bidang map untuk mendapatkan fitur akhir.

Konfigurasi

{
  "feature_type": "lookup_feature",
  "feature_name": "item_match_item",
  "map": "item:item_attr",
  "key": "item:item_value",
  "need_discrete": true,
  "need_key": true
}

Parameter

Wajib

Deskripsi

feature_name

Ya

Menentukan awalan untuk fitur output.

map

Ya

Menentukan dictionary yang berisi sekumpulan pasangan kunci-nilai.

key

Ya

Menentukan kunci untuk dicari dalam dictionary.

value_type

Tidak

Menentukan tipe data fitur output. Default-nya adalah string.

separator

Tidak

Menentukan pemisah nilai ganda untuk bidang key bertipe string. Nilai default-nya adalah "\u001D", dan pemisah hanya boleh berupa satu karakter.

default_value

Tidak

Menentukan nilai default yang digunakan ketika key input kosong atau tidak ditemukan dalam map.

need_prefix

Tidak

Mengontrol apakah akan menambahkan feature_name sebagai awalan ke output.

  • true: Awalan ditambahkan.

  • false (default): Awalan tidak ditambahkan.

need_key

Tidak

Mengontrol apakah akan menambahkan key sebagai awalan ke nilai output. Parameter ini hanya berlaku ketika value_type adalah string.

  • true: Awalan ditambahkan.

  • false (default): Awalan tidak ditambahkan.

normalizer

Tidak

Menentukan metode normalisasi. Parameter ini bekerja seperti parameter normalizer pada operator raw_feature.

combiner

Tidak

Menentukan metode agregasi untuk menggabungkan nilai yang diambil dari beberapa kunci. Nilai yang valid: sum (default), avg/mean, max, dan min.

need_discrete

Tidak

Mengontrol apakah akan mengembalikan beberapa nilai sebagai array diskrit. Jika diatur ke true, operator mengoutput semua nilai yang diambil dan mengabaikan combiner. Default: false.

value_dimension

Tidak

Menentukan dimensi fitur output. Parameter ini dapat digunakan untuk memotong output dalam tugas offline.

  • 0 (default): Tidak ada pemotongan yang dilakukan.

  • Untuk nilai 1, tipe skema tabel output adalah value_type, atau array<value_type> jika tidak.

stub_type

Tidak

Jika diatur ke true, transformasi fitur yang dikonfigurasi hanya digunakan sebagai hasil antara dan tidak dioutput ke model. Default: false.

  • Operator ini mendukung Pengelompokan. Untuk instruksi konfigurasi, lihat Pengelompokan Fitur (Diskretisasi).

  • Parameter map menerima objek dictionary, dan parameter key menerima array.

Contoh

Berdasarkan konfigurasi di atas, asumsikan data input berikut:

item_attr : "k1:v1^]k2:v2^]k3:v3"

^] merepresentasikan pemisah nilai ganda. Ini adalah satu karakter dengan encoding ASCII "\x1D", bukan dua karakter. Anda dapat memasukkan karakter ini di emacs dengan menekan C-q C-5, dan di vim dengan menekan C-v C-5. Di sini, item_attr adalah string bernilai ganda.

Ketika menggunakan string untuk parameter map, beberapa pasangan kunci-nilai harus disediakan sebagai string bernilai ganda, bukan string tunggal.

item_value : "k2"

Hasil transformasi fitur adalah item_match_item_k2_v2.

Contoh dengan need_prefix diatur ke true

feature_name: fg
map: {"k1:123", "k2:234", "k3:3"}
key: {"k1"}
Result: feature={"fg_123"}

Contoh dengan need_prefix diatur ke false

map: {"k1:123", "k2:234", "k3:3"}
key: {"k1"}
Result: feature={123}

Menggabungkan hasil

Jika Anda memberikan beberapa kunci, Anda dapat mengonfigurasi parameter combiner untuk menggabungkan nilai yang diambil. Metode agregasi yang valid meliputi sum, mean, max, dan min.

Jika Anda ingin menggunakan combiner, Anda harus mengatur need_discrete ke false. Dalam hal ini, nilai harus berupa tipe numerik atau string yang dapat dikonversi ke nilai numerik.

match_feature

Ikhtisar

Operator match_feature mentransformasikan fitur dengan mencari nilai dalam peta bersarang dua tingkat.

Konfigurasi

Konfigurasikan operator ini dalam format JSON.

{
  "feature_name": "user__l1_ctr_1",
  "feature_type": "match_feature",
  "category": "ALL",
  "need_discrete": false,
  "item": "item:category_level1",
  "user": "user:l1_ctr_1",
  "match_type": "hit"
}
  • user: Sumber data, yang merupakan peta bersarang dua tingkat yang dikodekan sebagai string.

    • | adalah pemisah antar item dalam peta tingkat pertama, dan ^ adalah pemisah antara kunci dan nilai dalam peta tingkat pertama.

    • , adalah pemisah antar item dalam peta tingkat kedua, dan : adalah pemisah antara kunci dan nilainya.

  • category: Kunci utama untuk pencarian peta tingkat pertama.

    ALL adalah karakter wildcard yang cocok dengan semua nilai kunci pada tingkat ini.

  • item: Kunci sekunder untuk pencarian peta tingkat kedua.

    ALL adalah karakter wildcard yang cocok dengan semua nilai kunci pada tingkat ini.

  • need_discrete

    • true: Operator mengembalikan string komposit dari nama fitur dan kunci. Model menggunakan string ini sebagai fitur dan mengabaikan nilai yang cocok.

    • false (default): Operator hanya mengembalikan nilai fitur yang cocok. Model menggunakan nilai ini secara langsung.

  • match_type

    • hit: Mengembalikan satu fitur yang cocok. Operator menanyakan peta tingkat pertama dengan nilai category, lalu menanyakan peta tingkat kedua yang dihasilkan dengan nilai item untuk mendapatkan satu hasil. Untuk pencocokan tingkat tunggal, Anda dapat mengatur kunci dalam peta tingkat pertama ke ALL dan juga mengatur parameter category ke ALL.

    • multihit: Memungkinkan bidang category dan item menggunakan wildcard ALL, yang dapat mengembalikan beberapa nilai yang cocok.

  • normalizer

    Opsional. Metode normalisasi ini memiliki arti yang sama dengan konfigurasi bernama identik di raw_feature dan hanya berlaku ketika need_discreate=false.

  • show_category

    Menentukan apakah akan menambahkan awalan category ke hasil kueri. Default-nya true ketika need_discrete=true dan match_type=hit, dan false jika tidak.

  • show_item

    Menentukan apakah akan menambahkan awalan item ke hasil kueri. Nilai default-nya true ketika need_discrete=true dan match_type=hit. Jika tidak, nilai default-nya false.

  • value_type

    Opsional. Menentukan tipe data fitur output. Nilai default-nya adalah string.

  • separator

    Opsional. Menentukan pemisah nilai ganda untuk bidang key bertipe string, yang default-nya "\u001D" dan harus berupa satu karakter.

  • default_value

    Opsional. Menentukan nilai default yang digunakan ketika fitur input kosong.

  • value_dimension

    Opsional, dengan nilai default 0. Parameter ini dapat digunakan dalam tugas offline untuk memotong output. Jika nilainya 1, tipe skema tabel output adalah value_type. Jika tidak, tipe skemanya adalah array<value_type>.

  • stub_type

    Opsional. Nilai default-nya adalah false. Jika Anda mengatur parameter ini ke true, pipeline hanya menggunakan transformasi fitur yang dikonfigurasi sebagai hasil antara dan tidak meneruskannya ke model.

Contoh

Fitur pengguna: Dictionary bersarang

Misalnya, string 50011740^50011740:0.2,36806676:0.3,122572685:0.5|50006842^16788:0.1 dikonversi menjadi peta dua tingkat sebagai berikut:

{
  "50011740": {
    "50011740": 0.2,
    "36806676": 0.3,
    "122572685": 0.5
  },
  "50006842": {
    "16788": 0.1
  }
}

Tipe pencocokan hit

{
  "feature_name": "brand_hit",
  "feature_type": "match_feature",
  "category": "item:auction_root_category",
  "need_discrete": true,
  "item": "item:brand_id",
  "user": "user:user_brand_tags_hit",
  "match_type": "hit"
}

Asumsikan nilai bidang sebagai berikut:

Parameter

Nilai

user_brand_tags_hit

50011740^107287172:0.2,36806676:0.3,122572685:0.5|50006842^16788816:0.1,10122:0.2,29889:0.3,30068:19

auction_root_category

50006842

brand_id

30068

  • Ketika need_discrete adalah true, operator pertama-tama menanyakan user_brand_tags_hit dengan nilai auction_root_category (50006842), yang mengembalikan 16788816:0.1,10122:0.2,29889:0.3,30068:19. Operator kemudian menanyakan hasil tersebut dengan brand_id (30068) untuk mendapatkan nilai 19. Hasil akhirnya adalah brand_hit_50006842_30068_19.

  • Ketika need_discrete adalah false, hasilnya adalah 19.0.

Jika Anda hanya menggunakan pencocokan lapisan tunggal, Anda harus mengubah nilai category dalam konfigurasi di atas menjadi ALL. Asumsikan bahwa bidang memiliki nilai sebagai berikut:

Parameter

Nilai

user_brand_tags_hit

ALL^16788816:40,10122:40,29889:20,30068:20

brand_id

30068

  • Ketika need_discrete adalah true, hasilnya adalah brand_hit_ALL_30068_20.

  • Ketika need_discrete adalah false, hasilnya adalah 20.0.

Dalam kasus ini, Anda juga dapat menggunakan lookup_feature atau user_brand_tags_hit, dan nilainya harus dalam format "16788816:40^]10122:40^]29889:20^]30068:20". '^]' adalah pemisah nilai ganda, yaitu karakter tak tercetak \u001d.

Karena operator lookup_feature mendukung tipe input kompleks seperti peta dan array, operator ini menawarkan kinerja yang lebih baik.

overlap_feature

Ikhtisar

Operator overlap_feature menghitung metrik pencocokan string antara dua input teks. Misalnya, dalam aplikasi pencarian, Anda dapat menggunakannya untuk menentukan apakah suatu query terdapat dalam suatu title.

Metode

Deskripsi

query_common_ratio

Menghitung rasio istilah umum antara query dan title terhadap jumlah total istilah dalam query.

Mengembalikan nilai dalam rentang [0, 1].

title_common_ratio

Menghitung rasio istilah umum antara query dan title terhadap jumlah total istilah dalam title.

Mengembalikan nilai dalam rentang [0, 1].

is_contain

Memeriksa apakah query sepenuhnya terdapat dalam title sambil mempertahankan urutan istilah. Nilai yang valid:

  • 0: Tidak terdapat.

  • 1: Terdapat.

is_equal

Memeriksa apakah query dan title identik. Nilai yang valid:

  • 0: Tidak identik.

  • 1: Identik.

index_of

Mengembalikan posisi awal kemunculan pertama seluruh query dalam title. Mengembalikan -1.0 jika query tidak ditemukan.

proximity_min_cover

Menghitung kedekatan istilah query dalam title.

Nilai yang dikembalikan berada dalam rentang [0, length(title)]. Nilai 0 menunjukkan bahwa setidaknya satu istilah tidak dapat dicocokkan.

proximity_min_dist

Menghitung kedekatan istilah query dalam title berdasarkan jarak pasangan minimum.

Nilai yang dikembalikan berada dalam rentang [0, length(title) + 1]. Nilai length(title) + 1 menunjukkan bahwa tidak ditemukan pasangan istilah yang cocok.

proximity_max_dist

Menghitung kedekatan istilah query dalam title berdasarkan jarak pasangan maksimum.

Nilai yang dikembalikan berada dalam rentang [0, length(title) + 1]. Nilai length(title) + 1 menunjukkan bahwa tidak ditemukan pasangan istilah yang cocok.

proximity_avg_dist

Menghitung kedekatan istilah query dalam title berdasarkan jarak pasangan rata-rata.

Nilai yang dikembalikan berada dalam rentang [0, length(title) + 1]. Nilai length(title) + 1 menunjukkan bahwa tidak ditemukan pasangan istilah yang cocok.

Metode perhitungan untuk ukuran kedekatan istilah ini didasarkan pada makalah "An Exploration of Proximity Measures in Information Retrieval".

Asumsikan bahwa urutan Term title(dokumen) adalah: t1,t2,t1,t3,t5,t4,t2,t3,t4

  • MinCover didefinisikan sebagai panjang segmen dokumen terpendek yang mencakup setiap istilah query setidaknya sekali.

  • MinDist (Jarak pasangan minimum): Menghitung minimum dari semua jarak pasangan. Misalnya, jika jarak pasangan adalah 1, 2, dan 3, maka MinDist = min(1, 2, 3) = 1.

  • MaxDist (Jarak pasangan maksimum): Kebalikan dari MinDist. Menghitung maksimum dari semua jarak pasangan. Misalnya, jika jarak pasangan adalah 1, 2, dan 3, maka MaxDist = max(1, 2, 3) = 3.

  • AveDist (Jarak pasangan rata-rata): Menghitung rata-rata dari semua jarak pasangan. Misalnya, jika jarak pasangan adalah 1, 2, dan 3, maka AveDist = (1 + 2 + 3) / 3 = 2.

Catatan bahwa semua operator agregat (MinDist, MaxDist, dan AveDist) didefinisikan berdasarkan jarak pasangan antara istilah query yang cocok. Ketika sebuah dokumen hanya mencocokkan satu istilah query, MinDist, AveDist, dan MaxDist semuanya didefinisikan sebagai panjang dokumen.

Konfigurasi

{
  "feature_type" : "overlap_feature",
  "feature_name" : "is_contain",
  "query" : "user:attr1",
  "title" : "item:attr2",
  "method" : "is_contain",
  "separator" : " ",
  "normalizer" : ""
}

Parameter

Wajib

Deskripsi

feature_type

Ya

Jenis fitur. Harus overlap_feature.

feature_name

Ya

Awalan untuk nama fitur output.

query

Ya

Bidang sumber untuk query. Bidang ini harus berupa string bernilai ganda.

title

Ya

Bidang sumber untuk title. Bidang ini harus berupa string bernilai ganda.

method

Ya

Metode perhitungan. Nilai yang valid meliputi query_common_ratio, title_common_ratio, is_contain, is_equal, index_of, dan ukuran kedekatan.

separator

Tidak

Pembatas untuk input. Jika Anda tidak menentukan nilai, default-nya adalah chr(29).

normalizer

Tidak

Metode normalisasi. Parameter ini memiliki fungsi yang sama dengan parameter normalizer pada operator raw_feature.

stub_type

Tidak

Default-nya false. Jika diatur ke true, fitur ini hanya digunakan sebagai hasil antara dan tidak termasuk dalam output model akhir.

Operator overlap_feature mengembalikan nilai bertipe float.

Contoh 1

Diberikan query "high,high2,fiberglass,abc" dan title "high,quality,fiberglass,tube,for,golf,bag", operator mengembalikan hasil berikut:

Metode

Nilai

query_common_ratio

0.5

title_common_ratio

0.28

is_contain

0.0

is_equal

0.0

Contoh 2

method=index_of dan title adalah the cat sat on the mat.

Query

Nilai

the cat

0.0

sat

2.0

the mat

4.0

cap

-1.0

gap

-1.0

sequence_feature

Ikhtisar

Riwayat perilaku pengguna adalah fitur penting. Riwayat ini biasanya direpresentasikan sebagai sekuens, seperti sekuens klik atau sekuens pembelian. Entitas yang membentuk sekuens dapat berupa item itu sendiri atau propertinya.

Cara mengonfigurasi

Misalnya, untuk memproses sekuens klik pengguna dengan panjang 50, Anda dapat mengekstraksi fitur item_id, price, dan ts untuk setiap item dalam sekuens. Dalam hal ini, ts dihitung sebagai request_time - event_time. Contoh berikut menunjukkan konfigurasinya:

{
  "sequence_name": "click_50_seq",
  "sequence_length": 50,
  "sequence_delim": ";",
  "sequence_pk": "user:click_50_seq",
  "features": [
    {
        "feature_name": "item_id",
        "feature_type": "id_feature",
        "value_type": "string",
        "expression": "item:item_id"
    },
    {
        "feature_name": "price",
        "feature_type": "raw_feature",
        "expression": "item:price"
    },
    {
        "feature_name": "ts",
        "feature_type": "raw_feature",
        "expression": "user:ts"
    },
    {
      "feature_name": "time_diff_seq",
      "feature_type": "custom_feature",
      "operator_name": "SeqExpr",
      "operator_lib_file": "3rdparty/lib64/libseq_expr.so",
      "expression": ["user:cur_time", "user:clk_time_seq"],
      "formula": "cur_time - clk_time_seq",
      "sequence_fields": ["clk_time_seq"],
      "default_value": "0",
      "value_type": "double",
      "is_op_thread_safe": false,
      "value_dimension": 1
    }
  ]
}
  • sequence_name: Nama sekuens.

  • sequence_length: Panjang maksimum sekuens.

  • sequence_delim: Pemisah antar elemen dalam sekuens.

  • sequence_pk: Kunci utama sekuens. Misalnya, user:click_50_seq menyimpan 50 ID item terbaru yang diklik pengguna. Layanan Inferensi Model menggunakan bidang ini sebagai kunci untuk menanyakan side info.

    • Parameter permintaan untuk Layanan Inferensi Online (Prosesor EAS) harus mencakup fitur yang kuncinya adalah nilai sequence_pk.

      • Misalnya: click_50_seq: 5410233389955966;1832586 (pemisahnya adalah nilai konfigurasi sequence_delim)

        • Dalam contoh di atas, nilai fitur click_50_seq adalah 5410233389955966;1832586.

    • Sub-fitur sisi item dari sekuens tidak wajib dalam permintaan ke Layanan Inferensi Model.

      • Layanan Inferensi Model menggunakan bidang ini sebagai kunci untuk menanyakan side info item.

      • Misalnya, dalam konfigurasi ini, fitur item_id, price dalam fitur sekuens tidak diteruskan ke layanan inferensi dalam permintaan. Sebagai gantinya, Prosesor menggunakan SDK fg untuk mengambil dan menggabungkan fitur-fitur ini dari cache item-nya. Hal ini memastikan bahwa format data konsisten dengan format yang digunakan selama pelatihan offline.

    • Sub-fitur sisi pengguna dari sekuens wajib dalam permintaan ke Layanan Inferensi Model.

      • Nama fiturnya adalah ${sequence_name}__${input_name}, misalnya: click_50_seq__ts.

      • ${input_name} biasanya dikonfigurasi dengan opsi expression, tetapi ini dapat bervariasi untuk jenis sub-fitur yang berbeda. ${input_name} tidak mencakup awalan domain input, seperti item: atau user:.

  • features: side info dari sekuens, termasuk informasi seperti nilai atribut statis suatu item dan informasi waktu perilaku.

    • sequence_fields: Menentukan nama bidang dari sekuens input. Nilainya adalah string atau array [string].

      • Ketika operator fitur hanya memiliki satu bidang input, isi bidang tersebut harus berupa sekuens. Dalam hal ini, Anda tidak perlu mengonfigurasi sequence_fields.

      • Jika operator fitur memiliki beberapa bidang input dan Anda tidak mengonfigurasi sequence_fields, semua fitur sisi item (seperti item:XXX) diasumsikan sebagai bidang input sekuens.

    • Tabel input untuk pelatihan offline harus berisi semua kolom yang sesuai dengan sub-fitur.

      • Ketika kolom adalah sekuens (merujuk pada aturan untuk sequence_fields), namanya adalah ${sequence_name}__${input_name}.

        • Misalnya, dalam konfigurasi sampel ini, tabel offline memerlukan empat kolom: click_50_seq__item_id, click_50_seq__price, click_50_seq__ts, dan click_50_seq__clk_time_seq.

        • Tipe yang direkomendasikan untuk kolom dalam tabel offline adalah tipe array untuk kinerja yang lebih baik. Tipe string yang menggunakan sequence_delim sebagai pemisah elemen juga didukung.

      • Ketika kolom bukan sekuens, namanya adalah ${input_name} tanpa awalan.

        • Misalnya, dalam konfigurasi ini, tabel offline memerlukan satu kolom non-sekuens: ${cur_time}

      • Anda dapat menggunakan konfigurasi global input_alias untuk mengatur alias yang lebih pendek untuk nama kolom yang panjang (lihat contoh di bawah).

    • Mendukung operasi pengelompokan. Untuk metode konfigurasi, lihat Pengelompokan Fitur (Diskretisasi). Ketika pengelompokan dikonfigurasi, tipe elemen output adalah int64, dan bentuknya ditentukan oleh konfigurasi value_dimension.

    • value_dimension (juga disingkat sebagai value_dim): Menentukan dimensi setiap elemen dalam sekuens. Untuk sequence_raw_feature, tipe output adalah array<float> ketika parameter ini diatur ke 1, dan array<array<float>> untuk nilai lainnya. Untuk sequence_id_feature, tipe output adalah array<string> ketika parameter ini diatur ke 1, dan array<array<string>> untuk nilai lainnya. Nilai default-nya adalah 0.

Anda dapat mengonfigurasi fitur apa pun sebagai sub-fitur dari Fitur Sekuens. Contoh berikut menunjukkan konfigurasinya:

{
  "features": [
    {
      "sequence_name": "common_seq",
      "sequence_length": 50,
      "sequence_delim": ";",
      "sequence_pk": "user:click_50_seq",
      "features": [
        {
          "feature_name": "item_id",
          "feature_type": "id_feature",
          "value_type": "String",
          "expression": "item:item_id",
          "value_dimension": 1
        },
        {
          "feature_name": "price",
          "feature_type": "raw_feature",
          "expression": "item:price"
        },
        {
          "feature_name": "ts",
          "feature_type": "raw_feature",
          "expression": "user:ts"
        },
        {
          "feature_name": "expr_feat",
          "feature_type": "expr_feature",
          "expression": "a > b",
          "variables": ["item:a", "item:b"],
          "sequence_fields": "a",
          "default_value": "0",
          "value_dimension": 1
        },
        {
          "feature_name": "lookup_feat",
          "feature_type": "lookup_feature",
          "map": "user:dict",
          "key": "item:prop",
          "separator": ",",
          "default_value": "0",
          "value_type": "float",
          "combiner": "sum",
          "boundaries": [0.0, 0.15, 0.5]
        },
        {
          "feature_name": "match_feat",
          "feature_type": "match_feature",
          "user": "user:nested_dict",
          "category": "item:pkey",
          "item": "item:skey",
          "separator": "\u001D",
          "default_value": "0",
          "matchType": "hit",
          "value_type": "float",
          "value_dimension": 1
        },
        {
          "feature_name": "bm25_score",
          "feature_type": "bm25_feature",
          "separator": " ",
          "default_value": "0",
          "query": "user:query",
          "document": "item:document",
          "sequence_fields": "query",
          "document_number": 100,
          "avg_doc_length": 6,
          "term_doc_freq_dict": {
            "this": 30,
            "example": 10,
            "document": 15
          }
        },
        {
          "feature_name": "overlap_feat",
          "feature_type": "overlap_feature",
          "query": "user:query2",
          "title": "item:title2",
          "sequence_fields": "query2",
          "method": "index_of",
          "separator": " ",
          "default_value": "-1"
        },
        {
          "feature_type": "kv_dot_product",
          "feature_name": "query_doc_sim",
          "query": "user:query3",
          "document": "item:title",
          "sequence_fields": "query3",
          "separator": "|",
          "default_value": "0"
        },
        {
          "feature_name": "seg_feat",
          "feature_type": "tokenize_feature",
          "expression": "input_a",
          "default_value": "0",
          "output_type": "word",
          "tokenizer_type": "sentencepiece",
          "vocab_file": "spmodel.model"
        },
        {
          "feature_name": "txt_norm",
          "feature_type": "text_normalizer",
          "expression": "input",
          "default_value": "<oov>",
          "parameter": 28
        },
        {
          "feature_name": "seq_combo_feat",
          "feature_type": "combo_feature",
          "expression": ["user:tags", "item:cat"],
          "sequence_fields": ["tags"],
          "separator": "_",
          "default_value": "0",
          "value_dimension": 1
        },
        {
          "feature_name": "norm_str",
          "feature_type": "str_replace_feature",
          "expression": ["user:profile"],
          "default_value": "",
          "replace_file": "synonyms.txt",
          "replacements": {
            "|": "",
            "aa": "x",
            "a": "X"
          },
          "value_dimension": 1
        },
        {
          "feature_name": "query_tokens",
          "feature_type": "regex_replace_feature",
          "expression": ["user:query_tokens"],
          "default_value": "",
          "value_type": "string",
          "regex_pattern": [ "\\|", "#", "\\(.*\\)" ],
          "replacement": "",
          "value_dimension": 1
        },
        {
          "feature_name": "slice",
          "feature_type": "slice_feature",
          "value_type": "int32",
          "expression": ["context:array"],
          "slice": "0:3",
          "value_dimension": 3,
          "num_buckets": 100000
        },
        {
          "feature_name": "mask_feature",
          "feature_type": "bool_mask_feature",
          "value_type": "float",
          "expression": [
            "user:click_items",
            "item:is_valid"
          ]
        },
        {
          "feature_name": "time_diff_seq",
          "feature_type": "custom_feature",
          "operator_name": "SeqExpr",
          "operator_lib_file": "3rdparty/lib64/libseq_expr.so",
          "expression": ["user:cur_time", "user:clk_time_seq"],
          "formula": "cur_time - clk_time_seq",
          "sequence_fields": ["clk_time_seq"],
          "default_value": "0",
          "value_type": "double",
          "is_op_thread_safe": false,
          "value_dimension": 1
        }
      ]
    }
  ],
  "input_alias": {
    "common_seq__clk_time_seq": "clk_time_seq"
  }
}</oov>

Catatan: Parameter input_alias digunakan untuk mengonfigurasi alias untuk bidang input dalam format "origin_field": "alias_field". Hal ini memungkinkan Anda mengganti nama bidang input asli dengan nama yang lebih pendek.

Konfigurasi datar

Secara umum, Anda dapat membuat versi sekuens dengan menambahkan awalan sequence_ ke tipe fitur non-sekuens (feature_type). Perhatikan bahwa Anda umumnya harus mengonfigurasi default_value untuk fitur sekuens.

Contoh:

Kasus khusus 1: Beberapa jenis transformasi fitur memiliki versi sekuens dan non-sekuens.

Anda dapat mengaktifkan versi yang sesuai dengan mengonfigurasi is_sequence: true/false.

Dalam hal ini, Anda tidak perlu menambahkan awalan sequence_ ke parameter feature_type.

Contoh:

Kasus khusus 2: Beberapa jenis transformasi fitur hanya memiliki versi sekuens.

Dalam hal ini, parameter feature_type tidak memerlukan awalan sequence_.

Contoh:

Untuk dua kasus khusus ini, Anda dapat menambahkan parameter opsional berikut:

  • sequence_length: Panjang maksimum sekuens. Elemen berlebih dipotong. Nilai default-nya adalah -1, yang menunjukkan tidak ada pemotongan.

  • sequence_delim: Pemisah antar elemen sekuens. Nilai default-nya adalah ;.

Contoh berikut menunjukkan konfigurasinya:

{
  "feature_name": "clk_seq__item_id",
  "feature_type": "sequence_id_feature",
  "sequence_name": "clk_seq",
  "sequence_length": 50,
  "sequence_delim": ";",
  "expression": "item:clk_item_seq",
  "separator": "\u001D",
  "default_value": ""
},
{
  "feature_name": "clk_seq__item_price",
  "feature_type": "sequence_raw_feature",
  "sequence_name": "clk_seq",
  "sequence_length": 50,
  "sequence_delim": ";",
  "expression": "item:clk_item_prices",
  "separator": "\u001D",
  "default_value": "0"
},
{
  "feature_name": "test",
  "feature_type": "sequence_lookup_feature",
  "map": "user:prefer_tags",
  "key": "item:tags",
  "sequence_length": 2,
  "separator": ",",
  "default_value": "-1024",
  "value_type": "int32",
  "normalizer": "method=expression,expr=x+1",
  "combiner": "sum",
  "default_bucketize_value": 50,
  "num_buckets": 10000
},
{
  "feature_name": "test",
  "feature_type": "sequence_combo_feature",
  "separator": "_",
  "default_value": "0",
  "expression": ["user:f1", "item:f2"],
  "hash_bucket_size": 10000
}

Dalam contoh di atas, bidang input clk_item_seq dan clk_item_prices harus berupa sekuens. Ini bisa berupa array atau string yang elemennya dipisahkan oleh karakter yang ditentukan oleh sequence_delim.

  • Dengan konfigurasi ini, Layanan Inferensi Online tidak menanyakan side info. Anda harus menyediakan input lengkap dalam permintaan.

  • Nama bidang input untuk fitur sekuens dalam format datar tetap sama seperti yang dikonfigurasi dan tidak diawali dengan ${sequence_name}__.

Generasi fitur online

Anda dapat memperoleh sideinfo perilaku dengan dua cara. Cara pertama adalah mengambilnya dari cache item EasyRec Processor, menggunakan bidang yang ditentukan dalam sequence_pk sebagai kunci utama untuk mencari properti item. Cara kedua adalah menyediakan nilai bidang yang sesuai dalam permintaan. Misalnya, bidang "ts" dalam konfigurasi sebelumnya dihitung sebagai request_time - event_time (waktu permintaan rekomendasi dikurangi waktu perilaku pengguna). Karena nilai ini berubah seiring waktu permintaan, nilai ini harus diperoleh dari permintaan.

user_features {
  key: "click_50_seq"
  value {
    string_feature: "9008721;34926279;22487529;73379;840804;911247;31999202;7421440;4911004;40866551"
  }
}

user_features {
  key: "click__ts"
  value {
    string_feature: "23;113;401363;401369;401375;401405;486678;486803;486922;486969"
  }
}

sequence_combine_feature

Pengantar

Operator sequence_combine_feature menggabungkan beberapa nilai untuk setiap elemen dalam fitur sekuens. Operator ini mengubah sekuens bernilai ganda menjadi sekuens bernilai tunggal dengan mengagregasi beberapa nilai setiap elemen menjadi satu nilai menggunakan combiner yang ditentukan.

Kemampuan utama

  • Kombinasi bernilai ganda: Menggabungkan beberapa nilai setiap elemen dalam sekuens menjadi satu nilai.

  • Strategi kombinasi fleksibel: Mendukung beberapa strategi kombinasi, termasuk sum, mean, max, min, dan count.

  • Peta Nilai: Mendukung peta nilai untuk mengonversi pengenal string ke nilai numerik, yang berguna untuk memproses sekuens event perilaku.

  • Dukungan pemisah ganda: Mendukung konfigurasi terpisah untuk pemisah sekuens dan pemisah bernilai ganda.

Konfigurasi

Konfigurasi dasar (kombinasi numerik)

{
  "feature_name": "seq_combine_feat",
  "feature_type": "sequence_combine_feature",
  "expression": "user:behavior_seq",
  "combiner": "sum",
  "separator": "|",
  "sequence_delim": ";"
}

Konfigurasi dengan Peta Nilai (Event Perilaku)

{
  "feature_name": "behavior_score",
  "feature_type": "sequence_combine_feature",
  "expression": "user:action_events",
  "combiner": "sum",
  "separator": "|",
  "sequence_delim": ";",
  "value_map": {
    "expo": 1,
    "click": 2,
    "buy": 4
  }
}

Peta nilai diterapkan terlebih dahulu, diikuti oleh operasi gabungan.

Parameter

Parameter

Wajib

Deskripsi

feature_name

Ya

Nama fitur output.

feature_type

Ya

Menentukan jenis fitur. Harus diatur ke sequence_combine_feature.

expression

Ya

Sumber fitur input.

combiner

Tidak

Strategi kombinasi. Nilai yang mungkin: sum, mean, max, min, dan count. Default: sum.

value_map

Tidak

Peta untuk mengonversi string ke nilai numerik. Peta nilai diterapkan terlebih dahulu, diikuti oleh operasi gabungan.

separator

Tidak

Pemisah bernilai ganda. Default: \u001D. Hanya satu karakter yang didukung.

sequence_delim

Tidak

Pemisah sekuens untuk input string. Parameter ini tidak diperlukan untuk input array dan default-nya adalah string kosong. Hanya satu karakter yang didukung.

default_value

Tidak

Nilai default yang digunakan ketika input kosong.

stub_type

Tidak

Default: false. Ketika diatur ke true, fitur hanya digunakan sebagai Hasil Antara dan tidak dioutput ke Model.

Contoh

Contoh 1: Kombinasi numerik dasar (jumlah)

Konfigurasi:

{
  "feature_name": "score_sum",
  "feature_type": "sequence_combine_feature",
  "expression": "user:scores",
  "combiner": "sum",
  "separator": ",",
  "sequence_delim": ";"
}

Input dan output:

Input

Output

Deskripsi

"1,2,3;4,5;6"

[6, 9, 6]

Operator menghitung 1+2+3=6, 4+5=9, dan 6=6.

"10;20,30"

[10, 50]

Operator menghitung 10=10 dan 20+30=50.

["1,2,3", "4,5", "6"]

[6, 9, 6]

Input adalah array string.

[[1,2,3], [4,5], [6]]

[6, 9, 6]

Input adalah array array.

Contoh 2: Sekuens Event Perilaku (dengan Peta Nilai)

Konfigurasi:

{
  "feature_name": "behavior_weight",
  "feature_type": "sequence_combine_feature",
  "expression": "user:actions",
  "combiner": "sum",
  "separator": "|",
  "sequence_delim": ";",
  "value_map": {
    "expo": 1,
    "click": 2,
    "buy": 4
  }
}

Input dan output:

Input

Output

Deskripsi

"expo|click|buy"

[7]

Operator menghitung 1+2+4=7.

"click"

[2]

Nilai yang dipetakan adalah 2.

"expo|click"

[3]

Operator menghitung 1+2=3.

"expo|click|buy;expo;click"

[7, 1, 2]

String input berisi beberapa record yang dipisahkan oleh ;.

["expo|click", "expo", "click|buy"]

[3, 1, 6]

Array input berisi beberapa record.

tokenize_feature

Ikhtisar

Operator tokenize_feature melakukan tokenisasi string input. Operator ini mengembalikan string yang telah ditokenisasi atau ID token yang sesuai. Operator ini mendukung file tokenizer.json dari pustaka tokenize-cpp.

Untuk informasi lebih lanjut tentang format file kosakata, lihat sumber daya berikut:

1. https://github.com/huggingface/tokenizers

2. https://github.com/mlc-ai/tokenizers-cpp

Konfigurasi

{
    "feature_name": "title_token",
    "feature_type": "tokenize_feature",
    "expression": "item:title",
    "default_value": "",
    "vocab_file": "tokenizer.json",
    "tokenizer_type": "sentencepiece",
    "output_type": "word_id",
    "output_delim": ","
}

Parameter

Wajib

Deskripsi

feature_name

Ya

Nama unik untuk fitur output.

expression

Ya

Menentukan bidang sumber tempat fitur bergantung. Sumber harus berupa user, item, atau context.

vocab_file

Ya

Jalur ke file kosakata.

default_value

Tidak

Nilai default untuk string input.

tokenizer_type

Tidak

Jenis tokenizer. Atur ke 'sentencepiece' untuk menggunakan tokenizer SentencePiece. Jika tidak ditentukan, sistem menentukan tokenizer Hugging Face yang sesuai berdasarkan isi 'vocab_file'.

output_type

Tidak

  • word_id: Mengoutput ID token.

  • word: Mengoutput string yang telah ditokenisasi.

output_delim

Tidak

Pemisah untuk output word_id atau word. Parameter ini hanya berlaku untuk tugas offline.

stub_type

Tidak

Default-nya false. Jika diatur ke true, transformasi fitur hanya berfungsi sebagai hasil antara dalam pipeline dan tidak dioutput ke model.

Contoh

Ketika output_type adalah word_id, operator mengonversi string input menjadi string ID token yang dipisahkan koma.

Tipe

item:title

Fitur output

string

It is good today!

1147,310,1175,3063,2

Contoh file kosakata

Nama file

Jenis Tokenizer

Tautan unduh

bert-base-chinese-vocab.json

WordPiece

Tautan unduh

tokenizer.json

BPE

Tautan unduh

spiece.model

sentencepiece

Tautan unduh

text_normalizer

Ikhtisar

Operator text_normalizer melakukan Normalisasi Teks, termasuk konversi huruf besar/kecil, konversi Tionghoa Tradisional ke Sederhana, konversi karakter lebar penuh ke setengah lebar, penyaringan karakter khusus, konversi encoding GBK dan UTF-8, serta pemisahan karakter Tionghoa.

Konfigurasi

{
    "feature_name": "txt_norm",
    "feature_type": "text_normalizer",
    "expression": "item:title",
    "stop_char_file": "stop_char.txt",
    "max_length": 256,
    "parameter": 0,
    "remove_space": false,
    "is_gbk_input": false,
    "is_gbk_output": false
}

Parameter

Wajib

Deskripsi

feature_name

Ya

Nama fitur.

expression

Ya

Bidang sumber tempat fitur bergantung. Sumber harus berupa user, item, atau context.

stop_char_file

Tidak

Menentukan jalur ke file karakter khusus yang akan dihapus. Jika dihilangkan, sistem menggunakan daftar bawaannya.

max_length

Tidak

Jika panjang teks input melebihi nilai ini, operator melewati normalisasi dan mengembalikan teks aslinya.

remove_space

Tidak

Menentukan apakah akan menghapus spasi.

is_gbk_input

Tidak

Menentukan apakah input dikodekan dalam GBK. Jika false, operator mengasumsikan input dalam UTF-8.

is_gbk_output

Tidak

Menentukan apakah output dikodekan dalam GBK. Jika false, operator mengkodekan output sebagai UTF-8.

parameter

Tidak

Opsi normalisasi teks.

default_value

Tidak

Nilai default yang digunakan ketika fitur input kosong.

Catatan:

  • stop_char_file harus menggunakan encoding GBK.

  • Setiap baris dalam stop_char_file harus hanya berisi satu karakter untuk memastikan penyaringan berhasil.

Opsi normalisasi teks

Untuk mengonfigurasi bidang parameter, jumlahkan nilai numerik dari opsi yang diinginkan dari daftar di bawah ini.

Misalnya, untuk mengonversi huruf besar ke kecil, lebar penuh ke setengah lebar, Tionghoa Tradisional ke Sederhana, dan menyaring karakter khusus, atur parameter = 4 + 8 + 16 + 32 = 60.

Nilai default untuk parameter adalah 60.

#define __NORMALIZED_LOWER2UPPER__ 		2 			/* Convert lowercase to uppercase. */
#define __NORMALIZED_UPPER2LOWER__ 		4 			/* Convert uppercase to lowercase. */
#define __NORMALIZED_SBC2DBC__ 			8 			/* Convert full-width to half-width characters. */
#define __NORMALIZED_BIG52GBK__			16 			/* Convert Traditional Chinese to Simplified Chinese. */
#define __NORMALIZED_FILTER__ 			32 			/* Filter special characters. */
#define __NORMALIZED_SPLITCHARS__		512 		/* Split Chinese characters into single characters, separated by spaces. */

Contoh

{
  "feature_name": "txt_norm",
  "feature_type": "text_normalizer",
  "expression": "input_a",
  "parameter": 28
}
  • Input: ["正則生成代碼", "Html過濾工具", "正則表達式語法速查", "The Cat/"]

  • Output: ["正则生成代码", "html过滤工具", "正则表达式语法速查", "the cat/"]

bm25_feature

Fitur

Algoritma BM25 (Best Matching) adalah algoritma pencocokan teks utama dalam information retrieval, biasanya digunakan untuk penilaian relevansi pencarian. Algoritma ini pertama-tama mengurai query menjadi istilah . Kemudian, untuk setiap hasil pencarian D, algoritma ini menghitung skor relevansi setiap istilah untuk D. Akhirnya, algoritma ini menghitung skor relevansi akhir query untuk D sebagai jumlah tertimbang dari skor relevansi untuk setiap istilah .

Untuk bahasa Tionghoa, Tokenisasi Query berfungsi sebagai Analisis Morfem, memperlakukan setiap Kata (Istilah) sebagai Morfem.

Rumus umum untuk algoritma BM25 adalah:

Dalam rumus ini, merepresentasikan query, adalah istilah ke- dalam query, adalah dokumen, adalah bobot , dan R(qi,d) adalah skor relevansi terhadap dokumen .

Kepentingan Istilah

Ada beberapa metode untuk memberi bobot relevansi istilah terhadap dokumen. Metode umum adalah Inverse Document Frequency (IDF). Rumusnya adalah:

Di mana adalah jumlah total dokumen dalam korpus, dan adalah jumlah dokumen yang mengandung istilah qi.

Definisi IDF menunjukkan bahwa untuk Koleksi Dokumen tertentu, semakin banyak dokumen yang mengandung , semakin rendah bobot . Dengan kata lain, jika banyak dokumen mengandung , Kekuatan Pembeda rendah. Oleh karena itu, kepentingan menggunakan untuk menentukan relevansi lebih rendah.

Relevansi istilah

Skor relevansi antara istilah dan dokumen , dilambangkan sebagai , memiliki bentuk umum berikut dalam algoritma BM25:

Dalam rumus ini, adalah faktor penyesuaian yang ditetapkan berdasarkan pengalaman. Biasanya, nilai-nilainya adalah . adalah frekuensi dalam dokumen , dan adalah frekuensi dalam Query. adalah panjang dokumen , dan adalah panjang rata-rata semua dokumen. Karena umumnya hanya muncul sekali dalam kueri, , sehingga rumus tersebut dapat disederhanakan menjadi:

Definisi menunjukkan bahwa parameter mengatur dampak panjang dokumen terhadap relevansi. Semakin besar nilai , semakin besar pula pengaruh panjang dokumen terhadap skor relevansi, dan sebaliknya. Semakin panjang panjang relatif dokumen, semakin besar nilai , sehingga skor relevansinya semakin rendah. Dokumen yang lebih panjang cenderung memuat lebih banyak . Oleh karena itu, untuk nilai yang sama, dokumen panjang memiliki relevansi yang lebih rendah terhadap dibandingkan dokumen pendek yang memuat .

Secara ringkas, rumus skor relevansi untuk algoritma BM25 adalah sebagai berikut:

Rumus BM25 memberikan fleksibilitas yang signifikan dalam desain algoritma, memungkinkan berbagai metode untuk menghitung skor relevansi pencarian berdasarkan pendekatan yang berbeda terhadap tokenisasi, pembobotan kata kunci, dan relevansi kata kunci-dokumen.

Konfigurasi

{
  "feature_type": "bm25_feature",
  "feature_name": "query_doc_relevance",
  "query": "user:query",
  "document": "item:title",
  "term_doc_freq_file": "term_doc_freq.txt",
  "avg_doc_length": 100.0,
  "k1": 1.2,
  "b": 0.75,
  "separator": "\u001D",
  "default_value": ""
}

Parameter

Required

Description

feature_name

Yes

Nama fitur output.

query

Yes

Bidang sumber untuk kueri.

document

Yes

Bidang sumber untuk dokumen.

term_doc_freq_file

No

Jalur file ke data frekuensi term-dokumen. File tersebut berisi satu term dan jumlah dokumennya per baris, dalam format term<whitespace>document_count</whitespace>.

term_doc_freq_dict

No

Alternatif dari term_doc_freq_file, disediakan sebagai dictionary di mana setiap kunci adalah sebuah term dan nilainya adalah jumlah dokumen.

k1

No

Parameter algoritma BM25, biasanya antara 1,2 dan 2,0. Nilai default: 1,2.

b

No

Parameter algoritma BM25. Nilai default: 0,75.

separator

No

Pemisah karakter tunggal untuk fitur input bernilai ganda. Nilai default: \u001D.

normalizer

No

Metode normalisasi. Untuk detailnya, lihat konfigurasi raw_feature.

default_value

No

Nilai yang digunakan ketika fitur input kosong.

stub_type

No

Nilai default: false. Jika true, sistem memperlakukan transformasi fitur ini sebagai hasil antara dan mengecualikannya dari model akhir.

  • Parameter term_doc_freq_file dan term_doc_freq_dict bersifat saling eksklusif. Jika keduanya ditentukan, term_doc_freq_file akan didahulukan.

  • Saat menggunakan fitur ini dalam layanan online, letakkan file term_doc_freq_file di direktori yang sama dengan fg.json.

kv_dot_product

Ikhtisar

Menghitung dot product dari dua vektor key-value atau ukuran irisan (intersection) dari dua himpunan.

Konfigurasi

{
  "feature_type": "kv_dot_product",
  "feature_name": "query_doc_sim",
  "query": "user:query",
  "document": "item:title",
  "separator": "|",
  "default_value": "0"
}

Parameter

Wajib

Deskripsi

feature_name

Ya

Nama fitur output.

query

Ya

Sumber bidang query.

document

Ya

Sumber bidang dokumen.

separator

Tidak

Pemisah untuk fitur input multi-nilai. Nilai default-nya adalah \u001D. Harus berupa satu karakter tunggal.

kv_delimiter

Tidak

Pemisah antara pasangan kunci-nilai dalam fitur input. Nilai default-nya adalah :. Harus berupa satu karakter tunggal.

normalizer

Tidak

Menentukan metode normalisasi. Untuk detailnya, lihat konfigurasi operator raw_feature.

default_value

Tidak

Menentukan nilai yang digunakan jika fitur input kosong.

stub_type

Tidak

Default-nya false. Jika diatur ke true, transformasi fitur ini hanya digunakan sebagai hasil antara dan tidak dimasukkan ke dalam model.

  • Operator ini mendukung tipe input kompleks seperti array dan map. Gunakan tipe kompleks untuk performa optimal.

  • Jika entri input tidak memiliki bagian value, nilai value-nya secara default dianggap 1.0. Perilaku ini dapat digunakan untuk menghitung ukuran irisan antara dua himpunan.

  • Jika Anda tidak mengonfigurasi default_value, nilai default-nya diatur ke 0.

Contoh

Query

Document

Output

"a:0.5|b:0.5"

"d:0.5|b:0.5"

0.25

["a:0.5", "b:0.5"]

["d:0.5", "b:0.5"]

0.25

{"a":0.5, "b":0.5}

{"d":0.5, "b":0.5}

0.25

["a:0.5", "b:0.5"]

{"d":0.5, "b:0.5}

0.25

["a", "b", "c"]

["a", "b", "d"]

2.0

["a", "b", "c"]

"a|b|d"

2.0

["a", "b", "c"]

{"a":0.5, "b":0.5}

1.0

str_replace_feature

Ikhtisar

Operator str_replace_feature mengganti semua substring yang cocok dalam string input dengan penggantinya yang telah ditentukan.

Catatan: Pencocokan yang tumpang tindih diganti secara greedy.

Konfigurasi

{
  "feature_name": "norm_str",
  "feature_type": "str_replace_feature",
  "expression": ["user:query"],
  "default_value": "",
  "replacements": {
    "brown": "box",
    "dogs": "jugs",
    "fox": "with",
    "jumped": "five",
    "over": "dozen",
    "quick": "my",
    "the": "pack",
    "the lazy": "liquor",
    "|": "",
    "aa": "x",
    "a": "X"
  },
  "value_dimension": 1
}

Parameter

Deskripsi

feature_name

Wajib. Menentukan nama fitur output.

expression

Wajib. Menentukan bidang sumber yang menjadi dasar fitur ini.

default_value

Opsional. Nilai default untuk input kosong.

replacements

Opsional. Wajib jika replace_file tidak diatur. Berupa kamus yang memetakan teks asli ke teks penggantinya.

replace_file

Opsional. Parameter ini wajib jika replacements tidak diatur. Nilainya adalah file kamus yang setiap barisnya berisi pasangan teks asli \t teks pengganti yang dipisahkan oleh karakter tab (\t).

is_sequence

Opsional. Menentukan apakah input merupakan fitur sekuens. Nilai default-nya adalah false.

sequence_length

Opsional. Menentukan panjang maksimum sekuens. Operator akan memotong sekuens yang melebihi panjang ini.

sequence_delim

Opsional. Menentukan pembatas elemen sekuens. Parameter ini hanya berlaku untuk input berupa string.

separator

Opsional. Parameter ini hanya berlaku ketika is_sequence=true. Menentukan karakter tunggal sebagai pemisah untuk input bernilai ganda. Nilai default-nya adalah \u001D.

value_dimension

Opsional. Menentukan dimensi fitur output. Dalam tugas offline, parameter ini digunakan untuk memotong output. Nilai default-nya adalah 0.

stub_type

Opsional. Jika diatur ke true, operator hanya menggunakan transformasi fitur yang dikonfigurasi sebagai hasil antara dalam pipeline dan tidak mengeluarkannya ke model. Nilai default-nya adalah false.

  • Anda dapat mengonfigurasi kedua parameter replace_file dan replacements. Kamus penggantinya akan digabungkan, dan replacements memiliki prioritas lebih tinggi.

  • Operator ini mendukung operasi binning. Untuk informasi selengkapnya, lihat dokumentasi Feature Binning (Discretization).

    • hash_bucket_size: Melakukan hash terhadap hasil transformasi fitur lalu menjalankan operasi modulo.

    • vocab_list: Melakukan binning input berdasarkan vocabulari dan memetakan input ke indeks dalam vocabulari tersebut.

    • vocab_dict: Hasil binning adalah nilai dalam vocab_dict yang sesuai dengan nilai fitur.

    • vocab_file: Membaca vocab_list atau vocab_dict dari file.

  • Operator ini mendukung input array bernilai ganda.

Contoh

Tabel berikut menunjukkan hasil eksekusi dari konfigurasi di atas.

user:query

Output feature

the quick brown fox jumped over the lazy dogs

pack my box with five dozen liquor jugs

aaa

xX

Feature|Generation|Tool|is|very|useful

FeatureGenerationToolisveryuseful

regex_replace_feature

Ikhtisar

Operator regex_replace_feature adalah transformasi fitur yang mengganti substring yang sesuai dengan ekspresi reguler menggunakan string pengganti yang ditentukan.

Anda dapat mengonfigurasi beberapa pola. Substring yang sesuai dengan salah satu pola yang ditentukan akan diganti.

Konfigurasi

{
  "feature_name": "query",
  "feature_type": "regex_replace_feature",
  "expression": ["user:query"],
  "regex_pattern": "\\|",
  "replacement": " ",
  "default_value": ""
}

Parameter

Deskripsi

feature_name

Wajib. Nama fitur output.

expression

Wajib. Bidang sumber yang menjadi dasar fitur ini.

default_value

Opsional. Nilai default yang digunakan ketika fitur input kosong.

regex_pattern

Wajib. Ekspresi reguler untuk mencocokkan teks yang akan diganti.

replacement

Opsional. String pengganti. Jika parameter ini dikosongkan, teks yang cocok akan dihapus.

replace_all

Opsional. Menentukan apakah penggantian dilakukan secara global. Nilai default-nya adalah true. Jika diatur ke false, hanya kecocokan pertama yang diganti.

icase

Opsional. Menentukan apakah pencocokan ekspresi reguler peka terhadap huruf besar/kecil. Nilai default-nya adalah false.

is_sequence

Opsional. Menentukan apakah fitur merupakan fitur sekuens. Nilai default-nya adalah false.

sequence_length

Opsional. Menentukan panjang maksimum sekuens. Sekuens yang lebih panjang dari nilai ini akan dipotong.

sequence_delim

Opsional. Menentukan pemisah antar elemen sekuens. Parameter ini hanya berlaku untuk input berupa string.

separator

Opsional. Parameter ini hanya berlaku ketika is_sequence=true. Parameter ini menentukan pemisah untuk input bernilai ganda. Nilai default-nya adalah \u001D. Hanya satu karakter yang diperbolehkan.

value_dimension

Opsional. Dalam tugas offline, parameter ini digunakan untuk memotong output. Nilai default-nya adalah 0.

stub_type

Opsional. Nilai default-nya adalah false. Ketika diatur ke true, pipeline hanya menggunakan transformasi fitur yang dikonfigurasi sebagai hasil antara dan tidak mengeluarkan hasil tersebut ke model.

  • Fitur ini mendukung operasi pengelompokan (binning). Untuk detail konfigurasi, lihat dokumen Feature Binning (diskretisasi):

    • hash_bucket_size: Melakukan hashing dan menerapkan operasi modulo pada hasil transformasi fitur.

    • vocab_list: Mengelompokkan input berdasarkan daftar kosakata dan memetakan input ke indeks dalam daftar tersebut.

    • vocab_dict: Memetakan nilai fitur ke nilai yang sesuai dalam kamus vocab_dict.

    • vocab_file: Membaca vocab_list atau vocab_dict dari file.

  • Fitur ini mendukung input bernilai ganda dalam bentuk array.

Contoh

user:query

Fitur output

China|People|Republic

China People Republic

Feature|Generation|Tool|Is great

Feature Generation Tool Is great

bool_mask_feature

Ikhtisar

Menyaring elemen menggunakan nilai boolean, mirip dengan tf.boolean_mask(tensor, mask).

Fitur ini pada dasarnya merupakan sequence feature.

Konfigurasi

{
  "feature_name": "mask_feature",
  "feature_type": "bool_mask_feature",
  "value_type": "float",
  "expression": [
    "user:click_items",
    "item:is_valid"
  ],
  "sequence_delim": ","
}

Parameter

Deskripsi

feature_name

Wajib. Menentukan awalan untuk fitur output.

expression

Wajib. Daftar bidang sumber yang digunakan oleh fitur ini. Elemen kedua dalam daftar berfungsi sebagai mask.

default_value

Opsional. Nilai default yang digunakan ketika fitur input kosong. Jika dihilangkan, nilai default-nya adalah 0 untuk value_type numerik.

value_type

Wajib. Menentukan tipe data dari fitur output.

sequence_length

Opsional. Panjang maksimum sequence. Sequence yang lebih panjang akan dipotong.

sequence_delim

Opsional. Pemisah untuk elemen sequence. Parameter ini hanya diperlukan untuk input berupa string.

separator

Opsional. Pemisah untuk input multi-nilai. Default: "\u001D". Harus berupa satu karakter.

value_dimension

Opsional. Default: 0. Digunakan untuk memotong output dalam tugas offline.

normalizer

Opsional. Menentukan metode normalisasi. Parameter ini hanya berlaku untuk fitur numerik. Untuk informasi selengkapnya, lihat RawFeature.

stub_type

Opsional. Default: false. Jika diatur ke true, pipeline hanya menggunakan transformasi fitur ini sebagai hasil antara dan tidak mengeluarkannya ke model.

Contoh

Input

Mask

Output

"123,456,90,80"

"true,false,true,false"

["123", "90"]

"123,456,90,80"

[1, 0, 1, 0]

["123", "90"]

[1, 2, 3, 4]

[1, 0, 1, 0]

[1, 3]

[1, 2, 3, 4]

"true,false,true,false"

[1, 3]

Penggunaan dengan fitur ekspresi

{
  "features": [
    {
      "feature_name": "mask",
      "feature_type": "expr_feature",
      "expression": "price>100",
      "variables": ["item:price"],
      "value_dimension": 3
    },
    {
      "feature_name": "filter_list",
      "feature_type": "bool_mask_feature",
      "expression": [
        "user:click_items",
        "feature:mask"
      ],
      "num_buckets": 10000
    }
  ]
}

slice_feature

Ikhtisar

Operator ini melakukan slicing pada array input menggunakan sintaks bergaya Python atau mengambil elemen pada indeks tertentu.

Pada dasarnya, operator ini merupakan sequence feature.

Konfigurasi

{
  "feature_name": "test_feature",
  "feature_type": "slice_feature",
  "value_type": "float",
  "expression": [
    "user:click_items"
  ],
  "slice": "2:4"
}

Parameter

Wajib

Deskripsi

feature_name

Ya

Nama fitur output.

expression

Ya

Bidang sumber untuk fitur tersebut. Input harus berupa daftar.

slice

Ya

Angka tunggal menentukan elemen pada indeks yang sesuai dari array input, atau Anda dapat menggunakan string slice dengan sintaks yang sama seperti Python dalam format start:stop:step.

default_value

Tidak

Jika fitur input kosong, nilai default akan digunakan. Jika Anda tidak secara eksplisit memberikan konfigurasi, nilai default adalah 0 ketika value_type bertipe numerik.

value_type

Ya

Tipe data dari fitur output.

sequence_length

Tidak

Panjang maksimum sequence. Sequence yang lebih panjang dari nilai ini akan dipotong.

sequence_delim

Tidak

Pemisah untuk elemen sequence. Hanya diperlukan jika input berupa string.

separator

Tidak

Pemisah untuk input multi-nilai. Nilai default-nya adalah \u001D. Hanya satu karakter yang didukung.

value_dimension

Tidak

Dimensi output. Nilai default-nya adalah 0. Pada tugas offline, parameter ini dapat memotong output.

normalizer

Tidak

Metode normalisasi. Hanya berlaku untuk fitur numerik. Untuk detailnya, lihat operator raw_feature.

stub_type

Tidak

Menunjukkan apakah fitur tersebut merupakan stub. Nilai default-nya adalah false. Jika true, fitur tersebut berfungsi sebagai hasil antara dan tidak disertakan dalam output model.

placeholder

Tidak

Nilai khusus dalam sequence feature yang digunakan untuk mengisi slot kosong dan melengkapi dimensi. Nilai default untuk bilangan titik mengambang adalah NaN. Untuk bilangan bulat, nilai default-nya adalah nilai minimum dari tipe yang bersangkutan. Untuk informasi lebih lanjut, lihat item konfigurasi placeholder pada operator fitur kustom.

  • Operator ini mendukung pengelompokan (binning). Untuk detail konfigurasi, lihat Feature Binning (Discretization).

  • Operator ini mendukung input multi-nilai, termasuk array dan array bersarang.

Contoh

Saat Anda mengatur sequence_delim="," dan value_dimension=1, input dan output-nya adalah sebagai berikut:

Input

slice

Output

"123,456,90,80"

0

"123"

"123,456,90,80"

2

"90"

"123,456,90,80"

1:3

["456", "90"]

[1, 2, 3, 4]

:2

[1, 2]

[1, 2, 3, 4]

2:

[3, 4]

[1, 2, 3, 4]

1:4:2

[2, 4]

[1, 2, 3, 4]

::-1

[4, 3, 2, 1]

[1, 2, 3, 4]

2:-1:-1

[3, 2, 1]

[1, 2, 3, 4]

:

[1, 2, 3, 4]