| import chess | |
| import numpy as np | |
| from datasets import load_dataset | |
| from tqdm import tqdm | |
| from tokenizer import FENTokenizer | |
| tokenizer = FENTokenizer() | |
| print("Downloading dataset from Hugging Face...") | |
| dataset = load_dataset("Lichess/chess-puzzles")["train"] | |
| dataset = dataset.select_columns(["FEN", "Moves"]) | |
| encoded_fens = [] | |
| print("Tokenizing all FENs...") | |
| for i in tqdm(range(dataset.num_rows)): | |
| fen = dataset[i]["FEN"] | |
| move = dataset[i]["Moves"].split(" ")[0] | |
| board = chess.Board(fen) | |
| board.push(board.parse_uci(move)) | |
| encoded = tokenizer.encode(board.fen()) | |
| encoded_fens.append(encoded) | |
| encoded_array = np.array(encoded_fens, dtype=np.int32) | |
| np.save("data/encoded_fens.npy", encoded_array) | |
| print("Done ! Saved encoded FENs to data/encoded_fens.npy") | |