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解析(适用于生产环…

java enum code-label模式的使用方法

通常我们定义的枚举类都会有两个字段:code、label,然后我们有会需要两个方法: 1.根据code获得枚举实例对象:getByCode 2.根据code获得对应的label:getLabelByCode 当然可以在每个枚举类中实现这两个方法,…

【字幕】恋上数据结构与算法之019动态数组07打印数组

是吧?什么意思呢?你看啊我们刚刚已经加了三个东西了,我现在希望能够打印一下这个速度,希望能把它里面所有元素打出来,那我们试一下,看它默认是怎么打,这个时候我们右击你会发现它打出来长这样子…

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) 目录 一、摘要 二、引言 三、方…

ffmpeg硬件解码一般流程

流程 根据硬件名称,查询是否是支持的类型 const char *device_name "qsv"; //cuda enum AVHWDeviceType type av_hwdevice_find_type_by_name(device_name); if(type AV_HWDEVICE_TYPE_NONE) {//如果一个硬件类型是不支持的,打印所有支持…

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

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

unreal gpuscene

(1) TypeOffsetTable 是 Primitive Type 相同 Primitive 的结束偏移,不是开始偏移,第一个类型开始偏移是 0,第一个类型结束偏移,是第一个类型的个数 Source\Runtime\Renderer\Private\RendererScene.cpp FTypeOffsetTableEntry…

Vue中的防抖和节流是什么,它们的作用是什么?

在Vue.js中,防抖(debounce)和节流(throttle)是两种常用的性能优化技术,主要用于处理高频事件,如窗口滚动、窗口大小调整、键盘输入等。 **防抖(Debounce)**:…

【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.…

【60天备战软考高级系统架构设计师——第十九天:运维与服务管理——系统监控】

系统监控是确保IT基础设施和应用程序稳定高效运行的关键。架构师需要设计全面的监控体系来保障系统的可用性、性能和安全性。 系统监控类型 基础设施监控:监控服务器、网络设备、数据库等基础设施的状态,如CPU使用率、内存使用率、磁盘空间、网络流量等…

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

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

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

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

Mysql 面试题总结

1. Mysql 数据库,隔离级别有哪几个? 在 MySQL 数据库中,事务的隔离级别决定了一个事务在执行期间对其他事务可见的数据变化情况。MySQL 支持 SQL 标准定义的四种隔离级别,从低到高依次为: 读未提交(READ U…

在 PyTorch 中,除了 pad_sequence 还有哪些其他处理序列数据的函数?时间序列数据 预处理

在PyTorch中,除了pad_sequence之外,还有其他几个函数可以用来处理序列数据,特别是在准备数据以供循环神经网络(RNN)使用时。以下是一些常用的函数: 1. **pack_padded_sequence**:这个函数将填充…