Skip to content

Commit 31a5288

Browse files
committed
@feat: add gen markov tokenizer file script
1 parent e4b2f94 commit 31a5288

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

markov/tokenize.sh

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/usr/bin/env bash
2+
#
3+
# Преобразует произвольный .txt-файл в токенизированный формат,
4+
# пригодный для цепей Маркова:
5+
# • каждое слово и знак пунктуации — отдельный токен
6+
# • токены разделены одиночными пробелами
7+
# • регистр сохраняется
8+
# Результат записывается в <имя_файла>_tokenized.txt рядом с исходником.
9+
#
10+
# Использование:
11+
# ./tokenize.sh path/to/book.txt
12+
#
13+
14+
set -euo pipefail
15+
16+
if [[ $# -ne 1 ]]; then
17+
echo "Usage: $0 <input.txt>" >&2
18+
exit 1
19+
fi
20+
21+
INPUT="$1"
22+
[[ -f "$INPUT" ]] || { echo "File not found: $INPUT" >&2; exit 1; }
23+
24+
DIR=$(dirname "$INPUT")
25+
BASE=$(basename "$INPUT")
26+
NAME="${BASE%.*}"
27+
OUTPUT="${DIR}/${NAME}_tokenized.txt"
28+
29+
# --- токенизация -----------------------------------------------------------
30+
31+
perl -0777 -pe '
32+
s/\r//g;
33+
s/\.{3}/ … /g;
34+
s/([[:punct:]])/ $1 /g;
35+
s/[0-9]+/ /g;
36+
s/[A-Za-z]+/ /g;
37+
s/[*\/{}\[\];()&=+]+/ /g;
38+
s/\s+/ /g;
39+
s/^\s+|\s+$//g;
40+
' "$INPUT" > "$OUTPUT"
41+
42+
echo "Tokenized file written to: $OUTPUT"

0 commit comments

Comments
 (0)