All Products
Search
Document Center

:Operator fitur bawaan

Last Updated:May 09, 2026

Topik ini menjelaskan cara mengonfigurasi 17 operator fitur bawaan, termasuk id_feature, raw_feature, dan expr_feature.

id_feature

Pendahuluan

id_feature adalah fitur diskrit yang mencakup fitur bernilai tunggal, seperti ID pengguna dan ID item, serta fitur bernilai ganda, seperti warna 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, yang digunakan sebagai awalan untuk output.

expression

Ya

Bidang sumber.

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

Tipe output. Default: string.

separator

Tidak

Masukkan pemisah nilai ganda. Nilai default adalah \u001D.

default_value

Tidak

Nilai default yang digunakan ketika bidang sumber kosong.

weighted

Tidak

Menentukan apakah input berada dalam format kunci:nilai. Jika parameter ini diatur ke true, baik nilai fitur maupun bobotnya dikeluarkan sebagai Map.

value_dimension

Tidak

Dimensi output pemotongan untuk fitur bernilai ganda. Nilai default adalah 0 (tanpa pemotongan). Jika nilainya 1, tipe skema output adalah value_type. Jika tidak, tipenya adalah array<value_type>.

stub_type

Tidak

Jika true, menandai fitur sebagai hasil antara, mengecualikannya dari output model akhir. Default: false.

Contoh

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

Tipe

Input (item:is_main)

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]

^] merepresentasikan pemisah nilai ganda, yaitu simbol dengan kode ASCII "\x1D" dan juga dapat ditulis sebagai "\u001d".

raw_feature

Ikhtisar

Operator raw_feature memproses fitur kontinu dan mendukung tipe numerik seperti int, float, dan double.

Konfigurasi

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

Parameter

Wajib

Deskripsi

feature_name

Ya

Nama fitur.

expression

Ya

Bidang sumber. Harus salah satu dari user, item, atau context.

normalizer

Tidak

Metode normalisasi. Lihat bagian Normalizer untuk detailnya.

value_type

Tidak

Tipe output. Default: float.

separator

Tidak

Pemisah untuk input bernilai ganda. Default: "\u001D".

default_value

Tidak

Nilai default untuk input null atau kosong.

value_dimension

Tidak

Menentukan dimensi bidang output untuk pemotongan output. Nilai default adalah 1. Tipe skema adalah value_type jika nilainya 1, atau array<value_type> jika tidak.

stub_type

Tidak

Default: false. Jika diatur ke true, fitur ini hanya berfungsi sebagai hasil antara dan tidak disertakan dalam output model.

  • Operator ini mendukung pengelompokan/diskretisasi fitur. Untuk detail konfigurasi, lihat Pengelompokan fitur (diskretisasi).

  • Operator ini mendukung input bernilai ganda bertipe array.

Contoh

^] merepresentasikan pemisah nilai ganda. Perhatikan bahwa ini adalah satu karakter dengan kode ASCII "\x1D", bukan dua karakter.

Tipe

Nilai

Output

int64_t

100

100

double

100.1

100.1

Int bernilai ganda

123^]456

[123, 456] (Dimensi input harus sesuai dengan value_dimension yang dikonfigurasi.)

Normalizer

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

  • minmax

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

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

  • zscore

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

    Rumus: x = (x - mean) / standard_deviation

  • log10

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

    Rumus: x = x > threshold ? log10(x) : default;

  • expression

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

    Rumus: Anda dapat mengonfigurasi fungsi atau ekspresi apa pun. Variabel x merepresentasikan nilai input.

expr_feature

Ikhtisar

expr_feature mengevaluasi suatu ekspresi dan mengeluarkan hasilnya sebagai tipe yang ditentukan, seperti float, double, int32, atau int64. Operator ini mendukung komputasi batch dan broadcasting.

Catatan: Saat menggunakan operator fitur ini, semua input harus dapat dikonversi ke tipe double.

Konfigurasi

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

Saat pv = 2, click = 3, nilai fitur ekspresi adalah 0.6224593312.

Parameter

Wajib

Deskripsi

feature_name

Ya

Nama fitur.

expression

Ya

Ekspresi yang akan dievaluasi.

variables

Ya

Variabel (juga dikenal sebagai bidang input) yang digunakan dalam expression. Sumber untuk setiap variabel harus user, item, atau context.

value_type

Tidak

Tipe fitur output dapat berupa float, double, int32, atau int64. Default adalah float.

separator

Tidak

Pemisah untuk input string bernilai ganda. Default adalah "\u001D".

default_value

Tidak

Nilai default yang dikembalikan jika terjadi error selama evaluasi ekspresi, misalnya saat ditemukan nilai null.

value_dimension

Tidak

Nilai default adalah 0, yang merepresentasikan dimensi output yang digunakan untuk pemotongan atau padding output. Jika nilainya 1, tipe skema adalah value_type. Jika tidak, tipe skema adalah array<value_type>.

fill_missing

Tidak

Default untuk pengisian nilai yang hilang adalah NaN. Dalam ekspresi, Anda dapat menggunakan x != x untuk memeriksa apakah input adalah NaN.

stub_type

Tidak

Jika diatur ke true, fitur tersebut merupakan hasil antara dan tidak disertakan dalam output model. Default 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)

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

  • Perhitungan element-wise vektor-vektor

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

  • Variabel sementara dan ekspresi koma

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

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

    • Untuk mengurangi overhead memori, gunakan kembali variabel yang ada sebagai variabel sementara di mana semantiknya memungkinkan.

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).

    isnan

    1

    Mengembalikan 1.0 jika input adalah NaN, dan 0.0 jika tidak. Fungsi ini memerlukan versi 1.0.5 atau lebih baru.

    sin

    1

    Mengembalikan sinus suatu bilangan.

    cos

    1

    Mengembalikan cosinus suatu bilangan.

    tan

    1

    Mengembalikan tangen suatu bilangan.

    asin

    1

    Mengembalikan arcsinus suatu bilangan.

    acos

    1

    Mengembalikan arccosinus suatu bilangan.

    atan

    1

    Mengembalikan arctangen suatu bilangan.

    sinh

    1

    Mengembalikan sinus hiperbolik suatu bilangan.

    cosh

    1

    Mengembalikan cosinus hiperbolik suatu bilangan.

    tanh

    1

    Mengembalikan tangen hiperbolik suatu bilangan.

    asinh

    1

    Mengembalikan sinus hiperbolik invers suatu bilangan.

    acosh

    1

    Mengembalikan cosinus hiperbolik invers suatu bilangan.

    atanh

    1

    Mengembalikan tangen hiperbolik invers suatu bilangan.

    log2

    1

    Mengembalikan logaritma basis-2 suatu bilangan.

    log10

    1

    Mengembalikan logaritma basis-10 suatu bilangan.

    log

    1

    Mengembalikan logaritma natural (basis e) suatu bilangan.

    ln

    1

    Mengembalikan logaritma natural (basis e) suatu bilangan.

    exp

    1

    Memangkatkan bilangan Euler (e) ke pangkat suatu bilangan.

    sqrt

    1

    Mengembalikan akar kuadrat suatu bilangan.

    sign

    1

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

    abs

    1

    Mengembalikan 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

    Mengembalikan 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 dengan menghapus bagian pecahannya.

    sigmoid

    1

    Mengembalikan sigmoid suatu bilangan.

    sphere_dist

    4

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

    haversine

    4

    Mengembalikan 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 komputasi batch dan broadcasting.

  • Fungsi operasi vektor bawaan

    Nama fungsi

    Jumlah parameter

    Deskripsi

    len

    1

    Mengembalikan panjang (jumlah elemen) suatu vektor.

    l2_norm

    1

    Mengembalikan vektor yang dinormalisasi-L2.

    squared_norm

    1

    Mengembalikan norma L2 kuadrat dari suatu vektor.

    dot

    2

    Mengembalikan produk dot dua vektor.

    euclid_dist

    2

    Mengembalikan jarak Euclidean antara dua vektor.

    corr

    2

    Mengembalikan koefisien korelasi Pearson antara dua vektor.

    std_dev

    1

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

    pop_std_dev

    1

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

    variance

    1

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

    pop_variance

    1

    Mengembalikan 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 produk semua elemen dalam suatu vektor.

    Catatan: Jika suatu ekspresi mengandung salah satu fungsi operasi vektor bawaan ini, semua variabel lain dalam ekspresi tersebut harus berupa skalar.

  • Operator biner bawaan

    Operator

    Deskripsi

    Prioritas

    =

    Assignment *

    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 assignment bersifat khusus: ia memodifikasi salah satu argumennya dan hanya berlaku untuk variabel.

  • Operator ternary bawaan

    Operator ini menyediakan fungsionalitas if-else.

    Evaluasi malas hanya mengevaluasi cabang ekspresi yang diperlukan.

    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 fitur sintetis dengan menghitung produk kartesius dari beberapa bidang sumber. Proses ini juga dikenal sebagai persilangan fitur. Operator id_feature adalah kasus khusus dari combo_feature yang hanya melibatkan satu bidang sumber. Biasanya, bidang sumber untuk persilangan fitur berasal dari tabel yang berbeda, seperti menggabungkan 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

Nama fitur.

expression

Ya

Array bidang sumber yang akan digabungkan.

need_prefix

Tidak

Menentukan apakah akan menambahkan awalan feature_name pada nilai output. Nilai yang valid:

  • true: Awalan digunakan.

  • false (default): Awalan tidak digunakan.

value_type

Tidak

Tipe data output. Default adalah string.

separator

Tidak

Pemisah nilai ganda untuk input. Default adalah "\u001D".

default_value

Tidak

Nilai default yang digunakan untuk input kosong atau null.

value_dimension

Tidak

Nilai default adalah 0. Parameter ini digunakan untuk pemotongan output. Jika nilainya 1, tipe skema adalah value_type. Jika tidak, tipe skema adalah array<value_type>.

stub_type

Tidak

Jika diatur ke true, fitur ini dianggap sebagai hasil antara dan tidak disertakan dalam output model. Default adalah false.

Contoh

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

user:age_class

item:item_id

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 nilai output dihitung sebagai berikut:

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

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

lookup_feature

Ikhtisar

Seperti match_feature, operator lookup_feature menemukan kunci dalam sekumpulan pasangan kunci-nilai dan mengembalikan nilai yang sesuai.

Operator ini bergantung pada dua parameter: map dan key.

  • Parameter map adalah kamus atau string bernilai ganda. Dalam string bernilai ganda, setiap elemen adalah pasangan kunci-nilai dalam format "k1:v1".

  • Parameter key dapat berupa tipe data apa pun. Untuk beberapa kunci, array adalah tipe input yang direkomendasikan. Untuk menghasilkan fitur, operator mengambil nilai untuk parameter key, mengonversinya ke tipe kunci dari map, lalu menemukan nilai yang sesuai dalam map tersebut.

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

Awalan nama fitur.

map

Ya

Kamus sumber yang berisi pasangan kunci-nilai.

key

Ya

Kunci yang akan dicari di map.

value_type

Tidak

Tipe output. Default adalah string.

separator

Tidak

Pemisah nilai ganda untuk parameter key jika tipenya string. Default adalah \u001D.

default_value

Tidak

Nilai default yang dikembalikan jika kunci tidak ditemukan atau input null.

need_prefix

Tidak

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

  • true: feature_name ditambahkan.

  • false (default): feature_name tidak ditambahkan.

need_key

Tidak

Menentukan apakah akan menambahkan key di awal nilai output. Parameter ini hanya berlaku ketika value_type adalah string. Nilai yang valid:

  • true: Kunci ditambahkan di awal.

  • false (default): Kunci tidak ditambahkan.

normalizer

Tidak

Metode normalisasi. Parameter ini berfungsi seperti parameter normalizer untuk operator raw_feature.

combiner

Tidak

Metode agregasi yang digunakan untuk menggabungkan nilai yang diambil dari beberapa kunci. Nilai yang valid: sum (default), mean, max, dan min.

need_discrete

Tidak

Jika diatur ke true, operator mengeluarkan semua nilai yang diambil sebagai array dan mengabaikan parameter combiner. Default adalah false.

value_dimension

Tidak

Menentukan dimensi output. Nilai yang valid:

  • 0 (default): Output tidak dipotong. Skema adalah array<value_type>.

  • 1: Skema output adalah value_type (nilai tunggal), bukan array<value_type>.

stub_type

Tidak

Jika diatur ke true, fitur dianggap sebagai hasil antara dan tidak disertakan dalam output model. Default adalah false.

  • Mendukung operasi pengelompokan. Untuk metode konfigurasi, lihat pengelompokan fitur (diskretisasi).

  • Parameter map mendukung input bertipe kamus, dan parameter key mendukung input bertipe array.

Contoh

Untuk konfigurasi di atas, asumsikan dokumen memiliki data berikut:

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

Simbol ^] merepresentasikan pemisah nilai ganda. Ini adalah satu karakter dengan kode ASCII "\x1D", bukan dua karakter. Untuk memasukkan karakter ini, tekan C-q C-5 di emacs atau C-v C-5 di vim. Di sini, item_attr adalah string bernilai ganda.

Saat parameter map merepresentasikan beberapa pasangan kunci-nilai sebagai string, itu harus berupa string bernilai ganda, bukan string standar.

item_value : "k2"

Fitur yang dihasilkan adalah item_match_item_k2_v2.

need_prefix == true

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

need_prefix == false

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

Menggabungkan hasil pencarian

Saat Anda memberikan beberapa kunci, Anda dapat menggunakan parameter combiner untuk mengagregasi nilai yang diambil.

Untuk menggunakan combiner, Anda harus mengatur need_discrete ke false. Dalam hal ini, nilai yang dicari harus berupa angka atau string yang dapat dikonversi ke angka.

match_feature

Ikhtisar

Operator match_feature biasanya digunakan untuk pencocokan fitur-ke-fitur. Intinya, operator ini melakukan pencarian map dua tingkat.

Konfigurasi

File konfigurasi menggunakan 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: Kamus bersarang.

    • Bidang user menggunakan string untuk merepresentasikan map dua tingkat.

    • Untuk map tingkat pertama, | adalah pemisah antar item, dan ^ adalah pemisah antara kunci dan nilainya.

    • Untuk map tingkat kedua, , adalah pemisah antar item, dan : adalah pemisah antara kunci dan nilainya.

    • Kamus tingkat pertama juga mendukung input Map<K, string>, di mana K dapat bertipe string,int32,int64. Nilai map adalah string yang merepresentasikan kamus dalam dan menggunakan pemisah yang sama.

  • category: Kunci utama untuk pencarian map tingkat pertama.

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

  • item: Kunci sekunder untuk pencarian map tingkat kedua.

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

  • need_discrete

    • true: Model menggunakan nama fitur yang dihasilkan dari output dan mengabaikan nilai fitur. Secara default, parameter ini adalah false.

    • false: Model menggunakan nilai fitur yang cocok dari output dan mengabaikan nama fitur.

  • match_type

    • hit: Mengeluarkan satu fitur yang cocok. Operator pertama-tama menanyakan map tingkat pertama menggunakan nilai category, lalu menanyakan map tingkat kedua yang dihasilkan menggunakan nilai item untuk mengambil nilai akhir. Untuk melakukan pencocokan satu tingkat, atur kunci map tingkat pertama ke ALL dan atur parameter category dalam konfigurasi pembuatan fitur (FG) ke "ALL".

    • multihit: Mencocokkan dan mengeluarkan beberapa nilai ketika karakter wildcard ALL digunakan di bidang category dan item.

  • normalizer

    Metode normalisasi. Parameter ini memiliki arti yang sama seperti pada operator raw_feature dan hanya berlaku ketika need_discrete=false.

  • show_category

    Menentukan apakah akan menambahkan awalan output dengan nilai category. Default ke true jika need_discrete=true dan match_type=hit, dan false jika tidak.

  • show_item

    Menentukan apakah akan menambahkan awalan output dengan nilai item. Default ke true jika need_discrete=true dan match_type=hit, dan false jika tidak.

  • value_type

    Tipe data output. Default ke string.

  • separator

    Opsional. Pemisah nilai ganda untuk bidang key bertipe string. Default ke "\u001D".

  • default_value

    Opsional. Nilai default untuk input null.

  • value_dimension

    Opsional. Mendefinisikan struktur data output. Default ke 0. Jika diatur ke 1, output adalah nilai tunggal bertipe value_type; jika tidak, output adalah array bertipe array<value_type>.

  • stub_type

    Opsional. Jika diatur ke true, output dianggap sebagai hasil antara dan tidak dikirim ke model. Default: false.

Contoh

Contoh fitur pengguna (kamus bersarang)

Sebagai contoh, string 50011740^50011740:0.2,36806676:0.3,122572685:0.5|50006842^16788:0.1 dikonversi ke map dua tingkat berikut:

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

Hit

Contoh ini menunjukkan konfigurasi untuk 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"
}

Dengan nilai bidang berikut:

Bidang

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

  • Jika need_discrete=true, operator melakukan pencarian dua langkah. Pertama, menggunakan nilai auction_root_category (50006842) untuk menanyakan user_brand_tags_hit, yang mengembalikan map dalam 16788816:0.1,10122:0.2,29889:0.3,30068:19. Kemudian, menanyakan map dalam ini dengan brand_id (30068) untuk mengambil nilai 19. Operasi kemudian menghasilkan nama fitur: brand_hit_50006842_30068_19.

  • Jika need_discrete=false, hasilnya adalah 19.0.

  • Bidang user_brand_tags_hit juga dapat bertipe Map, misalnya: {"50011740": "107287172:0.2,36806676:0.3,122572685:0.5", "50006842": "16788816:0.1,10122:0.2,29889:0.3,30068:19"}.

Untuk melakukan pencocokan satu tingkat, ubah nilai category dalam konfigurasi ke ALL. Asumsikan bidang memiliki nilai berikut:

Bidang

Nilai

user_brand_tags_hit

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

brand_id

30068

  • Jika need_discrete=true, hasilnya adalah brand_hit_ALL_30068_20.

  • Jika need_discrete=false, hasilnya adalah 20.0.

Atau, Anda dapat menggunakan operator lookup_feature dalam skenario ini. Ini memerlukan perubahan format nilai user_brand_tags_hit menjadi "16788816:40^]10122:40^]29889:20^]30068:20". String '^]' merepresentasikan pemisah nilai ganda \u001d, yaitu karakter tak tercetak.

Operator lookup_feature mendukung tipe input kompleks, seperti map dan array, sehingga menawarkan kinerja yang lebih baik.

overlap_feature

Ikhtisar

Mengeluarkan informasi tentang kecocokan istilah antara dua string. Sebagai contoh, Anda dapat menggunakan fitur ini untuk menentukan apakah query ada dalam title suatu item.

Metode

Deskripsi

query_common_ratio

Menghitung rasio istilah yang tumpang tindih terhadap jumlah total istilah dalam query.

Nilai yang dikembalikan berada dalam rentang [0.0, 1.0].

title_common_ratio

Menghitung rasio istilah yang tumpang tindih terhadap jumlah total istilah dalam title.

Nilainya berada dalam rentang [0.0, 1.0].

is_contain

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

  • 0: Tidak terdapat

  • 1: Terdapat

is_equal

Memeriksa apakah query dan title identik. Nilai yang mungkin:

  • 0: Tidak identik

  • 1: Identik

index_of

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

proximity_min_cover

Menghitung proximity istilah query dalam title.

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

proximity_min_dist

Menghitung proximity istilah query dalam title berdasarkan jarak pasangan minimum.

Nilainya berada dalam rentang [0, length(title)+1]. Nilai length(title)+1 menunjukkan tidak ada istilah yang cocok.

proximity_max_dist

Menghitung proximity istilah query dalam title berdasarkan jarak pasangan maksimum.

Nilainya berada dalam rentang [0, length(title)+1]. Nilai length(title)+1 menunjukkan tidak ada istilah yang cocok.

proximity_avg_dist

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

Nilainya berada dalam rentang [0, length(title)+1]. Nilai length(title)+1 menunjukkan tidak ada istilah yang cocok.

Makalah "An Exploration of Proximity Measures in Information Retrieval" menjelaskan metode perhitungan untuk fitur-fitur ini.

Asumsikan urutan term dari title (document) adalah: t1,t2,t1,t3,t5,t4,t2,t3,t4

  • MinCover mengukur panjang segmen document terpendek yang mencakup setiap query term setidaknya sekali.

  • MinDist (Jarak pasangan minimum): Jarak minimum yang ditemukan antara pasangan query term yang cocok. Misalnya, jika query Q=t1,t2,t3 memiliki jarak pasangan 1, 2, dan 3 dalam document, MinDist-nya adalah min(1,2,3)=1.

  • MaxDist (Jarak pasangan maksimum): Jarak maksimum yang ditemukan antara pasangan query term yang cocok. Untuk contoh yang sama, MaxDist=max(1,2,3)=3.

  • AveDist (Jarak pasangan rata-rata): Rata-rata jarak pasangan antara semua query term yang cocok. Untuk contoh yang sama, AveDist=(1+2+3)/3=2.

Perhatikan bahwa semua operator agregat (MinDist, MaxDist, dan AveDist) didefinisikan berdasarkan jarak pasangan antara query term yang cocok. Jika document hanya berisi satu query term yang cocok, nilai MinDist, AveDist, dan MaxDist adalah panjang document.

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

Tipe fitur. Harus overlap_feature.

feature_name

Ya

Nama feature yang dihasilkan.

query

Ya

Bidang sumber untuk teks query, ditentukan dalam format table:field. Bidang harus berisi string bernilai ganda.

title

Ya

Bidang sumber untuk teks title, ditentukan dalam format table:field. Bidang harus berisi string bernilai ganda.

method

Ya

Metode perhitungan. Nilai yang valid adalah query_common_ratio, title_common_ratio, is_contain, is_equal, dan metode proximity.

separator

-

Masukkan pemisah. Jika Anda tidak memasukkan nilai, default adalah chr(29).

normalizer

Tidak

metode normalisasi yang diterapkan pada output. Parameter ini berfungsi sama seperti normalizer pada operator raw_feature.

stub_type

Tidak

Default ke false. Jika diatur ke true, feature hanya digunakan sebagai intermediate result dan tidak dikeluarkan ke model.

overlap_feature mengembalikan nilai float.

Contoh 1

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

Metode

Nilai

query_common_ratio

0.5

title_common_ratio

0.28

is_contain

0

is_equal

0

Contoh 2

method=index_of, title=the cat sat on the mat.

Query

Nilai

the cat

0

sat

2

the mat

4

cap

-1

gap

-1

sequence_feature

Ikhtisar

Perilaku historis pengguna merupakan fitur penting. Perilaku ini biasanya direpresentasikan sebagai sekuens, seperti rangkaian klik atau pembelian. Entitas yang membentuk sekuens dapat berupa item itu sendiri atau atributnya.

Konfigurasi

Sebagai contoh, untuk memproses sekuens klik pengguna dengan panjang maksimum 50, Anda dapat mengekstrak fitur item_id, price, dan ts untuk setiap item. Di sini, ts adalah selisih antara waktu permintaan (request_time) dan waktu event (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: Pembatas yang memisahkan elemen dalam sekuens.

  • sequence_pk: Kunci utama sekuens. Contohnya adalah user:click_50_seq, yang menyimpan 50 itemID terbaru yang diklik pengguna. Layanan inferensi model menggunakan bidang ini sebagai kunci untuk menanyakan side info.

    • Parameter permintaan untuk Layanan Inferensi Online (EAS Processor) harus menyertakan fitur yang kuncinya adalah sequence_pk.

      • Contoh: click_50_seq: 5410233389955966;1832586 (Pembatasnya adalah nilai yang ditentukan untuk sequence_delim)

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

    • Sub-fitur sisi item dari sekuens tidak perlu disertakan dalam permintaan ke layanan inferensi model.

      • Layanan inferensi model menggunakan bidang ini sebagai kunci untuk menanyakan side info item.

      • Sebagai contoh, dalam konfigurasi ini, fitur sekuens item_id, price tidak diperlukan dalam permintaan ke layanan inferensi. Sebaliknya, fitur-fitur tersebut diambil dari cache item Processor dan digabungkan menggunakan SDK fg. Proses ini memastikan formatnya konsisten dengan yang digunakan selama pelatihan offline.

    • Sub-fitur sisi pengguna dari sekuens harus disertakan 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 konfigurasi dapat bervariasi untuk tipe sub-fitur yang berbeda. ${input_name} tidak menyertakan awalan domain input (seperti item: atau user:).

  • Features: side info dari sekuens, yang mencakup informasi seperti nilai atribut statis item dan informasi waktu perilaku.

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

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

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

    • Tabel input untuk tugas offline harus menyertakan kolom yang sesuai dengan semua sub-fitur.

      • Saat kolom berupa sekuens (lihat aturan untuk sequence_fields), namanya adalah ${sequence_name}__${input_name}.

        • Sebagai contoh, dalam konfigurasi ini, tabel offline memerlukan 4 kolom: click_50_seq__item_id, click_50_seq__price, click_50_seq__ts, dan click_50_seq__clk_time_seq.

        • Tipe kolom yang direkomendasikan untuk tabel offline adalah array (untuk kinerja yang lebih baik), sedangkan tipe string yang menggunakan sequence_delim sebagai pembatas elemen juga didukung.

      • Jika kolom bukan sekuens, beri nama ${input_name} tanpa awalan.

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

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

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

    • value_dimension (atau value_dim): Dimensi setiap elemen dalam Sekuens. Untuk sequence_raw_feature, tipe output adalah 1 saat parameter ini diatur ke array<float>, dan array<array<float>> untuk nilai lainnya. Untuk sequence_id_feature, tipe output adalah array<string> saat parameter ini diatur ke 1, dan array<array<string>> untuk nilai lainnya. Nilai default adalah 0.

Tipe fitur apa pun dapat dikonfigurasi sebagai sub-fitur sekuens. Berikut adalah contohnya:

{
  "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"
  }
}

Catatan: Parameter input_alias menentukan alias untuk bidang input. Formatnya adalah "origin_field": "alias_field", yang memungkinkan Anda menggunakan nama yang lebih pendek untuk menggantikan nama bidang input asli.

Format diratakan

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

Contoh:

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

Untuk mengaktifkan versi yang sesuai, atur is_sequence: true/false.

Dalam hal ini, parameter feature_type tidak memerlukan awalan sequence_.

Contoh:

Kasus khusus 2: Beberapa tipe 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 yang melebihi panjang ini dipotong. Nilai default adalah -1, yang berarti sekuens tidak dipotong.

  • sequence_delim: Pembatas antar elemen sekuens. Nilai default adalah ;.

Kode berikut memberikan contoh konfigurasi.

{
  "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, yang dapat berupa array atau string dengan elemen dipisahkan oleh karakter yang dikonfigurasi oleh sequence_delim.

  • Dengan konfigurasi ini, layanan online (Processor) tidak menanyakan side info. Anda harus menyediakan input lengkap.

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

Pembuatan fitur online

Anda dapat memperoleh sideinfo perilaku dengan dua cara. Salah satunya adalah mengambil sideinfo dari cache item EasyRec Processor. Bidang yang ditentukan oleh sequence_pk digunakan sebagai kunci utama untuk mencari informasi atribut item dalam cache item. Cara lainnya adalah mengisi nilai bidang yang sesuai dalam permintaan. Sebagai contoh, bidang "ts" dalam konfigurasi di atas merepresentasikan (request_time - event_time), yaitu waktu permintaan rekomendasi dikurangi waktu perilaku pengguna. Nilai ini berubah pada setiap permintaan dan karenanya 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_50_seq__ts"
  value {
    string_feature: "23;113;401363;401369;401375;401405;486678;486803;486922;486969"
  }
}

combine_feature

Pendahuluan

Operator combine_feature mengagregasi beberapa nilai dari fitur input menjadi satu nilai menggunakan strategi kombinasi yang ditentukan (combiner).

Versi sekuensnya, sequence_combine_feature, mengagregasi nilai dalam setiap elemen fitur sekuens, mengubah sekuens bernilai ganda menjadi sekuens bernilai tunggal.

Kemampuan utama

  • Kombinasi bernilai ganda: Mengagregasi beberapa nilai dari fitur menjadi satu nilai.

  • Strategi kombinasi fleksibel: Mendukung berbagai strategi, seperti sum, mean, max, min, dan count.

  • Pemetaan nilai: Mengonversi pengenal string ke nilai numerik, ideal untuk memproses sekuens event perilaku.

  • Dukungan pemisah ganda: Memungkinkan Anda mengonfigurasi pembatas sekuens dan pemisah bernilai ganda.

Konfigurasi

Konfigurasi dasar (kombinasi numerik)

{
  "feature_name": "combine_feat",
  "feature_type": "combine_feature",
  "expression": "user:behavior_seq",
  "combiner": "sum",
  "separator": "|"
}

Anda dapat mengonfigurasi versi sekuens dengan dua cara:

  • Atur parameter feature_type ke sequence_combine_feature.

  • Tambahkan parameter "is_sequence": true.

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

Atau:

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

Konfigurasi pemetaan 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
  }
}

Operator pertama-tama menerapkan pemetaan nilai, lalu menggabungkan nilai yang dihasilkan.

Parameter

Parameter

Wajib

Deskripsi

feature_name

Ya

Nama fitur output.

feature_type

Ya

Menentukan tipe operator. Misalnya, sequence_combine_feature.

expression

Ya

Fitur input.

combiner

Tidak

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

value_map

Tidak

Peta nilai untuk mengonversi nilai string ke nilai numerik sebelum dikombinasikan.

is_sequence

Tidak

Menentukan apakah input adalah fitur sekuens.

separator

Tidak

Pemisah bernilai ganda. Default adalah \u001D.

sequence_delim

Tidak

Pembatas sekuens. Default ke string kosong.

default_value

Tidak

Nilai default yang digunakan untuk input null atau kosong.

stub_type

Tidak

Jika diatur ke true, fitur hanya berfungsi sebagai hasil antara dan tidak dikeluarkan ke model. Default adalah false.

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]

1+2+3=6, 4+5=9, 6=6

"10;20,30"

[10, 50]

10=10, 20+30=50

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

[6, 9, 6]

1+2+3=6, 4+5=9, 6=6

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

[6, 9, 6]

1+2+3=6, 4+5=9, 6=6

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 memetakan event ke nilainya lalu menjumlahkannya: 1+2+4=7.

"click"

[2]

Nilai yang dipetakan adalah 2.

"expo|click"

[3]

1+2=3

"expo|click|buy;expo;click"

[7, 1, 2]

String input berisi beberapa elemen yang dipisahkan oleh pembatas sekuens (;).

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

[3, 1, 6]

Array input berisi beberapa elemen.

tokenize_feature

Ikhtisar

Operator tokenize_feature melakukan tokenisasi string input, mengembalikan string yang telah ditokenisasi atau ID token yang sesuai. Operator ini mendukung file kosakata dalam format tokenizer.json dari pustaka tokenizers-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 fitur yang akan dibuat.

expression

Ya

Menentukan bidang sumber. Sumber harus user, item, atau context.

vocab_file

Ya

Jalur file kosakata.

default_value

Tidak

Nilai default untuk input.

tokenizer_type

Tidak

Tipe tokenizer. Nilai yang valid: sentencepiece. Jika parameter ini tidak ditentukan, sistem menyimpulkan tipe tokenizer dari vocab_file.

output_type

Tidak

  • word_id: Mengembalikan ID token.

  • word: Mengembalikan string yang telah ditokenisasi.

output_delim

Tidak

Pembatas untuk output word_id atau word hanya digunakan dalam tugas offline.

stub_type

Tidak

Saat diatur ke true, fitur ini dianggap sebagai hasil antara dan tidak dikeluarkan ke model.

Contoh

Saat output_type adalah word_id, operator mengembalikan string ID token, dipisahkan oleh karakter yang ditentukan dalam output_delim.

Tipe

item:title

Output

string

It is good today!

1147,310,1175,3063,2

Contoh kosakata

Nama file

Tipe Tokenizer

Tautan unduh

bert-base-chinese-vocab.json

WordPiece

Unduh

tokenizer.json

BPE

Unduh

spiece.model

sentencepiece

Unduh

text_normalizer

Ikhtisar

Operator text_normalizer melakukan normalisasi teks. Fiturnya mencakup konversi huruf besar/kecil, konversi Tionghoa Tradisional ke Sederhana, konversi karakter lebar penuh ke setengah lebar, penyaringan karakter khusus, konversi pengkodean GBK/UTF-8, dan 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. Sumber harus user, item, atau context.

stop_char_file

Tidak

Jalur ke file yang berisi karakter khusus yang akan dihapus. File ini harus dikodekan dalam GBK. Jika Anda menghilangkan parameter ini, operator menggunakan daftar bawaan.

max_length

Tidak

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

remove_space

-

Apakah akan menghapus spasi.

is_gbk_input

Tidak

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

is_gbk_output

Tidak

Apakah output harus dikodekan dalam GBK. Jika false, operator mengkodekan output sebagai UTF-8.

parameter

-

Bitmask yang menentukan operasi normalisasi yang akan dilakukan.

default_value

Tidak

Nilai default yang dikembalikan jika bidang sumber null atau kosong.

Catatan:

  • File stop_char_file harus menggunakan pengkodean GBK.

  • Setiap baris dalam file stop_char_file hanya boleh berisi satu karakter. Jika tidak, penyaringan akan gagal.

Opsi normalisasi teks

Parameter parameter menentukan jumlah satu atau lebih angka berikut.

Sebagai contoh, jika fungsi yang diperlukan adalah konversi huruf besar ke kecil, konversi lebar penuh ke setengah lebar, konversi Tionghoa Tradisional ke Sederhana, dan penyaringan karakter khusus, maka parameter=4+8+16+32=60.

Nilai default parameter 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 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
}
  • inputs=["Regular Expression Code Generator", "HTML Filtering Tool", "Regular Expression Syntax Cheatsheet", "The Cat/"]

  • outputs=["regex code generator", "HTML filtering tool", "regular expression syntax quick reference", "the cat/"]

Fitur Bm25

Fitur

Algoritma BM25 (Best Matching) adalah algoritma pencocokan teks terkemuka dalam temu balik informasi, digunakan untuk menghitung skor relevansi pencarian. Algoritma ini pertama-tama mengurai query menjadi istilah . Kemudian, untuk setiap hasil pencarian D, algoritma menghitung skor relevansi setiap istilah untuk D. Akhirnya, algoritma menghitung jumlah tertimbang dari skor relevansi setiap istilah untuk menghasilkan skor relevansi akhir antara query dan D.

Untuk bahasa Tionghoa, Anda dapat mendekati tokenisasi query sebagai analisis morfem, memperlakukan setiap istilah sebagai morfem.

Rumus umum algoritma BM25 adalah:

Di mana merepresentasikan query, adalah istilah query ke-, adalah dokumen, adalah bobot , dan R(q_i, d) adalah skor relevansi untuk dokumen .

Pentingnya Istilah

Ada beberapa metode untuk menentukan relevansi istilah terhadap dokumen. Salah satu yang paling umum adalah frekuensi dokumen invers (IDF). Rumusnya sebagai berikut:

Di sini, merepresentasikan jumlah total dokumen dalam korpus, dan merepresentasikan jumlah total dokumen dalam korpus yang berisi qi.

Sesuai definisi IDF, untuk koleksi dokumen tertentu, semakin banyak dokumen yang berisi istilah , semakin rendah bobot . Dengan kata lain, ketika banyak dokumen berisi , kekuatan diskriminatif rendah. Oleh karena itu, kurang penting untuk menentukan relevansi.

Relevansi istilah

Dalam BM25, skor relevansi antara istilah dan dokumen , dilambangkan , adalah:

adalah faktor penyesuaian yang biasanya ditentukan berdasarkan pengalaman. Nilai umumnya adalah . adalah frekuensi term dalam dokumen , dan adalah frekuensi term dalam kueri. adalah panjang dokumen , dan adalah rata-rata panjang dokumen di seluruh dokumen. Karena suatu term biasanya hanya muncul sekali dalam kueri (), rumus tersebut disederhanakan menjadi:

Dari definisi , Anda dapat melihat 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 suatu dokumen, semakin besar nilai , yang menurunkan skor relevansi. Hal ini karena dokumen yang lebih panjang cenderung lebih mungkin mengandung . Oleh karena itu, untuk nilai yang sama, relevansi dokumen panjang terhadap lebih lemah dibandingkan relevansi dokumen pendek terhadap .

Rumus skor relevansi algoritma BM25 dapat dirangkum sebagai berikut:

Rumus BM25 menunjukkan bahwa penggunaan metode yang berbeda untuk tokenisasi, pembobotan kata kunci, dan penentuan relevansi kata kunci-dokumen dapat menghasilkan berbagai metode penilaian relevansi pencarian, sehingga memberikan fleksibilitas tinggi dalam desain algoritma.

Konfigurasi

{
  "feature_type": "bm25_feature",
  "feature_name": "query_doc_relevance",
  "query": "user:query",
  "document": "item:title",
  "term_doc_freq_file": "term_doc_freq.txt",
  "document_number": 1000,
  "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. Setiap baris berisi sebuah term dan jumlah dokumennya, dipisahkan oleh spasi putih (whitespace).

term_doc_freq_dict

No

Alternatif dari term_doc_freq_file. Sebuah dictionary yang memetakan term ke jumlah dokumennya.

document_number

Yes

Jumlah total dokumen, yang sesuai dengan dalam rumus.

k1

No

Parameter penyetelan untuk algoritma BM25. Nilai tipikal berkisar antara 1,2 hingga 2,0. Nilai default-nya adalah 1,2.

b

No

Parameter penyetelan untuk algoritma BM25. Nilai default-nya adalah 0,75.

separator

No

Pemisah untuk input bernilai ganda. Nilai default-nya adalah \u001D.

normalizer

No

Metode normalisasi. Untuk detailnya, lihat konfigurasi raw_feature.

default_value

No

Nilai default untuk input null.

stub_type

No

Jika diatur ke true, fitur ini hanya berfungsi sebagai hasil antara dan tidak disertakan dalam output model. Nilai default-nya adalah false.

  • Tentukan salah satu dari term_doc_freq_file atau term_doc_freq_dict. Opsi pertama memiliki prioritas lebih tinggi dan akan digunakan jika keduanya ditentukan.

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

kv_dot_product

Ikhtisar

Menghitung dot product dari vektor dua indeks key-value, atau ukuran irisan 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

Menentukan bidang sumber untuk kueri.

document

Ya

Menentukan bidang sumber untuk dokumen.

separator

Tidak

Pemisah untuk input multi-nilai. Nilai default-nya adalah "\u001D".

kv_delimiter

Tidak

Pemisah untuk pasangan kunci-nilai. Nilai default-nya adalah ":".

normalizer

Tidak

Metode normalisasi. Untuk informasi selengkapnya, lihat konfigurasi raw_feature.

default_value

Tidak

Nilai yang dikembalikan untuk input kosong. Nilai default-nya adalah 0.

stub_type

Tidak

Nilai default-nya adalah false. Jika diatur ke true, fitur ini hanya berfungsi sebagai hasil antara dan tidak disertakan dalam output model.

  • Fitur ini mendukung tipe kompleks, seperti array dan map. Untuk performa optimal, gunakan tipe kompleks.

  • Jika input tidak memiliki bagian value, nilai value default-nya adalah 1.0. Anda dapat menggunakan properti ini untuk menemukan ukuran irisan dari 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 pengganti yang ditentukan.

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. Nama fitur output.

expression

Wajib. Menentukan bidang sumber.

default_value

Opsional. Nilai default yang digunakan jika input kosong atau bernilai null.

replacements

Opsional. Parameter ini menjadi wajib jika replace_file tidak diatur. Nilainya berupa dictionary yang memetakan teks asli ke teks pengganti.

replace_file

Opsional. Parameter ini wajib jika Anda tidak mengatur replacements. Nilainya harus berupa file dictionary di mana setiap baris memiliki format teks asli \t teks pengganti. Pemisahnya adalah karakter tab (\t).

is_sequence

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

sequence_length

Opsional. Panjang maksimum sekuens. Elemen yang melebihi panjang ini akan dipotong.

sequence_delim

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

separator

Opsional. Parameter ini menentukan pemisah nilai ganda untuk input dan hanya berlaku ketika is_sequence=true. Nilai default-nya adalah "\u001D".

value_dimension

Opsional. Menentukan dimensi untuk pemotongan output. Default: 0.

stub_type

Opsional. Jika diatur ke true, fitur ini ditangani sebagai hasil antara dan tidak disertakan dalam output model. Nilai default-nya adalah false.

  • Anda dapat mengonfigurasi kedua parameter replace_file dan replacements. Dictionary pengganti dari keduanya digabungkan, dan replacements memiliki prioritas lebih tinggi.

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

    • hash_bucket_size: Melakukan hash terhadap hasil transformasi fitur dan menerapkan operasi modulo.

    • vocab_list: Mengelompokkan input berdasarkan vocabulari dan memetakan setiap nilai ke indeksnya dalam daftar tersebut.

    • vocab_dict: Mengelompokkan input dengan memetakan setiap nilai fitur ke nilai yang sesuai dalam vocab_dict.

    • vocab_file: Membaca vocab_list atau vocab_dict dari file.

  • Operator ini mendukung input multi-nilai bertipe array.

Contoh

Tabel berikut menunjukkan output untuk contoh konfigurasi di atas.

user:query

Output

the quick brown fox jumped over the lazy dogs

pack my box with five dozen liquor jugs

aaa

xX

Feature|Generation|Tool|Useful

FeatureGenerationToolUseful

regex_replace_feature

Ikhtisar

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

Anda dapat mengonfigurasi multiple pola. Operator ini akan mengganti setiap substring yang sesuai dengan salah satu pola yang ditentukan.

Konfigurasi

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

Parameter

Deskripsi

feature_name

Wajib diisi. Nama fitur output.

expression

Wajib diisi. Bidang sumber untuk fitur tersebut.

default_value

Opsional. Nilai default yang digunakan jika input bernilai null atau kosong.

regex_pattern

Wajib diisi. Ekspresi reguler yang digunakan untuk menemukan substring yang akan diganti.

replacement

Opsional. String pengganti. Jika Anda menentukan string kosong, substring yang sesuai akan dihapus.

replace_all

Opsional. Menentukan apakah penggantian dilakukan secara global. Nilai default-nya adalah true. Jika parameter ini diatur ke false, hanya kemunculan pertama dari pola yang diganti.

icase

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

is_sequence

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

sequence_length

Opsional. Panjang maksimum sequence. Operator ini memotong sequence yang melebihi panjang tersebut.

sequence_delim

Opsional. Pemisah antar elemen dalam sequence. Parameter ini hanya diperlukan ketika input berupa string.

separator

Opsional. Parameter ini hanya berlaku ketika is_sequence=true. Parameter ini menentukan pemisah multi-nilai untuk input. Nilai default-nya adalah "\u001D".

value_dimension

Opsional. Dimensi output untuk memotong hasil. Nilai 0 (default) menonaktifkan pemotongan.

stub_type

Opsional. Jika diatur ke true, fitur ini diperlakukan sebagai hasil antara dan tidak dimasukkan ke dalam output model. Nilai default-nya adalah false.

  • Operator ini mendukung feature binning. Untuk detail konfigurasi, lihat dokumentasi feature binning (diskretisasi). Parameter berikut tersedia:

    • hash_bucket_size: Melakukan hash terhadap nilai fitur dan menerapkan operasi modulo.

    • vocab_list: Mengelompokkan nilai fitur berdasarkan daftar vocab dan memetakannya ke indeksnya dalam daftar tersebut.

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

    • vocab_file: Membaca vocab_list atau vocab_dict dari file.

  • Mendukung input array multi-nilai.

Contoh

user:query

Output

alpha|beta|gamma

alpha beta gamma

feature|generation|tool|useful

feature generation tool useful

bool_mask_feature

Pendahuluan

Menyaring elemen dari sebuah sequence menggunakan boolean mask, mirip dengan tf.boolean_mask(tensor, mask).

Ini merupakan jenis 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. Nama fitur, digunakan sebagai awalan untuk output akhir.

expression

Wajib. Array yang menentukan bidang-bidang dependen. Elemen pertama adalah input sequence yang akan disaring, dan elemen kedua adalah boolean mask.

default_value

Opsional. Jika tidak ditentukan, parameter ini secara default bernilai 0 untuk value_type numerik.

value_type

Wajib. Tipe data dari output.

sequence_length

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

sequence_delim

Opsional. Pemisah untuk elemen-elemen dalam sebuah sequence. Parameter ini wajib untuk input berupa string.

separator

Opsional. Pemisah untuk input multi-nilai. Nilai default-nya adalah \u001D.

value_dimension

Opsional. Dimensi output, digunakan untuk pemotongan. Nilai default-nya adalah 0.

normalizer

Opsional. Metode normalisasi. Parameter ini hanya berlaku untuk fitur numerik. Untuk detailnya, lihat RawFeature.

stub_type

Opsional. Jika diatur ke true, fitur ini berfungsi sebagai hasil antara dan tidak dimasukkan ke dalam model. Nilai default-nya adalah false.

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

Memotong array input menggunakan sintaks slice ala Python atau mengambil elemen pada indeks tertentu.

Ini merupakan jenis 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, digunakan sebagai awalan untuk output akhir.

expression

Ya

Array berisi bidang sumber.

slice

Ya

Bilangan tunggal untuk mengambil elemen berdasarkan indeksnya, atau string slice ala Python dalam format start:stop:step.

default_value

Tidak

Nilai yang digunakan untuk input kosong. Jika tidak ditentukan, nilai default-nya adalah 0 untuk semua numeric type.

value_type

Ya

Tipe output.

sequence_length

Tidak

Panjang maksimum sequence. Sequence yang lebih panjang akan dipotong.

sequence_delim

Tidak

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

separator

Tidak

Pemisah nilai ganda untuk input. Nilai default-nya adalah "\u001D".

value_dimension

Tidak

Menentukan dimensi untuk pemotongan output. Nilai default-nya adalah 0.

normalizer

Tidak

Metode normalisasi. Hanya berlaku untuk fitur numerik. Untuk detail selengkapnya, lihat RawFeature.

stub_type

Tidak

Default: false. Jika diatur ke true, fitur ini hanya berfungsi sebagai hasil antara dan tidak disertakan dalam output model.

placeholder

Tidak

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

  • Operator ini mendukung pengelompokan fitur. Untuk detail konfigurasi, lihat feature binning (diskretisasi).

  • 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]