Meerkat 项目介绍
Meerkat 是一个开源的 Python 库,旨在帮助用户可视化、探索和标注任何类型的数据集,尤其是在处理非结构化数据(如自由文本、PDF、图像、视频)时,与机器学习模型协同工作。
为什么选择 Meerkat?
Meerkat 提供了一种交互式的数据查看方式,让用户可以轻松处理他们的数据。以下是 Meerkat 的设计原则和功能特点:
低开销
用户可以用四行 Python 代码开始与任何数据集的交互:
- 支持无拷贝集成常用的数据抽象,如 Pandas、Arrow、HF Datasets、Ibis、SQL。
- 限制数据移动,让用户在数据存储的位置上直接进行操作,无需上传至外部数据库或重格式化。
import meerkat as mk
df = mk.from_csv("paintings.csv")
df["image"] = mk.files("image_url")
df
多样的数据类型
在 Meerkat 界面中,几乎可以可视化和标注任何数据类型:文本、图像、音频、视频、MRI 扫描、PDF、HTML、JSON。
智能用户界面
Meerkat 使得嵌入机器学习模型(如 LLMs)到用户界面变得简单,从而实现如搜索、分组、自动完成功能:
df["embedding"] = mk.embed(df["img"], engine="clip")
match = mk.gui.Match(df, against="embedding", engine="clip")
sorted_df = mk.sort(df, by=match.criterion.name, ascending=False)
gallery = mk.gui.Gallery(sorted_df)
mk.gui.html.div([match, gallery])
声明式设计,灵活可定制
类似 Seaborn 的声明式设计,同时 Meerkat 的可视化组件是可组合和定制的,可以创建新的界面组件。
plot = mk.gui.plotly.Scatter(df=plot_df, x="umap_1", y="umap_2",)
@mk.gui.reactive
def filter(selected: list, df: mk.DataFrame):
return df[df.primary_key.isin(selected)]
filtered_df = filter(plot.selected, plot_df)
table = mk.gui.Table(filtered_df, classes="h-full")
mk.gui.html.flex([plot, table], classes="h-[600px]")
Meerkat 的适用场景
- 探索性分析非结构化数据类型。
- 检查大规模语言模型(如 GPT-3)的行为。
- 识别机器学习模型的系统性错误。
- 快速标记验证数据。
Meerkat 可能不适用的场景
- 仅处理结构化数据时,如数值和类别变量,常用的数据可视化库(如 Seaborn、Matplotlib)可能更合适。
- 制作简单机器学习模型演示时(单一输入/输出,聊天机器人),其他工具(如 Gradio)可能更合适。
- 需要手动标记成千上万的数据点时,专门的数据标注工具(如 LabelStudio)可能更合适。
关于 Meerkat
Meerkat 项目由斯坦福大学 Hazy Research 实验室的机器学习博士生开发,他们致力于打造一个可以轻松处理非结构化数据的未来。如果希望将 Meerkat 应用于项目、公司,或者有任何问题,可以联系:kgoel [at] cs [dot] stanford [dot] edu, eyuboglu [at] stanford [dot] edu, and arjundd [at] stanford [dot] edu。