日常分享
多模态模型发展(1)
截止23年11月初的多模态模型讨论
文档去重
文档去重
文档去重是在针对预训练语料中非常重要的一个步骤,重复的文档在预训练过程中会降低模型的性能。文档去重的方法其实有很多,比如模糊去重,SimHash,MinHash,KSentence,KShingle等算法去重,通过计算计算最长子串去重也同样适用。
这里我们不过多赘述相关算法的定义与推理,详情可以观看该博客。
我们直接给出多种去重算法的对比结论:
算法 | 优缺点 |
---|---|
KShingle | Jaccard similarity不适合较长的文本,文档的特征集合比较大,会遇到时间和空间的双重瓶颈。 |
MinHash | MinHash利用hash加随机的方式减少文档特征集合的大小,有损但是近似Jaccard similarity的估计,同时与LSH算法结合能够大大提高效率。 |
SimHash | SimHash文本较长的情况,准确率较高,针对短文本的准确率不能保证。 |
KSentence | KSentence准确率较高,召回率低于MinHash与SimHash,算法实现简单,效率高同时也可以并行化,但是对抄袭后部分修改的文本识别度较低。 |
这里我们主推MinHash也是参考LLaMA与Falcon的操作,同时我们实现了SimHash与MinHash的组合去重,能够得到更好的效果,但是带来的牺牲可能就是时间的问题。
代码实现
文档可视化
文档解析
文档解析
文档的类型多种多样,为了保证其统一性,方便后续处理。首先,肯定是需要对不同的格式的文档进行读取与存储操作,如txt,json,docx,pdf等格式。针对不同格式的文档可以使用不同的包进行读取操作:
数据格式 | 涉及库 |
---|---|
txt | - |
xlsx | pandas |
docx | python-docx,pandoc |
PyPDF2,pdfplumber,ocrmypdf | |
ppt | Unstructured |
其中doc可以转换至docx,xls转换至xlsx等进行读取,较为复杂的格式为PDF,较为完美的读取PDF格式的文本内容,能过过滤掉页眉页脚等影响文本连续性的内容,同时防止读取乱码,缺失与重复;同时,PDF的读取还会涉及单双栏文档的问题,根据我们测试的结果来看,使用paddleOCR读取是效果最好的,但是也还是不能避免少量问题。但是,wps有官方转docx的工具,adobe有解析PDF,提取内容的API供访问。
储存格式
存储成什么格式没有什么固定的要求,也没有好坏之分,为的是方便后续的进一步处理与使用。储存的格式一定要有这几点:
- 唯一性
- 有效文本统一性
唯一性是指每一个文档需要相互独立,能够通过一定的方式找到,比如构建唯一ID,在查找时较为方便。
有效文本统一性是指不同的来源的文档,在进行存储读取时,要统一格式,比如文档的主体文本,都使用text字典进行保存,其他的信息都使用meta字典建立新字典保存,这样虽然不同来源不同格式的文档解析出的信息不同,需要存储的信息也不同,但是我们存储读取文件的代码并不需要更新。
固定格式
为了后续更好的对数据进行完整的处理,需要对不同来源的数据进行固定位置,同时对不同来源的数据设置唯一的ID编码,方便后续文件数量扩大所带来的影响。
我们所设置的标准的保存格式为:
标准格式
1 | { |
文本清洗(规则)
文档分类
文档分类
文档分类在针对训练数据分类中大体分为两类,质量分类与内容分类。质量分类指针对文档的格式,以及是否有乱码进行分类,内容分类则是对内容是否有意义,或者内容的倾向进行分类。
我们想为你做文档分类一些例子,从而让你快速上手,找到适合你文档分类的方法。下面我们将会使用fasttext方法训练一个文本格式二分类模型用于剔除含有乱码的文档;以及我们将会使用零样本分类的方法,给予一个内容分类的例子;当然文本聚类我们也将分别给予kmeans聚类,层次聚类等例子。我们无法告诉你哪种方法适合你,只能给予你建议与参考。
自定义fasttext分类
fasttext是Facebook于2016年开源的一个词向量计算和文本分类工具,在学术上没有太大的创新,主要的优点就是快,在处理大规模数据分类时,能够做到近似深度神经网络的效果。这里我们就简要说明fasttext的原理就是将整篇文档的词及n-gram向量叠加平均得到文档向量,然后使用文档向量做softmax多分类。这中间涉及到两个技巧:字符级n-gram特征的引入以及分层Softmax分类。
Bert分类
使用Bert模型进行分类任务是当下数据分类工作中,标准简单的方法,但是Bert分类在针对具体任务时,需要准备训练数据集。人工标准或者其他方法选择数据集后,通过模型训练后进行推理。通过我们的测试,在对外贸数据做二分类任务上,大数据协助下载的外贸数据与通用领域数据构造1:1训练集,训练出的二分类效果比fasttext的效果要稍好,不过处理速度上相比于fasttext则要慢上很多。
集成分类
集成分类是针对样本内容分类所提出的,使用Zero shot方法分类,避免人工标注消耗。我们使用sentence-transformer官方所提供的两个多语言模型与MTEB排行榜上最优的中英模型相结合。根据我们在分类,召回,生成不同方法间的测试,最终我们选择多类别召回方式,在对三个不同模型所召回的类目中,通过频率与相关性排序,选择得分最高的标签给予样本数据。该方法的优势,就是通用性能强,修改标签数量与内容,模型不需要重新训练对齐。
Lumix-Document
LLM大语言模型所需要的文本处理
好久不见
好久没有冒泡,分享一些图片以及聊聊天
Weekend(23/02/28)
周末分享