Skip to content

isLinXu/regex-tokenizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logo1

GitHub watchers GitHub stars GitHub forks GitHub followers Build Status imgGitHub repo size GitHub language count GitHub last commit GitHubimg


regex-tokenizer

Converted the Jina Tokenizer regex pattern to python.

regex-tokenizer是一个用于将文本文件分块的工具。 它可以根据配置文件中的正则表达式模式将文本分割成不同的块,并生成统计信息。 该工具支持大文件处理、并行处理和多种输出格式。

效果展示

Text Chunker Jsonl
src1 demo1@2x result1@2x
src2 demo2 result2@2x
src3 demo3@2x result3@2x

特性

  • 配置驱动:通过 YAML 配置文件和 JSON 正则表达式文件进行配置。
  • 多种输出格式:支持 JSONL、CSV、XML 和 Excel 格式的输出。
  • 大文件处理:支持按块读取大文件,避免内存溢出。
  • 并行处理:支持多线程并行处理,提高处理速度。
  • 性能测量:提供执行时间和内存使用情况的测量。
  • 日志记录:记录详细的日志信息,包括错误和处理信息。
  • 统计信息:生成详细的统计信息,包括总块数、总字符数、总行数等。

用法

安装

git clone https://github.com/isLinXu/regex-tokenizer
cd  regex-tokenizer
pip install -r requirements.txt

config

配置文件 config.yaml 包含了一些配置参数,如最大标题长度、最大标题内容长度等。

MAX_HEADING_LENGTH: 7
MAX_HEADING_CONTENT_LENGTH: 200
MAX_HEADING_UNDERLINE_LENGTH: 200

patterns

正则表达式文件 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。

致谢

本项目使用了 Jina 的 Tokenizer 模块, 感谢 hanxiao 的贡献。

About

Converted the Jina Tokenizer regex pattern to python.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages