現代文本分詞器簡介
BERT、DistilBERT 和其他基於 Transformer 的架構等現代自然語言處理 (NLP) 模型高度依賴有效的分詞。但 C++ 開發者經常面臨許多限制,例如依賴項過多、Unicode 支援不佳,或與基於詞彙的編碼器缺乏相容性。
正因如此,我創建了 現代文本分詞器——一款速度超快、僅使用標頭文件的 C++ 分詞器,它支援 UTF-8 編碼、零依賴,並且開箱即用,機器學習就緒。
它的獨特之處?
- 零依賴 – 無需 Boost、無需 ICU、無需外部函式庫。
- UTF-8 安全性 – 可正確處理多語言文字、表情符號和多位元組字元。
- 僅使用標頭檔案 – 將其新增至您的專案中即可使用。
- 詞彙編碼 – 從 HuggingFace 載入
vocab.txt
並產生 token ID。 - Transformer-Ready – 支援
[CLS]
、[SEP]
、[PAD]
和序列格式。
主要功能
- 使用
std::string_view
快速實作 ASCII 與 Unicode 分支 - 流暢的設定 API:
1 TextTokenizer tokenizer; 2 tokenizer 3 .set_lowercase(true) 4 .set_split_on_punctuation(true) 5 .set_keep_punctuation(true);
- 載入詞彙:
1 tokenizer.load_vocab("vocab.txt");
- 編碼/解碼:
1 auto ids = tokenizer.encode("Hello world!"); 2 std::string decoded = tokenizer.decode(ids);
表現
1174000 個字元的效能測試
2
3結果:
4標記化:2159 μs(22000 個標記)
5編碼:1900 μs
6解碼:430 μs
7總時間:4.49 毫秒
8吞吐量:36.97 MB/s
基於 Ryzen 9 5900X @ -O3 的發布模式進行基準測試
使用方法
新增頭檔:
1#include "Modern-Text-Tokenizer.hpp"
然後編譯:
1g++ -std=c++17 -O3 -o tokenizer_demo main.cpp
想要將它與 BERT 或 DistilBERT 一起使用嗎?只需下載詞彙檔案:
1curl -O https://huggingface.co/distilbert/distilbert-base-uncased/raw/main/vocab.txt
跨平台 CI 構建
OS | Status |
---|---|
Ubuntu | ✅ |
Windows | ✅ |
GitHub Actions |
用例
- 使用 C++ 實作機器學習模型的文字預處理
- 裝置端自然語言處理(無 Python 開銷)
- 高效能命令列工具
- 無需運行時依賴的嵌入式系統
立即試用
Modern Text Tokenizer 現已上線,可用於您的專案。
幾秒鐘內即可複製、編譯和分詞:Modern Text Tokenizer
評論