理解 Token 索引 vs 字符位置

以下是對“理解 Token 索引與字符位置的區別”的內容整理,條理清晰,結構完整,保持技術細節,方便閱讀,無多余解釋:


🔍 理解 Token 索引 vs 字符位置

文本分塊方法中返回的索引是 token 索引,而不是原始文本中的字符位置。理解這一點對正確使用和調試文本處理流程至關重要。


📄 原始文本與 Tokenization 的區別

示例文本

"人工智能正在改變世界。"

字符位置(原始文本)

字符
位置012345678910

Token 位置(tokenizer 處理后)

Tokens = ["人", "工", "智", "能", "正", "在", "改", "變", "世", "界", "。"]
索引 =   [0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10]

🔢 各分塊方法的返回值示例


1?? 語義分塊(chunk_semantically)

text = "人工智能正在改變世界。它使得許多任務自動化。"

Tokenizer 分詞結果:

Tokens = ["人", "工", "智", "能", "正", "在", "改", "變", "世", "界", "。","它", "使", "得", "許", "多", "任", "務", "自", "動", "化", "。"]
索引 =    [0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,11,  12,  13,  14,  15,  16,  17,  18,  19,  20,  21]

假設返回值為:

[(0, 11), (11, 22)]

表示:

  • 第1塊:token索引 0-10,“人工智能正在改變世界。”
  • 第2塊:token索引 11-21,“它使得許多任務自動化。”

2?? 固定大小分塊(chunk_by_tokens)

text = "人工智能正在改變世界。它使得許多任務自動化。"
chunk_size = 5

返回值示例:

[(0, 5), (5, 10), (10, 15), (15, 20), (20, 22)]

表示:

  • 第1塊:token索引 0-4,“人工智能正在”
  • 第2塊:token索引 5-9,“改變世界。”
  • 第3塊:token索引 10-14,“它使得許多”
  • 第4塊:token索引 15-19,“任務自動化”
  • 第5塊:token索引 20-21,“。”

3?? 按句子分塊(chunk_by_sentences)

text = "人工智能正在改變世界。它使得許多任務自動化。我們需要適應這些變化。"

Tokenizer 分詞結果假設為:

句子1"人工智能正在改變世界。" → token索引 0~10  
句子2"它使得許多任務自動化。" → token索引 11~21  
句子3"我們需要適應這些變化。" → token索引 22~33

設置每個塊 1 個句子,返回值:

[(0, 11), (11, 22), (22, 34)]

? 為什么返回 token 索引?

原因說明
? NLP 模型處理的是 token模型輸入必須是 token 序列,不能直接處理原始字符
? 精確控制長度Token 數量直接決定能否通過模型輸入限制(如 BERT 的 512 token)
? 對齊后續處理流程向量化、分塊拼接、交叉注意力等操作都基于 token 索引進行

🔁 實際代碼中的字符位置 → Token 索引映射

部分關鍵轉換流程如下:

# 從 splitter 獲取字符級位置
nodes = [(node.start_char_idx, node.end_char_idx)for node in self.splitter.get_nodes_from_documents(...)
]# token_offsets 是 tokenizer 返回的每個 token 的字符起止位置
start_chunk_index = bisect.bisect_left([offset[0] for offset in token_offsets], char_start
)
end_chunk_index = bisect.bisect_right([offset[1] for offset in token_offsets], char_end
)

最終輸出的 (start_chunk_index, end_chunk_index) 就是基于 tokenizer 的 token 索引范圍

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80389.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80389.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80389.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《異常鏈機制詳解:如何優雅地傳遞Java中的錯誤信息?》

大家好呀!👋 作為一名Java開發者,相信你一定見過各種奇奇怪怪的異常報錯。但有沒有遇到過這樣的情況:明明只調用了一個方法,卻看到異常信息像俄羅斯套娃一樣一層層展開?🤔 這就是我們今天要講的…

vector 常見用法及模擬

文章目錄 1. vector的介紹與使用1.1 vector的構造1.2 vector iterator 的使用1.3 有關大小和容量的操作1.4 vector 增刪查改1.5 vector 迭代器失效問題(重點)1.6 vector 中二維數組的使用 2. vector 的模擬實現2.1 拷貝構造和賦值重載的現代寫法2.2 memc…

數據結構與算法分析實驗11 實現順序查找表

實現順序查找表 1.上機名稱2.上機要求3.上機環境4.程序清單(寫明運行結果及結果分析)4.1 程序清單4.1.1 頭文件4.1.2 實現文件4.1.3 源文件 4.2 實現展效果示 上機體會 1.上機名稱 實現順序查找表 順序查找表的基本概念 順序查找表是一種線性數據結構,通常用于存儲…

實踐官方的 A2A SDK Python

內容列表 ? 注意? 我的環境? A2A SDK Python 注意 這只是一個原型,并且在快速的變化,本篇教程也隨時可能過期,可以在A2AProtocol blog最終更新的文章。 我的環境 ? Python 3.13? uv: uv 0.7.2 (Homebrew 2025-04-30)? Warp? Olla…

langchain 接入國內搜索api——百度AI搜索

為什么使用百度AI搜索 學習langchain的過程中,遇到使用search api的時候,發現langchain官方文檔中支持的搜索工具大多是國外的,例如google search或bing search,收費不說,很多還連接不上(工具 | LangChain…

[強化學習的數學原理—趙世鈺老師]學習筆記01-基本概念

[強化學習的數學原理—趙世鈺老師]學習筆記01-基本概念 1.1 網格世界的例子1.2 狀態和動作1.3 狀態轉移1.4 策略1.5 獎勵1.6 軌跡、回報、回合1.6.1 軌跡和回報1.6.2 回合 1.7 馬爾可夫決策過程 本人為強化學習小白,為了在后續科研的過程中能夠較好的結合強化學習來…

Java開發經驗——阿里巴巴編碼規范經驗總結2

摘要 這篇文章是關于Java開發中阿里巴巴編碼規范的經驗總結。它強調了避免使用Apache BeanUtils進行屬性復制,因為它效率低下且類型轉換不安全。推薦使用Spring BeanUtils、Hutool BeanUtil、MapStruct或手動賦值等替代方案。文章還指出不應在視圖模板中加入復雜邏…

Java大師成長計劃之第18天:Java Memory Model與Volatile關鍵字

📢 友情提示: 本文由銀河易創AI(https://ai.eaigx.com)平臺gpt-4o-mini模型輔助創作完成,旨在提供靈感參考與技術分享,文中關鍵數據、代碼與結論建議通過官方渠道驗證。 在Java多線程編程中,線程…

js前端分片傳輸大文件+mongoose后端解析

最近一直在完善mongoose做webserver的項目,其中程序升級要通過前端傳輸升級包到服務器。 因為第一次寫前端代碼,分片傳輸的邏輯,網上一堆,大同小異,而且版本啊,API不一致的問題,導致頭疼的很。后…

MiniMind:3塊錢成本 + 2小時!訓練自己的0.02B的大模型。minimind源碼解讀、MOE架構

大家好,我是此林。 目錄 1. 前言 2. minimind模型源碼解讀 1. MiniMind Config部分 1.1. 基礎參數 1.2. MOE配置 2. MiniMind Model 部分 2.1. MiniMindForCausalLM: 用于語言建模任務 2.2. 主干模型 MiniMindModel 2.3. MiniMindBlock: 模型的基本構建塊…

引言:Client Hello 為何是 HTTPS 安全的核心?

當用戶在瀏覽器中輸入 https:// 時,看似簡單的操作背后,隱藏著一場加密通信的“暗戰”。Client Hello 作為 TLS 握手的首個消息,不僅決定了后續通信的加密強度,還可能成為攻擊者的突破口。據統計,超過 35% 的網站因 TL…

Dockerfile 完全指南:從入門到最佳實踐

Dockerfile 完全指南:從入門到最佳實踐 1. Dockerfile 簡介與作用 Dockerfile 是一個文本文件,包含了一系列用于構建 Docker 鏡像的指令。它允許開發者通過簡單的指令定義鏡像的構建過程,實現自動化、可重復的鏡像構建。 主要作用&#xf…

Python httpx庫終極指南

一、發展歷程與技術定位 1.1 歷史演進 起源:httpx 由 Encode 團隊開發,于 2019 年首次發布,目標是提供一個現代化的 HTTP 客戶端,支持同步和異步操作,并兼容 HTTP/1.1 和 HTTP/2。背景: requests 庫雖然功…

app加固

1、什么是加固? 我們之前講的逆向,大多數都是用加密算法去加密一些明文字符串,然后把得到的結果用 Base64、Hex等進行編碼后提交。加固其實也一樣,只不過他通常加密的是 dex文件而已。但是 dex 文件加密以后,安卓系統是沒法直接運行的。所以加固的核心&…

Win全兼容!五五 Excel Word 轉 PDF 工具解決多場景轉換難題

各位辦公小能手們!今天給你們介紹一款超牛的工具——五五Excel Word批量轉PDF工具V5.5版。這玩意兒專注搞批量格式轉換,能把Excel(.xls/.xlsx)和Word(.doc/.docx)文檔唰唰地變成PDF格式。 先說說它的核心功…

springCloud/Alibaba常用中間件之Nacos服務注冊與發現

文章目錄 SpringCloud Alibaba:依賴版本補充六、Nacos:服務注冊與發現1、下載安裝Nacos2、服務注冊1. 導入依賴(這里以服務提供者為例)2. 修改配置文件和主啟動類3. 創建業務類4. 測試 3.服務映射1. 導入依賴2. 修改配置文件和主啟動類3. 創建業務類和RestTemplate配置類用來提…

uniapp中score-view中的文字無法換行問題。

項目場景: 今天遇到一個很惡心的問題,uniapp中的文字突然無法換行了。得..就介樣 原因分析: 提示:經過一fan研究后發現 scroll-view為了能夠橫向滾動設置了white-space: nowrap; 強制不換行 解決起來最先想到的是,父…

【STM32 學習筆記】I2C通信協議

注:通信協議的設計背景 3:00~10:13 I2C 通訊協議(Inter-Integrated Circuit)是由Phiilps公司開發的,由于它引腳少,硬件實現簡單,可擴展性強, 不需要USART、CAN等通訊協議的外部收發設備,現在被廣…

【網絡原理】數據鏈路層

目錄 一. 以太網 二. 以太網數據幀 三. MAC地址 四. MTU 五. ARP協議 六. DNS 一. 以太網 以太網是一種基于有線或無線介質的計算機網絡技術,定義了物理層和數據鏈路層的協議,用于在局域網中傳輸數據幀。 二. 以太網數據幀 1)目標地址 …

控制臺打印帶格式內容

1. 場景 很多軟件會在控制臺打印帶顏色和格式的文字,需要使用轉義符實現這個功能。 2. 詳細說明 2.1.轉義符說明 樣式開始:\033[參數1;參數2;參數3m 可以多個參數疊加,若同一類型的參數(如字體顏色)設置了多個&…