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 中,使用哈夫曼树,这样对于更频繁的输出,查找时间更快,因此输出的平均查找时间是最佳的。
相关文章:
FastText 和 Faiss 的初探了解
概览 大模型目前已经是如火如荼的程度,各个大厂都有推出面向大众的基础大模型,同时诸多行业也有在训练专有大模型,而大模型的发展由来却是经过多年从文本检索生成、深度学习、自然语言处理,在Transformer架构出来后,才…...
微服务保护学习笔记(五)Sentinel授权规则、获取origin、自定义异常结果、规则持久化
文章目录 前言4 授权规则4.1 基本原理4.2 获取origin4.3 配置授权规则 5 自定义异常结果6 规则持久化 前言 微服务保护学习笔记(一)雪崩问题及解决方案、Sentinel介绍与安装 微服务保护学习笔记(二)簇点链路、流控操作、流控模式(关联、链路) 微服务保护学习笔记(三)流控效果(…...
YOLOv8目标检测模型——遥感小目标检测经验分享
小目标检测——YOLOV8 一、引言 背景介绍 (1)目标检测的重要性 目标检测在许多领域都具有极其重要的作用。在自动驾驶中,目标检测能够识别道路上的障碍物和行人,确保行车安全。在视频监控中,目标检测能够实时发现异…...
构建响应式 Web 应用:Vue.js 基础指南
构建响应式 Web 应用:Vue.js 基础指南 一 . Vue 的介绍1.1 介绍1.2 好处1.3 特点 二 . Vue 的快速入门2.1 案例 1 : 快速搭建 Vue 的运行环境 , 在 div 视图中获取 Vue 中的数据2.2 案例 2 : 点击按钮执行 vue 中的函数输出 vue 中 data 的数据2.3 小结 三 . Vue 常…...
计算机毕业设计选题推荐-在线投票系统-Java/Python项目实战
✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...
【C/C++】程序的构建(编译)过程概述
🦄个人主页:小米里的大麦-CSDN博客 🎏所属专栏:C_小米里的大麦的博客-CSDN博客 🎁代码托管:C: 探索C编程精髓,打造高效代码仓库 (gitee.com) ⚙️操作环境:Visual Studio 2022 目录 一、前言 二、预处理(Preprocessi…...
ElasticSearch-2-核心语法集群高可用实战-Week2
ES批量操作 1.批量获取文档数据 这里多个文档是指,批量操作多个文档,搜索查询文档将在之后的章节讲解 批量获取文档数据是通过_mget的API来实现的 (1)在URL中不指定index和type 请求方式:GET 请求地址:_mget 功能说明 &#…...
STM的CAN通信学习
显性电平:0 隐性电平:1 一、帧结构 1.帧类型 1)数据帧:发送设备主动发送数据(广播式) 2)请求帧:接收设备主动请求数据(请求式) 2.帧结构 1ÿ…...
【高等数学学习记录】函数
【高等数学&学习记录】函数 从事测绘工作多年,深刻感受到基础知识的重要及自身在这方面的短板。 为此,打算重温测绘工作所需基础知识。练好基本功,为测绘工作赋能。 1 知识点 1.1 函数 设数集 D ⊂ R D\subset R D⊂R,称映射…...
【springboot过ingress后无法获取X-Forwarded-For头信息】
springboot过ingress后无法获取X-Forwarded-For头信息 一、现象结论修改步骤ingressspringboot 排查流程本文参考 一、现象 项目使用spring boot 2.7.18,有个新需求是校验X-Forwarded-For头的所有来源ip合法性,线上环境出现取不到X-Forwarded-For头的问…...
表格标记<table>
一.表格标记、 1table:表格标记 2.caption:表单标题标记 3.tr:表格行标记 4.td:表格中数据单元格标记 5.th:标题单元格 table标记是表格中最外层标记,tr表示表格中的行标记,一对<tr>表示表格中的一行,在<tr>中可…...
Rust练手项目,写个有趣的小工具定时从一言网获取一段有趣的话并推送通知
Rust练手项目,写个有趣的小工具 代码 继续练习Rust, 写个小工具定时从一言网获取一段有趣的话并提示,如下 练习以下Rust点 并发编程 Mutex, Arc指针使用HTTP请求Windows Gui 代码 Cargo.toml [package] name "funny_word" edition "20…...
【隐私计算】Paillier半同态加密算法
一、何为同态加密(HE)? HE是一种特殊的加密方法,它允许直接对加密数据执行计算,如加法和乘法,而计算过程不会泄露原文的任何信息。计算的结果仍然是加密的,拥有密钥的用户对处理过的密文数据进…...
判断数字的奇偶[中秋快乐~]
题目描述 给定一个整数 n,编写程序判断数字 n 是奇数还是偶数,是奇数则输出 “odd”,偶数则输出 “even”。 输入格式 一行,一个整数 n。 输出格式 一行,如果 n 是奇数则输出 “odd”; 如果 nn 是偶数则输出 “even”。 样例…...
文件操作及重定向详解
1、linux下一切皆文件: 在linux中,一切皆文件是一个重要的概念,用于描述linux操作系统中所有资源和设备都以文件的形式进行访问和处理。 这个概念可以理解为,无论是硬盘上的文件、网卡、设备、进程等,都被抽象为文件的形式存在。在linux系统中,通…...
鸿蒙next json解析 ArkUI 带你玩转 arkts json解析
前言导读 相信很多同学再开发过程中都会遇到json解析的处理,不管是跟服务端交互 或者是读取本地的json 都会遇到json解析 那么正好今天有空正好讲一下鸿蒙next里面的json解析 JSON解析与生成 本模块提供了将JSON文本转换为JSON对应对象或值,以及将对象…...
东土科技加码芯片业务投资,携手神经元共建新型工业生态
为抢抓国产化芯片发展的重大机遇,东土科技决定进一步加大对神经元信息技术(成都)有限公司的投资。这一战略布局有利于东土科技鸿道Intewell工业操作系统与神经元公司芯片的深度协同,推动实现“信息技术、网络技术、控制技术、数字…...
指纹与指甲检测系统源码分享
指纹与指甲检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…...
C++3D迷宫
目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好,我叫这是我58。 程序 #include <iostream> using namespace std; void printmaze(char strmaze[5][5][5]) {cout << "-----" << endl;int i 0;int ia 0…...
跨界融合,GIS如何赋能游戏商业——以《黑神话:悟空》为例
在数字化时代,地理信息系统(GIS)技术正以其独特的空间分析和可视化能力,为游戏产业带来革命性的变革。《黑神话:悟空》作为中国首款3A级别的动作角色扮演游戏,不仅在游戏设计和技术上取得了突破,…...
八股文的终结:为什么2026年大厂面试开始大规模考察“内存安全”?
在2026年的北美IT求职市场中,底层系统开发(Infrastructure, Backend, Systems Engineering)岗位的技术面试逻辑正在经历一场深刻的底层范式转换。过去几年中,候选人凭借熟练背诵C虚函数表、STL底层源码剖析、以及各类设计模式等标…...
树莓派4B部署YOLOv5-Lite实战:从ONNX模型优化到实时检测性能调优
树莓派4B部署YOLOv5-Lite实战:从ONNX模型优化到实时检测性能调优 当目标检测遇上边缘计算,如何在仅有1.5GHz Cortex-A72处理器的树莓派4B上实现15FPS的实时推理?本文将揭示从模型压缩到硬件调优的全链路实战方案。不同于常规的部署教程&…...
Event-B精化实战(三)——分布式文件传输协议的奇偶校验优化
1. 从数值比较到奇偶校验的逻辑跃迁 第一次看到用奇偶性替代数值比较的方案时,我正坐在实验室调试一个分布式存储系统。当时系统里两个节点的指针同步逻辑已经让状态机复杂得像团乱麻,直到偶然翻到Event-B的奇偶校验优化案例,才恍然大悟——原…...
113. 强制使用 Letsencrypt ECDSA 和 DNS-01 续期挑战的默认 HTTPS Rancher 证书
Environment 环境 2.9 Situation 地理位置A self-signed default Rancher certificate is currently used and will be migrated to a stronger Let’s Encrypt ECDSA-386 certificate using the DNS-01 renewal challenge. 目前使用自签名默认的牧场证书,并将通过…...
OpenClaw+Qwen2.5-VL-7B:自动化生成图文报告
OpenClawQwen2.5-VL-7B:自动化生成图文报告 1. 为什么需要自动化图文报告 作为一名数据分析师,我每天都要处理大量数据并生成报告。传统的工作流程是:先整理Excel表格,然后手动截图插入PPT,最后撰写分析文字。这个过…...
《基于S7-1200PLC的全自动洗衣机控制系统设计》 一、设计任务书 1.任务描述
《基于S7-1200PLC的全自动洗衣机控制系统设计》 一、设计任务书 1.任务描述:洗衣机的进水和排水分别由进水电磁阀和排水电磁阀来执行 进水时,通过电控系统时进水阀打开,将水由外桶排到机外 洗涤正转、反转由洗涤电动机驱动波盘正、反转来实现…...
想了解欧拉好猫参数?这篇文章给你详细答案!
在当今新能源汽车市场蓬勃发展的背景下,欧拉好猫凭借其独特的魅力,在众多车型中脱颖而出,吸引了众多消费者的目光。以下将对欧拉好猫的相关参数及技术亮点进行详细解析。外观设计与尺寸欧拉好猫采用复古未来主义的设计风格,圆润的…...
解决PARSEC 3.0安装中的常见问题:从gcc缺失到native输入配置
解决PARSEC 3.0安装中的常见问题:从gcc缺失到native输入配置 在性能测试和基准评估领域,PARSEC 3.0作为一套广泛使用的多线程基准测试套件,为研究人员和开发者提供了评估系统性能的强大工具。然而,在实际安装和配置过程中&#x…...
Java AI模型加载失败?3步精准捕获TensorFlow/PyTorch JNI异常根源:附JFR+AsyncProfiler实战诊断模板
第一章:Java AI 推理调试Java 生态中集成 AI 模型(如 ONNX Runtime、Triton Java Client 或 Deep Java Library)进行推理时,调试常面临模型输入/输出张量不匹配、JNI 调用异常、内存泄漏及线程上下文丢失等典型问题。有效的调试需…...
基于CIEDE2000标准的AI图像分层技术:从像素聚类到设计效率革命
基于CIEDE2000标准的AI图像分层技术:从像素聚类到设计效率革命 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 在数字设计领域,将…...
