FastText 和 Faiss 的初探了解

概览

大模型目前已经是如火如荼的程度,各个大厂都有推出面向大众的基础大模型,同时诸多行业也有在训练专有大模型,而大模型的发展由来却是经过多年从文本检索生成、深度学习、自然语言处理,在Transformer架构出来后,才有了爆发性的发展,今天我们来探索使用下文本解析、词向量方向的事情!


语言模型的演进之路

基于概率的词预测—》 基于向量—》神经网络–》编码解码器架构—》注意力机制—》Transformer

介绍

  • FastText:由Facebook开源,用于高效学习词语表示和句子分类的组件库。
  • Faiss:由Facebook开源的一个向量数据库,支持开发人员快速搜索彼此相似的多媒体文档的嵌入。它解决了针对基于哈希的搜索进行优化的传统查询搜索引擎的局限性,并提供了更具可扩展性的相似性搜索功能。

FastText

Install

git clone https://github.com/facebookresearch/fastText.git
$ cd fastText
$ make

这将为所有类以及主二进制文件生成目标文件fasttext.
在这里插入图片描述

文本分类

文本分类的目标是将文档(例如电子邮件、帖子、短信、产品评论等)分配到一个或多个类别。这些类别可以是评论分数、垃圾邮件与非垃圾邮件,或文档的输入语言。如今,构建此类分类器的主要方法是机器学习,即从示例中学习分类规则。为了构建此类分类器,我们需要标记数据,它由文档及其相应的类别(或标签或标签)组成。

1、准备待训练的数据集

https://dl.fbaipublicfiles.com/fasttext/data/cooking.stackexchange.tar.gz

__label__sauce __label__cheese How much does potato starch affect a cheese sauce recipe?
__label__food-safety __label__acidity Dangerous pathogens capable of growing in acidic environments
__label__cast-iron __label__stove How do I cover up the white spots on my cast iron stove?
__label__restaurant Michelin Three Star Restaurant; but if the chef is not there
__label__knife-skills __label__dicing Without knife skills, how can I quickly and accurately dice vegetables?
__label__storage-method __label__equipment __label__bread What's the purpose of a bread box?
__label__baking __label__food-safety __label__substitutions __label__peanuts how to seperate peanut oil from roasted peanuts at home?
__label__chocolate American equivalent for British chocolate terms
__label__baking __label__oven __label__convection Fan bake vs bake
__label__sauce __label__storage-lifetime __label__acidity __label__mayonnaise Regulation and balancing of readymade packed mayonnaise and other sauces
__label__tea What kind of tea do you boil for 45minutes?
__label__baking __label__baking-powder __label__baking-soda __label__leavening How long can batter sit before chemical leaveners lose their power?
__label__food-safety __label__soup Can I RE-freeze chicken soup after it has thawed?
__label__sous-vide __label__vacuum Ziploc vacuumed bags expand in sous vide
__label__baking __label__substitutions __label__syrup What can I use instead of corn syrup?
__label__vegan __label__almonds __label__almond-milk Does soaking almonds have the same effect as blanching and removing the skins when making almond milk?
__label__baking __label__cake __label__soda Cake sinks in the middle when baking. Only happens when I make a Coca-Cola Cake
__label__baking Which plastic wrap is okay for oven use?
__label__tea Can I dissolve sugar first before steeping tea?
__label__food-safety __label__salmon Is it safe to eat food that was heated in plastic wrap to the point the plastic wrap flamed?
__label__flavor __label__spices __label__chemistry Flavor and Chemical Composition of Thyme
__label__equipment What can I use as a manual hard cheese slicer?
__label__flour __label__milling Are stone or metal grinding wheels better for flour?
__label__beans Do fava beans need to cook longer than other kinds of beans?
__label__baking __label__bread __label__kneading Kneading Bread After Rising
__label__beef __label__roast __label__gravy __label__roast-beef Extraordinary Beef Gravy?
__label__baking __label__bread __label__crust How to heat up already baked french bread in oven to get a crispy crust
__label__chocolate Is there a difference in appearance between semi and unsweetened chocolate?
__label__food-science __label__marinade __label__brining If salt dehydrates the meat, then why would brining make it more juicy as a whole?
__label__cookies __label__texture __label__american-cuisine How long after baking do American chewy cookies get their normal texture?
__label__fruit __label__alcohol __label__liqueur Is cooking with fruit liqueur comparable to cooking with fruit juice?
__label__bread __label__cheese __label__jelly __label__brie Suggestions for Brie + Bread + Preserves
__label__soup __label__texture __label__standards What is the correct consistency of a cream soup?
__label__food-science __label__tea Making tea - milk first or tea first
__label__food-safety __label__salt Sea Salt and Mercury
__label__cinnamon Cinnamon Thickening
__label__sauce __label__flavor __label__syrup Basic carrier sauce/syrup for different sweet flavors?
__label__roasting __label__eggplant What is the 'cleanest' way to roast eggplants indoor?
__label__rice Cooking and storing rice for a whole week
__label__dehydrating dehydrating puree food
__label__soup __label__canning __label__food-processing In industrially produced soup, how does each can contain equal parts of all ingredients?
__label__flavor __label__microwave __label__popcorn How Is Microwave Popcorn Flavoured?
__label__culinary-uses __label__vegetables __label__eggplant What can I do with under-ripe eggplant?
__label__water __label__cocktails __label__whiskey Whiskey and Water
__label__meat __label__ham Wet Cooked Ham Slices
__label__onions __label__deep-frying __label__restaurant-mimicry Beer Battered Onion Rings -- what makes them look shiny?
__label__wok Determining a wok's material
__label__food-safety __label__oil Is cloudy-looking used peanut oil safe?
__label__oil __label__cleaning __label__coconut __label__olive-oil __label__maintenance To finely spray a thin layer of warm liquid Coconut Oil?
__label__candy __label__fudge Why Do We 'Simmer' Fudge Instead of 'Boiling' it?

2、训练数据

./fasttext supervised -input cooking.train -output model_cooking

在这里插入图片描述

3、查看训练结果

在这里插入图片描述

  • model_cooking.bin: 训练好的分类器文件
  • model_cooking.vec: 这个里面放的每个单词及其向量

4、简单测试下

在这里插入图片描述
说明:
第一个问题问什么烤盘适合做香蕉面包,关联词是 baking 有关联。
第一个问题问为什么不把刀放进洗碗机,关联词是 食物安全 无关联。

5、验证一下训练的结果

在这里插入图片描述
上面显示了默认1和设置5时的召回率。

6、一些提高准确率和召回率的方法

  • 数据量:增加训练学习的样本数据量
  • 预处理:标点符号处理、大小写统一减少词汇量
  • 更多周期和更大的学习率:增加学习周期,多学习几次。
  • 单词 n-gram:通过使用二元词组而不是一元词组来提高模型的性能。

重新进行训练与验证,准确率提高到了13%。
在这里插入图片描述

Word2Vec

通过对一系列的文本进行训练,就能得到每个词的多维向量,比如小明和小刚总是和‘男性’一起出现,那小明和小刚的向量维度中就可能有几个维度是和性别有关。

举个例子,就像用RGB数字来描述颜色,这个世界上每个词都可以用向量来表达它,向量维度越多越准确。

  • skipgram: 通过邻近单词来学习预测目标单词。
  • cbow: 根据上下文来预测目标单词。

1、使用skipgram模式生成词向量

在这里插入图片描述

2、查看生成结果

在这里插入图片描述

3、词搜索

在这里插入图片描述

Faiss

通过并行搜索(GPU)、

其他

1、什么是二元词组?

首先“unigram” 是指单个不可分割的单元或标记,通常用作模型的输入。例如,unigram 可以是单词或字母,具体取决于模型。在 fastText 中,我们在单词级别工作,因此 unigram 就是单词。
比如下面这句话,

我爱吃家乡富平县的大红苹果

“unigram’拆分如下

‘我’、‘爱’、‘吃’、‘家乡’、‘富平县’、‘的’、‘大’、‘红’、‘苹果’

二元词组拆分如下

‘我爱’、‘爱吃’、‘吃家乡’、‘家乡富平县’、‘富平县的’、‘的大’、‘大红’、‘红苹果’

计算每个二元词组在一个大训练集中的出现概览,就能用概览去预测新的文本生成序列。

条目概览
我爱30%
我恨40%
我想30%

2、分层 softmax

建立一个二叉树,其叶子与标签相对应。每个中间节点都有一个经过训练的二元决策激活(例如 S 形),并预测我们应该向左还是向右。然后,输出单元的概率由从根到输出单元叶子的路径上中间节点的概率的乘积给出。

在 fastText 中,使用哈夫曼树,这样对于更频繁的输出,查找时间更快,因此输出的平均查找时间是最佳的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/52905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端基础知识+算法(一)

文章目录 算法二分查找条件注意方式基本原理左闭右闭正向写法 左闭右开正向写法 前端基础知识定时器及清除盒子垂直水平居中的方式垂直水平1.flex布局2.grid布局3.定位对于块级元素 解决高度塌陷的方式1.给父元素一个固定的高度2.给父元素添加属性 overflow: hidden;3.在子元素…

ip映射域名,一般用于mysql和redis的固定映射,方便快捷打包

举个例子 192.168.3.101mysql映射到mysql.smartlink.com 192.168.3.101redis redis.smartlink.com 要将IP地址映射到域名,可以通过几种方式实现,包括修改本地主机文件(仅适用于本地开发环境)、设置DNS解析(适用于生产环…

IDEA-调用Restful接口

告别Swagger3/Apifox/Postman Swagger3(丝袜哥) 地址:REST API Documentation Tool | Swagger UI简介:在java代码里面增加注解生成接口文档 在代码里面增加注解 RestController RequestMapping("api/v1/user") Api(ta…

Java外卖小程序管理系统

技术架构: springboot ssm mysql redis 有需要该项目的小伙伴可以添加我Q:598748873,备注:CSDN 功能描述: 商品管理:新增商品、所有商品 菜单管理:菜单管理、菜单分类 订单管理&#x…

<<编码>> 第 12 章 二进制加法器--8位加法器 示例电路

8 位加法器内部结构 info::操作说明 鼠标单击逻辑输入切换 0|1 状态 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/code-hlchs-examples/assets/circuit/code-hlchs-ch12-08-8-bit-adder-internal.txt 8 位加法器 info::操作说…

只要不逾期就行了吗?如何守护好你的“第二张身份证“!

在这个时代,信用记录已远远超越了金融交易的范畴,它如同一根无形的纽带,将我们生活的各个领域紧密相连。近闻有人甚至在步入婚姻殿堂前,也要细致核查对方的信用状况,毕竟,这关乎到共同生活的基石与未来幸福…

影刀RPA实战:自动化同步商品库存至各大电商平台(二)

在当今的电商世界中,多平台运营已成为常态。商家需要在多个电商平台上维护商品库存的一致性,以确保顾客体验的流畅性和库存管理的高效性。运营人员每天面临的问题,就是把公司的商品库存数据,间断性的同步到电商平台上,…

VMamba: Visual State Space Model 论文总结

题目:VMamba: Visual State Space Model(视觉状态空间模型) 论文:[2401.10166] VMamba: Visual State Space Model (arxiv.org) 源码:https://arxiv.org/pdf/2401.10166 (github.com) 目录 一、摘要 二、引言 三、方…

基于单片机的风机故障检测装置的设计与实现(论文+源码)

1 系统总体设计方案 通过对风机故障检测装置的设计与实现的需求、可行性进行分析,本设计风机故障检测装置的设计与实现的系统总体架构设计如图2-1所示,系统风机故障检测装置采用STM32F103单片机作为控制器,并通过DS18B20温度传感器、ACS712电…

【AI大模型】ChatGPT模型原理介绍(下)

目录 🍔 GPT-3介绍 1.1 GPT-3模型架构 1.2 GPT-3训练核心思想 1.3 GPT-3数据集 1.4 GPT-3模型的特点 1.5 GPT-3模型总结 🍔 ChatGPT介绍 2.1 ChatGPT原理 2.2 什么是强化学习 2.3 ChatGPT强化学习步骤 2.4 监督调优模型 2.5 训练奖励模型 2.…

[全网首发]怎么让国行版iPhone使用苹果Apple Intelligence

全文共分为两个部分:第一让苹果手机接入AI,第二是让苹果手机接入ChatGPT 4o功能。 一、国行版iPhone开通 Apple Intelligence教程 打破限制:让国行版苹果手机也能接入AI 此次发布会上,虽然国行 iPhone16 系列不支持 GPT-4o&…

爆改YOLOv8|使用MobileNetV4替换yolov8的Backbone

1,本文介绍 MobileNetV4 是最新的 MobileNet 系列模型,专为移动设备优化。它引入了通用反转瓶颈(UIB)和 Mobile MQA 注意力机制,提升了推理速度和效率。通过改进的神经网络架构搜索(NAS)和蒸馏…

什么是数据库回表,又该如何避免

目录 一. 回表的概念二. 回表的影响三. 解决方案1. 使用覆盖索引2. 合理选择索引列3. 避免选择不必要的列4. 分析和优化查询5. 定期更新统计信息6. 避免使用SELECT DISTINCT或GROUP BY7. 使用适当的数据库设计 数据库中的“回表”是指在查询操作中,当数据库需要访问…

【homebrew安装】踩坑爬坑教程

homebrew官网,有安装教程提示,但是在实际安装时,由于待下载的包的尺寸过大,本地git缓存尺寸、超时时间的限制,会报如下错误: error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly&#xf…

台风,也称为热带气旋,是一种在热带海洋上形成的强烈风暴系统。台风的形成需要满足以下几个条件:

台风,也称为热带气旋,是一种在热带海洋上形成的强烈风暴系统。台风的形成需要满足以下几个条件: 1. **温暖的海水**:台风通常在海面温度至少达到26.5C(79.7F)的海域形成,因为温暖的海水能够提供…

Gitlab实现多项目触发式自动CICD

工作中可能会遇到这种场景,存在上游项目A和下游项目B,项目B的功能依赖项目A(比如B负责日志解析,A是日志描述语言代码),这种相互依赖的项目更新流程一般如下: A项目更新,通知B项目开发…

Nature: 一种基于宏基因组序列空间生成无参考的蛋白质家族的计算方法

通过全局宏基因组学揭示功能性暗物质 Unraveling the functional dark matter through global metagenomics Article, 2023-10-11 Nature [IF: 64.8] DOI: https://doi.org/10.1038/s41586-023-06583-7 原文链接:https://www.nature.com/articles/s41586-023-06…

【C+继承】

继承 1.继承的概念及定义2.基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数5.继承与友元6.继承与静态成员7.复杂的菱形继承及菱形虚拟继承8.继承的总结和反思 1.继承的概念及定义 ->继承的概念 继承的本质:就是继承的父类的成员 ->继承的…

基于AutoDL部署langchain-chatchat-0.3.1实战

一、租用AutoDL云服务器,配置环境 1.1 配置AutoDL环境 注册好autodl账户之后,开始在上面租服务器,GPU我选择的是RTX4090*2,西北B区,基础镜像选择的是Pytorch-2.3.0-python-3.12(ubuntu22.04)-…

垃圾回收相关概念

12.1. System.gc()的理解 在默认情况下,通过system.gc()或者Runtime.getRuntime().gc() 的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。 然而System.gc() 调用附带一个免责声明&#x…