@@ -15,9 +15,9 @@ and this project adheres to
1515[ Semantic Versioning] ( https://semver.org/spec/v2.0.0.html ) .
1616
1717- Full release notes: < https://github.com/PyThaiNLP/pythainlp/releases >
18- - Commit history: < https://github.com/PyThaiNLP/pythainlp/compare/v5.2.0...HEAD >
18+ - Commit history: < https://github.com/PyThaiNLP/pythainlp/compare/v5.2.0...5.3.0 >
1919
20- ## [ Unreleased ]
20+ ## [ 5.3.0 ] - 2026-03-10
2121
2222This release focuses on stability and performance, featuring optimized memory
2323efficiency, better read-only environment support, and standardized error
@@ -30,22 +30,29 @@ The minimum requirement is now Python 3.9.
3030### Added
3131
3232- Tapsai et al. 2020 soundex (#1175 )
33+ - Thai profanity detection (#1183 )
34+ - Qwen3-0.6B language model (#1217 )
3335- Thai-NNER integration with top-level entity filtering (#1221 )
36+ - ` pythainlp.braille ` module for Thai braille conversion (#1287 )
3437- BLEU, ROUGE, WER, and CER metrics to ` pythainlp.benchmarks ` (#1295 )
3538- Attaparse engine to dependency parser
3639 (` dependency_parsing ` , engine="attaparse") (#1303 )
37- - ` pythainlp.is_offline_mode() ` helper function (#1306 )
40+ - ` pythainlp.is_offline_mode() ` helper function;
41+ use ` PYTHAINLP_OFFLINE=1 ` to disable automatic corpus downloads (#1306 )
3842- Thai consonant cluster detection (` check_khuap_klam ` ) (#1308 )
3943- ` pythainlp.is_read_only_mode() ` helper function;
40- use ` PYTHAINLP_READ_ONLY=1 ` to prevent all write operations
44+ use ` PYTHAINLP_READ_ONLY=1 ` to prevent all write operations ( # 1317 )
4145
4246### Changed
4347
48+ - Optimized for performance (#1182 , #1237 , #1320 )
4449- Lazy load dictionaries to reduce memory usage (#1186 )
45- - Migrate configurations to ` pyproject.toml ` (#1188 , #1226 , #1239 )
46- - Update type hints; use Python 3.9 features (#1189 , #1190 )
50+ - Migrate configurations to ` pyproject.toml ` (#1188 , #1190 , #1226 , #1239 )
51+ - Update type hints; use Python 3.9 features (#1189 , #1190 , #1232 ,
52+ #1262 , #1263 , #1264 , #1274 , etc.)
4753- Make package zip-safe (#1212 )
4854- Ensure thread-safety for tokenizers (#1213 )
55+ - Replace TNC word frequency dataset with Phupha filtered by ORST words (#1284 )
4956- Reorganize "noauto" test suite by dependency groups
5057 (torch, tensorflow, onnx, cython, network) (#1290 )
5158- ` get_corpus_path() ` now respects ` PYTHAINLP_OFFLINE ` env var
@@ -55,7 +62,6 @@ The minimum requirement is now Python 3.9.
5562- Callers raise ` FileNotFoundError ` with download instructions when
5663 a corpus path cannot be resolved (#1306 )
5764- Migrate build backend to ` hatchling ` (#1311 )
58- - Update HTTP links to HTTPS in source files and documentation
5965
6066### Deprecated
6167
@@ -75,16 +81,24 @@ The minimum requirement is now Python 3.9.
7581
7682### Fixed
7783
78- - Consonant cluster boundary issue in ` royin ` romanization (#1172 )
79- - Final consonant classification in ` check_marttra() ` (#1173 )
80- - Kho Khon alphabet issue in ` tltk ` transliteration (#1187 )
84+ - ` royin ` romanization: Consonant cluster boundary (#1172 )
85+ - ` check_marttra() ` : Final consonant classification (#1173 )
86+ - Base dependencies (#1185 )
87+ - ` tltk ` transliteration: Kho Khon alphabet issue in (#1187 )
88+ - Fix tone_detector and sound_syllable bugs (#1197 )
89+ - ` normalize() ` : Remove spaces before tone marks and non-base
90+ characters (#1222 )
8191- Suppress Gensim duplicate-word warnings when loading word2vec
8292 binary files (#1316 )
83- - ` db.json ` is no longer created on import; created lazily only
84- when a corpus is first downloaded (#1317 )
85- - Exponential-time explosion in "newmm" tokenization
86- engine when tokenizing text with many ambiguous
87- breaking points (#1319 )
93+ - ` db.json ` : created lazily only when a corpus is first
94+ downloaded (#1317 )
95+ - ` newmm ` tokenization: Exponential-time explosion when text has
96+ many ambiguous breaking points (#1319 )
97+
98+ ### Security
99+
100+ - Prevent path traversal and symlink attacks in archive extraction
101+ (#1225 )
88102
89103## [ 5.2.0] - 2025-12-20
90104
@@ -187,7 +201,7 @@ The minimum requirement is now Python 3.9.
187201
188202- See < https://github.com/PyThaiNLP/pythainlp/releases/tag/v5.0.0 >
189203
190- [ Unreleased ] : https://github.com/PyThaiNLP/pythainlp/compare/v5.2.0...HEAD
204+ [ 5.3.0 ] : https://github.com/PyThaiNLP/pythainlp/compare/v5.2.0...v5.3.0
191205[ 5.2.0 ] : https://github.com/PyThaiNLP/pythainlp/compare/v5.1.2...v5.2.0
192206[ 5.1.2 ] : https://github.com/PyThaiNLP/pythainlp/compare/v5.1.1...v5.1.2
193207[ 5.1.1 ] : https://github.com/PyThaiNLP/pythainlp/compare/v5.1.0...v5.1.1
0 commit comments