使用本地 LLM 作为零样本分类器

使用本地托管的 LLM 将杂乱的自由文本数据分类为有意义的类别的实用管道,无需标记的训练数据。使用本地 LLM 作为零样本分类器的帖子首先出现在走向数据科学上。

来源:走向数据科学

认为“群体非常聪明,而且往往比群体中最聪明的人更聪明。”他正在写有关决策的文章,但同样的原则也适用于分类:让足够多的人描述相同的现象,然后分类法开始出现,即使没有两个人以相同的方式表达它。挑战在于从噪声中提取信号。

我有几千行自由文本数据,并且需要这样做。每一行都是一个简短的自然语言注释,解释为什么自动安全发现不相关、使用哪些函数进行修复,或者要遵循哪些编码实践。一个人写道“这是测试代码,未部署在任何地方。”另一个人写道“非生产环境,可以放心忽略。”第三个人写道“仅在集成测试期间在 CI/CD 管道中运行。”这三个人的意思相同,但没有两个人共享超过一两个词。

分类法就在那里。我只需要合适的工具来提取它。传统的聚类和关键字匹配无法处理释义变化,因此我尝试了一些我没有看到太多讨论的东西:使用本地托管的 LLM 作为零样本分类器。这篇博文探讨了它的执行方式、工作原理以及自行使用和部署这些系统的一些技巧。

为什么传统聚类难以应对短自由文本

标准无监督聚类的工作原理是在某些特征空间中查找数学邻近度。对于长文档,这通常没问题。词频或嵌入向量中存在足够的信号以形成连贯的组。但简短、语义密集的文本在一些特定方面打破了这些假设。

主题模型表面单词,而不是概念。潜在狄利克雷分配 (LDA) 及其变体查找单词共现模式。当您的语料库由单句注释组成时,单词共现信号太稀疏,无法形成有意义的主题。您会得到由“测试”或“代码”或“安全”定义的集群,而不是连贯的主题。

LLM 作为零样本分类器