Converted the Jina Tokenizer regex pattern to python.
regex-tokenizer是一个用于将文本文件分块的工具。 它可以根据配置文件中的正则表达式模式将文本分割成不同的块,并生成统计信息。 该工具支持大文件处理、并行处理和多种输出格式。
Text | Chunker | Jsonl |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- 配置驱动:通过 YAML 配置文件和 JSON 正则表达式文件进行配置。
- 多种输出格式:支持 JSONL、CSV、XML 和 Excel 格式的输出。
- 大文件处理:支持按块读取大文件,避免内存溢出。
- 并行处理:支持多线程并行处理,提高处理速度。
- 性能测量:提供执行时间和内存使用情况的测量。
- 日志记录:记录详细的日志信息,包括错误和处理信息。
- 统计信息:生成详细的统计信息,包括总块数、总字符数、总行数等。
git clone https://github.com/isLinXu/regex-tokenizer
cd regex-tokenizer
pip install -r requirements.txt
配置文件 config.yaml
包含了一些配置参数,如最大标题长度、最大标题内容长度等。
MAX_HEADING_LENGTH: 7
MAX_HEADING_CONTENT_LENGTH: 200
MAX_HEADING_UNDERLINE_LENGTH: 200
正则表达式文件 patterns.json
包含了各种正则表达式,如标题、引文、表格等。例如:
{
"headings": "(?:^(?:[#*=-]{1,7}|\\w[^\\r\\n]{0,200}\\r?\\n[-=]{2,200}|<h[1-6][^>]{0,100}>)[^\\r\\n]{1,200}(?:</h[1-6]>)?(?:\\r?\\n|$))",
"citations": "(?:\\$[0-9]+\\$[^\\r\\n]{1,800})",
... ...
}
python3 run.py sample.txt --config config.yaml \
--regex patterns.json \
--output_file output.jsonl \
--output_format jsonl \
--num_threads 4 \
--stats_file stats.json
python3 run.py data/demo/alice_in_wonderland.txt alice_in_wonderland.jsonl
python3 run.py data/demo/test.md test.jsonl
python3 run.py data/demo/红楼梦.txt 红楼梦.jsonl
日志文件 text_chunker.log
将记录所有的日志信息,包括错误和处理信息。
欢迎贡献代码!请 fork 本项目并提交 pull request。