今天是2024年9月3日,星期二,北京,天气晴,我们来看看两个问题。
一个是Rerankers库统一排序方法,其在RAG中用的较多,封装了许多rerank的模型方法。
另一个是使用利用大模型进行基于上下文的OCR校正的一个可行性研究,这个有些意思。
一、精排Rerankers-python工具库
重排是信息检索流程中的关键组成部分,通常在初步检索到一组候选文档后,使用更强大的模型(通常是神经网络模型)对它们进行重排,以提高检索质量。
最近的工作《rerankers: A Lightweight Python Library to Unify Ranking Methods》(https://arxiv.org/pdf/2408.17344)介绍了一个名为rerankers的轻量级Python库,它旨在统一多种重排(re-ranking)方法。
rerankers库通过提供简单的接口,使得研究人员和实践者能够轻松地探索不同的重排方法,只需更改一行Python代码即可。
也就是说,该工作提供了一个统一的接口,可以加载和使用不同的重排方法。
可以先看看其执行机理,如下:
对应rerank之后的结果例子,如下:
在具体实操上,可以从其githb中(代码地址:https://github.com/answerdotai/rerankers) 看到其所支持的一些调用方式:
from rerankers import Reranker
# Cross-encoder default. You can specify a ‘lang’ parameter to load a multilingual version!
ranker = Reranker(‘cross-encoder’)
# Specific cross-encoder
ranker = Reranker(‘mixedbread-ai/mxbai-rerank-large-v1’, model_type=‘cross-encoder’)
# FlashRank default. You can specify a ‘lang’ parameter to load a multilingual version!
ranker = Reranker(‘flashrank’)
# Specific flashrank model.
ranker = Reranker(‘ce-esci-MiniLM-L12-v2’, model_type=‘flashrank’)
# Default T5 Seq2Seq reranker
ranker = Reranker(“t5”)
# Specific T5 Seq2Seq reranker
ranker = Reranker(“unicamp-dl/InRanker-base”, model_type = “t5”)
# API (Cohere)
ranker = Reranker(“cohere”, lang=‘en’ (or ‘other’), api_key = API_KEY)
# Custom Cohere model? No problem!
ranker = Reranker(“my_model_name”, api_provider = “cohere”, api_key = API_KEY)
# API (Jina)
ranker = Reranker(“jina”, api_key = API_KEY)
# RankGPT4-turbo
ranker = Reranker(“rankgpt”, api_key = API_KEY)
# RankGPT3-turbo
ranker = Reranker(“rankgpt3”, api_key = API_KEY)
# RankGPT with another LLM provider
ranker = Reranker(“MY_LLM_NAME” (check litellm docs), model_type = “rankgpt”, api_key = API_KEY)
# RankLLM with default GPT (GPT-4o)
ranker = Reranker(“rankllm”, api_key = API_KEY)
# RankLLM with specified GPT models
ranker = Reranker(‘gpt-4-turbo’, model_type=“rankllm”, api_key = API_KEY)
# ColBERTv2 reranker
ranker = Reranker(“colbert”)
# LLM Layerwise Reranker
ranker = Reranker(‘llm-layerwise’)
# … Or a non-default colbert model:
ranker = Reranker(model_name_or_path, model_type = “colbert”)
二、 利用大模型进行基于上下文的OCR校正
历史印刷媒体档案的数字化对于提高当代记录的可访问性至关重要。然而,将实体记录转换为数字文本的光学字符识别(OCR)过程容易出错,特别是在报纸和期刊这样布局复杂的文档中。
《CLOCR-C: Context Leveraging OCR Correction with Pre-trained Language Models》(https://arxiv.org/pdf/2408.17428),尝试利用预训练语言模型(LMs)的文本填充和上下文适应能力来提高光学字符识别(OCR)的质量,研究的核心目标是探索语言模型是否能够执行OCR后处理校正,改善下游自然语言处理(NLP)任务。
其想说明的问题也很有趣,有三个:
- 语言模型能否提高报纸和期刊OCR输出的准确性?
- 经过CLOCR-C校正后的错误率是否能够改善下游NLP任务?
- 提供社会文化上下文是否能提高OCR输出的准确性?
先说结论,实验使用了七个LMs对三个数据集进行:19世纪连续出版物版(NCSE)和Overproof收藏中的两个数据集。
结果表明:
-
一些LMs可以显著降低错误率,表现最好的模型在NCSE数据集上实现了字符错误率超过60%的降低。
-
OCR的改进扩展到了下游任务,例如命名实体识别,余弦命名实体相似度有所提高。
再来看一些实现过程:
1、数据集
研究使用了三个数据集,包括来自英国、澳大利亚和美国的数字化档案报纸。具体数据集如下:
-
十九世纪连续出版物版(NCSE):这是一个新发布的开源档案,包含六个期刊的数字化扫描和OCR处理结果。这些期刊包括《Monthly Repository and Unitarian Chronicle》、《Northern Star》、《The Leader》、《The English Woman’s Journal》、《The Tomahawk》和《Publisher’s Circular》。
-
Overproof 收藏:包含两个数据集,一个来自澳大利亚的TROVE收藏,另一个来自美国的报纸档案。这些数据集具有高质量的行对齐转录,适合用于评估OCR校正系统。
2、语言模型对比
比较了七种流行的语言模型,包括GPT-4、GPT-3.5、Llama 3、Gemma、Mixtral 8x7b、Claude 3 Opus和Claude 3 Haiku。
这些模型的选择基于它们在大型语言模型公司中的代表性以及通过API的可访问性。
3、实验任务
实验分为三个子部分:
- 提示变体和选择过程:使用不同的提示(prompts)来引导语言模型进行OCR校正。提示的设计对于模型性能有显著影响,因此进行了多种提示的测试和优化。
-
下游任务评估:研究OCR校正对下游任务(如命名实体识别NER)的影响。使用NER模型来评估校正后文本的质量,采用余弦命名实体相似度(CoNES)作为评估指标,以衡量文本中命名实体的一致性。
-
社会文化信息的使用:探讨在提示中提供社会文化上下文对OCR校正性能的影响。通过控制实验来测试不同提示对模型校正能力的影响。
4、评估指标
- 字符错误率(CER):用于评估模型校正效果的指标,计算原始OCR和模型校正后文本之间的差异。
- 错误减少百分比(ERP):表示模型校正效果相对于原始OCR的改进程度。
- 余弦命名实体相似度(CoNES):用于评估OCR校正对下游NER任务的影响,通过比较实体的向量表示来衡量文本间的相似度。
总结
本文主要讲了两个事儿,一个是Rerankers库统一排序方法,其在RAG中用的较多,封装了许多rerank的模型方法。
另一个是使用利用大模型进行基于上下文的OCR校正的一个可行性研究,其中对于任务的设定以及prompt的选择很有趣。
参考文献
1、https://arxiv.org/pdf/2408.17344
2、https://arxiv.org/pdf/2408.17428
来源:公众号 老刘说NLP