2023年,Google搜索每天處理85億次查詢,其中23%包含歧義詞——"python"是蛇還是編程語言,"jaguar"是動物、汽車還是足球隊。人類靠上下文秒懂,機器卻得把每個詞切成碎片,逐塊貼標簽。這套"切碎-分類"的流水線,就是Token Classification(詞元分類)。
它不是什么高端概念,而是所有語言模型的地基。沒有它,ChatGPT連"你好嗎"都接不住。
從"bank"的噩夢開始:為什么機器必須"切詞"
英語單詞"bank"有至少10種含義:河岸、銀行、庫存、傾斜、依賴……人類讀到"river bank"時,大腦自動激活"河岸"的語義網絡,抑制"銀行"的干擾。這種消歧能力來自數十年的語言經驗,機器沒有。
早期的NLP系統用規則硬編碼:if 前面有"river" then bank=河岸。但規則寫不完。2018年BERT出現后,思路變了——讓模型自己學上下文模式。而學習的前提是:先把句子切成可計算的最小單元。
這個切分過程叫Tokenization(詞元化)。英文按空格切太粗糙,"unhappiness"得拆成"un"+"happiness"才能讓模型理解否定前綴。中文更麻煩,"自然語言處理"可以切成"自然/語言/處理"或"自/然/語/言/處/理",不同切法,模型學到的關系完全不同。
切完之后,真正的分類才開始。每個token要回答三個問題:它是什么實體?它扮演什么語法角色?它和其他token怎么組合?對應三大任務:命名實體識別(NER)、詞性標注(POS)、組塊分析(Chunking)。
NER:在文本里抓"人名地名公司名"
Named Entity Recognition(命名實體識別)是Token Classification最值錢的應用。金融公司用它從財報里抽公司名稱和金額,法務系統用它標記合同里的關鍵日期和當事人,醫療AI用它識別病歷中的藥品和劑量。
標準NER標簽體系叫BIO:B(Begin,實體開始)、I(Inside,實體內部)、O(Outside,非實體)。句子"Tim Cook announced new iPhone"會被打成:Tim-B-PER、Cook-I-PER、announced-O、new-O、iPhone-B-PROD。
2019年前,NER主要靠CRF(條件隨機場)和LSTM。模型看一個詞,同時看前后幾個詞的窗口,預測標簽。缺點是"近視"——遠距離的指代關系抓不住。比如"Apple said it would release...","it"指Apple,但LSTM可能漏掉。
Transformer架構改變了游戲規則。BERT、RoBERTa、DeBERTa這些模型用"自注意力機制",讓每個token直接"看到"句子中所有其他token。距離不再是問題,"it"和"Apple"的關聯強度會被顯式計算。
現在的SOTA(當前最優)模型在CoNLL-2003英文NER數據集上F1分數沖到97.5%,接近人類標注員的一致性水平(98%)。但別被數字騙了——這只是在干凈的新聞文本上。轉到社交媒體,用戶把"Micro$oft"故意拼錯,或者混用中英文,F1能掉到70%以下。
POS和Chunking:語法結構的隱形腳手架
Part-of-Speech Tagging(詞性標注)給每個token標語法角色:名詞、動詞、形容詞、介詞……看起來基礎,卻是句法分析的入口。搜索引擎用它理解查詢意圖:"book a flight"里book是動詞,"a good book"里book是名詞,排序算法得區別對待。
英語POS標簽集最常用的是Penn Treebank的45類標簽,包括細分的NN(單數名詞)、NNS(復數名詞)、NNP(專有名詞單數)、NNPS(專有名詞復數)。中文用北大標注集,分33類。
現代POS標注器準確率超過97%,但歧義仍在。"Time flies like an arrow"有五種語法分析,POS標注器通常只輸出概率最高的那種。理解幽默、雙關、詩歌?不是它的設計目標。
Chunking(組塊分析)比POS高一層:把token聚成短語塊。句子"the quick brown fox jumps"會被切成[the quick brown fox][jumps]——名詞短語+動詞短語。這種"中間表示"在信息抽取里很有用:先定位名詞短語塊,再判斷哪個塊是主語、哪個是賓語。
三種任務的關系像俄羅斯套娃:NER回答"這是什么實體",POS回答"這是什么詞性",Chunking回答"這些詞怎么抱團"。實際系統常把它們串起來:先POS標注,再基于詞性規則做Chunking,最后在名詞短語塊里跑NER。
工業落地的三個暗礁
論文里的97%準確率,到生產環境往往腰斬。第一個坑是領域遷移。醫療NER模型用到法律文本,"appeal"從"上訴"變成"吸引力",標簽全亂。2019年BioBERT的實驗證明,通用BERT在生物醫學NER上比領域預訓練版本低15個百分點。
第二個坑是標注成本。高質量NER數據需要專家標注,醫療領域一個標注員一天只能標200條句子。弱監督學習試圖用規則自動生標簽,但噪聲會累積。Snorkel這類工具讓用戶寫標注函數,比如"if 詞在大寫且在公司后綴列表里 then B-ORG",再用概率模型融合多個函數的輸出。2020年Google用這種方法在100萬條數據上訓練,成本降到人工標注的1/50,但F1也掉了8個點。
第三個坑是實時性。BERT-base有1.1億參數,在CPU上跑一條句子要100毫秒。搜索推薦場景要求10毫秒響應,必須蒸餾成小模型或者用ONNX加速。DistilBERT把層數砍半,速度提升60%,準確率只掉3%。更極端的量化方案把權重壓到INT8,再砍一半延遲。
2023年,大模型(LLM)的興起帶來新變數。GPT-4做NER不需要專門訓練,直接給幾個示例就能zero-shot(零樣本)抽取。但成本是問題:抽100萬條實體,用BERT-base要10美元,用GPT-4 API要4000美元。而且LLM會"幻覺"——編造不存在的實體,這在金融合規場景是致命缺陷。
現在的主流做法是"大小模型協同":LLM做冷啟動生成偽標簽,小模型在偽標簽上微調,最后人工校驗關鍵樣本。
一個被忽略的細節:subword的陷阱
BERT用的WordPiece切分器會把罕見詞拆成子詞。"Supercalifragilistic"變成['Super', '##cali', '##fragil', '##istic']。NER標注時,"Super"被標B-ORG,后面三個##cali等該標I-ORG還是O?
標準做法是只給第一個subword標B/I,其余標X(忽略)。但這樣丟失了信息:模型看到"##cali"時,不知道它是"Supercali"的一部分還是獨立片段。一些新架構嘗試給所有subword標標簽,后處理時再合并,效果提升1-2%,但工程復雜度翻倍。
中文的subword問題更隱蔽。BERT-wwm(全詞掩碼)把"自然語言"當一個整體掩碼,而不是掩"然"或"語"。這要求切分時知道詞邊界,但中文分詞本身就有歧義。"南京市/長江大橋"還是"南京/市長/江大橋"?不同切法,下游NER的"南京"和"長江大橋"實體邊界全變。
2022年,哈工大的MacBERT提出用拼音和部首增強中文表征,在CLUENER數據集上F1提升2.3%。思路很樸素:機器不懂"河"和"湖"都有三點水,但給模型顯式輸入部首信息,它能更快學到地理實體的聚類。
這些細節不會出現在論文標題里,但決定了產品能不能用。一個客服機器人把"轉人工"理解成"轉賬給人工",可能就是一個POS標注錯誤引發的連鎖反應。
Token Classification的終極悖論是:它越準確,用戶越感覺不到它的存在。就像好的排版讓人專注內容而非字體,好的NLP系統讓用戶以為機器"真的懂了"。但拆開看,那只是一堆概率分布和標簽序列,在硅片上瘋狂計算。
如果GPT-5能把NER、POS、Chunking全部內化到端到端生成里,這些中間任務會消失嗎?還是像編譯器優化一樣,從手寫匯編變成自動調度,但底層邏輯永遠需要有人理解?
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.