通过可视化主题建模探索公共领域数据集
概述
在训练大型语言模型(LLM)之前如何探索信息?探索文本数据集以潜在地删除有偏差或不准确的内容是一项复杂的手动任务,需要大量时间、资源和良好实践。使用可视化主题建模和框架分析等技术有助于我们更好地理解数据集并创建新的元类别。我们使用主题建模软件包探索了一个包含法国图书的公共领域数据集。我们发现新类别能更好地表示内容,可视化有助于更好地理解信息,并且可以更快更好地进行数据对齐。
您可以在此空间中找到由 PleIAs 收集的 French-PD-Books 数据集的视觉表示。您可以在此 Google Colab 中重现此图。
目录
- 提升数据集透明度
- 1.1 训练数据存在哪些问题?
- 1.2 法国公共领域数据集:一个独特的公共领域数据集
- 1.3 法国图书杜威十进制分类法的局限性
- 创建语料库内容的新表示
- 2.1 语料库的主题建模
- 2.2 将新类别与杜威十进制类别进行比较
- 2.3 通过积极探索提升理解
- 探索数据中的偏差
- 结论
1. 提升数据集透明度
训练数据存在哪些问题?
在大型语言模型的世界里,信息量似乎与质量划等号。AI 模型创建者将他们用于训练模型的(私有)数据量作为衡量智能的指标。这种方法的局限性开始显现:杂乱数据导致的结果缺陷、来自私有数据的非法训练、训练集中的偏差、缺乏透明度以及大量计算对环境造成的破坏性影响,使得现状难以维持。对存在缺陷的模型进行去偏和纠正以使其符合社会价值观和新法规的成本急剧增加。
为了解决这些问题,人们开始强调模型所摄取的数据质量:高效清理数据集(Côté,2023)、通过微调对齐模型(Guo,2024)和创建合成数据(Li,2024)已成为创建更好的数据来训练或微调人工智能的方法。利用嵌入的二维表示的新方法也促进了我们对复杂数据的理解(McInnes,2018)。
本文展示了如何使用可视化主题建模和框架分析探索一个包含法国图书的公共领域数据集。然后,我们将新创建的类别与现有类别进行比较,展示了类别的改进。
法国公共领域数据集:一个独特的公共领域数据集
由 PleIAs 领导的一项新举措旨在训练基于公共领域数据的大型语言模型。为实现这一目标,他们发布了 French-PD-Books 数据集,该数据集最初由 Pierre-Carl Langlais 在 Benoît de Courson 和 Benjamin Azoulay 为 Gallicagram 整理的语料库基础上编译。它包含 289,000 册法国图书,涵盖从 1600 年到 20 世纪中叶(参见图 1)的法国国家图书馆藏书。这一独特的藏品包含文学、哲学、历史、政治、艺术等文本,代表了在训练数据透明度需求方面迈出的重要一步。
图1 - 数据集样本分布(10%)。
但要做到完全透明,不仅要公开语料库的**来源**,还要公开其**内容**。在训练和微调过程中,自主智能体学习一种特定的世界表征,并根据其摄取的特定内容获得基本知识和潜在的涌现能力(如推理)。控制模型的全球表征等同于理解它们所学习的价值观和知识。鉴于人工智能引发的各种问题(Birhane,2021),使模型与社会价值观对齐最近已成为下一个重大挑战(Wynn,2023)。
像 French-PD-Books 数据集这样的公共领域数据具有挑战性,因为它们来自不同的时间段(因为书籍进入公共领域需要等待数十年):因此,一些内容可能不相关或过时:例如,并非所有当时的科学思想都得以保留(这是一件好事),模型不应该学习这些特定内容。
法国图书杜威十进制分类法的局限性
理解数据集内容的第一种方法是查看现有的分类系统。18 世纪科学革命的一个关键特征是新的信息分类和标准化系统的出现。这种分类首先应用于生物学,并扩展到艺术和知识的所有领域。法国国家图书馆使用杜威十进制分类法 (DDC) 将图书分配到大类。该系统由美国图书馆员梅尔维尔·杜威于 1876 年创建,根据十个主要类别(图 2)为每本书或物品分配一个数字分类,这些类别后来又细分为子类别。该系统最初旨在帮助个人和图书馆员在密集的实体图书馆中快速查找信息。然而,在描述数据集中的内容、价值观和思想时,这个系统可以得到改进。
发现了四个问题
- 1- 有些类别在今天可能不再适用(**语言**类别过于模糊,仅在说外语稀有的世界中有意义)。
- 2- 类别不平衡:**文学**类别占图书总量的三分之一。
- 3- 文档只属于一个类别:从技术上讲,一本书可以属于无限多个类别(虽然不在数据库中,但《哈利波特》是不是既关于解谜,也关于巫师呢?)。
- 4- 图书归类到某个类别的理由不透明。
图2 - 顶级杜威十进制分类法中各类别图书数量。
图3 - 不同时期顶级杜威十进制分类法中图书的分布。
2. 创建语料库内容的新表示
语料库的主题建模
我们使用主题建模方法创建新类别,并使用二维可视化技术显示结果。我们使用 Bunkatopics 软件包,它为现有方法添加了高级可视化层。主题建模首先使用法国顶级嵌入器模型 Solon-embeddings-large-0.1 对文档进行嵌入。然后,我们通过在潜在空间中查找聚类来计算主题。主题本质上是与相同主题相关的文档组,这意味着它们共享共同的结构、共同的表达、共同的引用和共同的词语。我们选择 KMeans 来创建固定数量的主题(10 个),并将其与杜威十进制分类法进行比较。我们删除了一些异常值,并移除了两个主题之间的文档以避免两个聚类边界上的不确定性(一个文档可能侥幸落入其中一个聚类)。每个主题最初通过其更具体的术语进行总结(Grootendorst,2022)。然后我们手动注释聚类以使可视化更清晰。
!pip install bunkatopics # install the package
from datasets import load_dataset
dataset = load_dataset("bunkalab/French-PD-Books-title-sample")['train']
docs = list(dataset['title']) # 'docs' is a list of text [text1, text2, ..., textN]
from bunkatopics import Bunka
from langchain_community.embeddings import HuggingFaceEmbeddings
embedding_model = HuggingFaceEmbeddings(model_name="OrdalieTech/Solon-embeddings-large-0.1",
model_kwargs={"device": "cpu"},
encode_kwargs={"show_progress_bar": True})
bunka = Bunka(embedding_model=embedding_model, language='french') # You can
bunka.fit(docs) # fit bunka top documents
我们计算主题
>>> bunka.get_topics(n_clusters=10, name_length=5)# Specify the number of terms
然后我们显示地图
>>> bunka.visualize_topics(width=800, height=800, colorscale='Portland')
图4 - 主题地图。密度表示文档数量。虚线灰色区域围绕每个主题。主题标签位于每个主题区域的质心。
地图的结构(图4)显示,有两个集群与其他集群分离:**医学**和**艺术与收藏品**。**参考文献**集群位于地图的中央,因为它收集了可能与其他集群共享语义相似性(这可以是医生、历史人物、艺术家等的参考文献)的个体信息。
将新类别与杜威十进制类别进行比较
然后我们计算新旧类别相交的文档数量。新类别大小大致相同,因为 KMeans 将潜在空间分成大小相似的部分。
从这次比较中可以得出三点结论
- 新类别与旧类别有重叠,但不完全重叠。**医学**等新类别与包含医学专业书籍的**技术**类别持续重叠。**社会事务**类别则分布在不同的旧类别中。
- 其他新类别可以分布在许多不同的旧类别中:例如,新类别**社会事务**几乎平均分布在所有旧类别中,这突显了它在旧系统看来所包含书籍的多样性。
- 我们还能发现一些错误:新的**艺术与收藏品**类别与旧的文学类别重叠。虽然艺术目录是否属于法国文学有争议,但这肯定不是最好的分类方式。
图5 - 新类别(y轴)和DCC类别(x轴)之间的共同文档数量,按y轴归一化。
我们在此真正测试的是,旧的本体类别中有多少文档共享相似的语义结构。我们的结果与该陈述相悖,表明需要更好地表示数据的类别。
通过积极探索提升理解
透明度也意味着信息易于**人类认知**获取。如果信息被埋藏且难以找到,我们就很难谈论**透明度**。我们提供了新的界面来帮助人们快速直观地理解数据(Kodagoda,2013)。设计灵感来源于地形学,旨在帮助用户理解主题之间的距离概念(距离越近的主题含义越接近)。文档在每个聚类中也根据其特异性从高到低进行排序。我们的规则是高度特异的文档包含大量该聚类的特异性术语。
您可以在这里探索完整空间:https://huggingface.co/spaces/bunkalab/French-PD-Books-Exploration
3. 探索数据中的偏差
为了探索数据中的偏差,我们使用了框架分析文献中的工具(Kwak,2020)。例如,我们展示了数据如何在不同的监督维度中表示:**艺术与政治**、**未来与过去**以及**个人与社会**。当然,也可以选择任何其他连续体。当然,前提是这样的连续体存在(事实上,有些事物可以既是艺术又是政治,或者既指过去又指未来,但我们为了示例决定将它们分开)。我们计算了所有嵌入之间的余弦距离以及连续体之间的差异(Kozlowski,2019)。
我们还在中心添加了一个空心圆以消除误报。由于框架分析是基于轴名称和文档之间的语义相似性,并非所有相似性得分都相关:例如,余弦相似性为 0.3 并没有太大意义。为了使相似性具有显著性,我们手动设置了一个阈值。
# Change manually the name of axis to be displayed in the figure
manual_axis_name = {'y_top_name':'Arts',
'y_bottom_name':'Politics',
'x_left_name':'Indvidual',
'x_right_name':'Society & Groups'}
## Bourdieu Fig
bourdieu_fig = bunka.visualize_bourdieu(
llm=None, # Set to None if you don't need GenAI summarization
x_left_words=["c'est à propos d'un individu unique"], # original names are in French
x_right_words=["c'est à propos de la société"],
y_top_words=["c'est artistique"],
y_bottom_words=["c'est politique"],
height=1000,
width=1000,
clustering=False,
topic_n_clusters=12,
density=False,
convex_hull=True,
radius_size=0.3,
manual_axis_name = manual_axis_name,
label_size_ratio_clusters=80)
# Display the Bourdieu map
bourdieu_fig.show()
图6 - 不同连续体的框架分析。百分比表示两个类别相交的数据内容。
我们可以获得新的见解!我们发现关于**艺术**的数据更多地与独特的**个体**相关(与**社会**概念相比)(在这些连续体中占51.1%)(图6a),并且更多地与**过去**相关(在这些连续体中占66.4%)(图6b)。这主要是因为19世纪的艺术与古代相关联,并且创作者的名字通常包含在标题中。
通过这种方法,您可以理解您的数据并将其映射到受控维度。
结论
总之,我们使用可视化主题建模创建了新类别,从而更准确地了解数据,无论是主题内容还是可视化方式。沿特定监督轴进行的框架分析也揭示了关于数据的新见解。
如果您对透明度、主题建模和LLM感兴趣,请查看其他用例
- Bunkatopics软件包:https://github.com/charlesdedampierre/BunkaTopics?tab=readme-ov-file
- 关于可视化主题建模的Colab:https://colab.research.com/drive/11K5bKs4y6snEFEZhKFNuNVRRSAsq9b7p#scrollTo=uxQ5qCIVar1u
- 关于LLM数据集清洗的Colab:https://colab.research.google.com/drive/1KedB5FqJ62sF7Gb5qSsA5kbeTeJDw2Mo#scrollTo=-bEv2hrvakW4
- OASST2数据集摘要:https://huggingface.co/spaces/bunkalab/visualisation-oasst2
- 维基百科数据集:https://huggingface.co/spaces/bunkalab/wikipedia-en