文|庞德公
编辑|郭嘉
David Miller表示该模型的目标很明确:弥合尖端 AI 研究和实际应用之间的差距。他认识到,许多现有 NLP模型需要大量的计算资源,并且通常局限于专有系统,从而限制了它们的可访问性。作为回应,WordLlama被设计为既轻量级又高效,使更广泛的用户能够在不牺牲质量的情况下将高性能 NLP 集成到他们的工作流程中。
它在基准测试中优于GloVe 300d等流行的单词模型,同时大小明显更小(默认模型为16MB vs >2GB)。重要的是它能根据实际生产的需要灵活截断Token的嵌入维度,有点类似“俄罗斯套娃模式”。最大的模型 (1024维) 可以截断为 64、128、256 或 512维度使用。
它支持二进制嵌入模型以加快计算速度,在CPU上面也是能够快速运行,WordLlama 非常适合轻量级 NLP 任务,例如训练 sklearn 分类器、执行语义匹配、重复数据删除、排名和聚类。它非常适合创建 LLM 输出评估器。因为它的紧凑设计,任何人可以在短短几个小时内在消费类GPU 上训练模型。它的速度和多功能性使其成为探索性分析和各类应用的绝佳助手。
上图WL在64/128/256/512/1024等不同维度在不同任务上与其他同类的对比。WordLlama支持多语言,可以跨各种语言进行训练和部署。它处理多种语言的能力扩大了它在客户服务、内容生成和许多其他需要多功能语言功能领域的应用潜力。下面为它的实例代码,轻巧便用。
from wordllama import WordLlama
# 加载默认的 WordLlama 模型
wl = WordLlama.load()
# 计算两个句子之间的相似度
similarity_score = wl.similarity("我去了车那里", "我去了当铺")
print(similarity_score) # 输出: 0.06641249096796882
# 根据与查询的相似度对文档进行排名
query = "我去了车那里"
candidates = ["我去了公园", "我去了商店", "我去了卡车", "我去了车辆"]
ranked_docs = wl.rank(query, candidates)
print(ranked_docs)
# 输出:
# [
# ('我去了车辆', 0.7441646856486314),
# ('我去了卡车', 0.2832691551894259),
# ('我去了商店', 0.19732814982305436),
# ('我去了公园', 0.15101404519322253)
# ]
# 其他推理方法
# 模糊去重
wl.deduplicate(candidates, threshold=0.8)
# 使用 kmeans/kmeans++ 初始化进行标签
wl.cluster(docs, k=5, max_iterations=100, tolerance=1e-4)
# 根据查询过滤候选项
wl.filter(query, candidates, threshold=0.3)
# 根据查询返回前k 个字符串
wl.topk(query, candidates, k=3)