专栏名称: AI工程化
专注于AI领域(大模型、MLOPS/LLMOPS 、AI应用开发、AI infra)前沿产品技术信息和实践经验分享。
今天看啥  ›  专栏  ›  AI工程化

仅用50行正则就能切分“任何文档”的精妙分词器,简单好用,性能强劲!

AI工程化  · 公众号  ·  · 2024-08-17 13:01

文章预览

Jina 公司的 CEO 肖涵在 GitHub 上分享了一个令人印象深刻的代码片段 [1] ,这段代码是 Jina tokenizer 中使用的核心分词实现。这个正则表达式代码片段仅用了 50 余行,却能够高效地处理各种复杂度的文本内容进行分块。其性能之强劲令人惊讶,解析整本《爱丽丝梦游仙境》仅用了 2 毫秒,便产生了 1,204 个文本块。 const chunkRegex = new RegExp(      "("  +     // 1. Headings (Setext-style, Markdown, and HTML-style, with length constraints)     `(?:^(?:[ #*=-]{1,${MAX_HEADING_LENGTH}}|\\w[^\\r\\n]{0,${MAX_HEADING_CONTENT_LENGTH}}\\r?\\n[-=]{2,${MAX_HEADING_UNDERLINE_LENGTH}}| ]{0,${MAX_HTML_HEADING_ATTRIBUTES_LENGTH}}>)[^\\r\\n]{1,${MAX_HEADING_CONTENT_LENGTH}}(?: )?(?:\\r?\\n|$))` +      "|"  +     // New pattern  for  citations     `(?:\\[[0-9]+\\][^\\r\\n]{1, ${MAX_STANDALONE_LINE_LENGTH} })` +      "|"  +     // 2. List items (bulle ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览