replacement-scout / src /preprocess /prepare_sequences.py
muhgalal's picture
Initial deploy: backend + models + photos
5c09212
Raw
History Blame Contribute Delete
1.37 kB
def flatten_sequences(sequences):
flat_sequences = []
player_ids = []
for seq in sequences:
flat_seq = []
seq_players = []
for event in seq:
flat_seq.extend(event["tokens"])
seq_players.append(event["player_id"])
flat_sequences.append(flat_seq)
player_ids.append(seq_players)
return flat_sequences, player_ids
def build_vocab(sequences, min_freq=1):
from collections import Counter
counter = Counter()
for seq in sequences:
counter.update(seq)
vocab = {
"<PAD>": 0,
"<UNK>": 1,
"<MASK>": 2,
}
idx = 3
for token, freq in counter.items():
if freq >= min_freq:
vocab[token] = idx
idx += 1
return vocab
def encode_sequences(sequences, vocab):
encoded = []
for seq in sequences:
encoded_seq = [
vocab.get(token, vocab["<UNK>"])
for token in seq
]
encoded.append(encoded_seq)
return encoded
def pad_sequences(sequences, max_len=100):
padded = []
for seq in sequences:
# 1. CLIP first
if len(seq) > max_len:
seq = seq[:max_len]
# 2. PAD after
if len(seq) < max_len:
seq = seq + [0] * (max_len - len(seq)) # PAD = 0
padded.append(seq)
return padded