在自然语言处理(NLP)中,处理长文本(超出模型上下文窗口限制的文本)是一个重要挑战。目前主流的长文本处理技术可以分为以下几类:
1. 分块(Chunking)策略
(1) 固定长度分块(Fixed-Length Chunking)
方法:将文本按固定长度(如512 tokens)分割,独立编码每块。
问题:可能切断句子或段落,丢失上下文。
改进:
重叠分块(Overlapping Chunking):相邻块部分重叠(如50 tokens),减少边界信息丢失。
句子/段落对齐分块:确保分块在自然语言边界(如句末)切断。
(2) 动态分块(Dynamic Chunking)
Late Chunking(迟分策略):先全局分析,再按语义分块(如基于TextTiling或BERT的注意力机制)。
语义分块(Semantic Chunking):使用聚类或主题模型(如LDA)划分相关段落。
2. 层次化编码(Hierarchical Encoding)
(1) 句子/段落级编码
方法:
先对句子或段落单独编码(如用BERT)。
再使用RNN/Transformer聚合所有句子的表示。
代表模型:
Hierarchical LSTM/Transformer(如DocBERT、Longformer)。
Setence-BERT(SBERT):对句子编码后计算相似度。
(2) 递归/分层Transformer
方法:
低层处理短片段,高层聚合片段表示。
代表模型:
Transformer-XL:引入递归机制,缓存历史片段信息。
BigBird:使用稀疏注意力机制处理长文本。
3. 稀疏注意力(Sparse Attention)
(1) 局部+全局注意力
方法:只计算部分token的注意力,减少计算量。
代表模型:
Longformer:滑动窗口(局部)+全局注意力(关键token)。
BigBird:结合随机注意力、局部窗口和全局token。
(2) 线性注意力(Linear Attention)
方法:用近似计算降低注意力复杂度(从O(n²)到O(n))。
代表模型:
Reformer:基于LSH(局部敏感哈希)的注意力。
Performer:使用随机正交特征(FAVOR+)加速。
4. 记忆增强(Memory-Augmented)方法
(1) 外部记忆库
方法:存储历史片段信息,供后续查询。
代表模型:
MemNN(Memory Networks):显式存储关键信息。
RAG(Retrieval-Augmented Generation):检索增强生成。
(2) 缓存机制(Cache-Based)
方法:缓存前文隐藏状态,避免重复计算。
代表模型:
Transformer-XL:缓存前片段的隐藏状态。
Compressive Transformer:压缩历史信息存储。
5. 检索增强(Retrieval-Augmented)方法
(1) 检索+生成
方法:先检索相关段落,再生成答案。
代表模型:
REPLUG:检索增强的LM微调。
FiD(Fusion-in-Decoder):多文档检索后融合生成。
(2) 动态检索
方法:在生成过程中动态检索外部知识。
代表模型:
Atlas:基于检索的少样本学习。
6. 压缩与摘要(Compression & Summarization)
(1) 文本压缩
方法:删除冗余信息,保留关键内容。
技术:
抽取式摘要(如TextRank)。
生成式摘要(如BART、PEGASUS)。
(2) 潜在表示压缩
方法:用低维向量表示长文本。
代表模型:
BPR(Bi-Encoder):双塔模型编码长文本。
DPR(Dense Passage Retrieval):稠密检索。
7. 长文本专用模型
8. 如何选择合适的长文本处理技术?
目前,稀疏注意力模型(如Longformer、BigBird)和检索增强方法(如RAG) 是工业界的主流选择,而Late Chunking、层次化编码在特定任务(如文档聚类)中仍具优势。未来,线性注意力(Performer)和动态检索(Atlas) 可能成为更高效的解决方案。