AI学习记录 - 本地知识库实现的相关知识

在公司内部实现了个知识库,但这里只介绍在实现知识库的过程中用到的知识。

1、分词器

先分词,中文可以使用jieba分词
在这里插入图片描述

2、构造数据集

将词汇向量化是自然语言处理中的重要任务,它可以将文本数据转化为计算机能够理解和处理的向量形式。以下是一些常用的词汇向量化方法:

One-Hot 编码: 这是最简单的向量化方法之一。对于每个词汇,创建一个由 0 和 1 组成的向量,其中向量的长度等于词汇表的大小,而对应词汇的位置置为 1,其他位置为 0。这种方法简单,但无法捕捉词汇之间的语义关系。
词嵌入(Word Embeddings): 词嵌入是一种将词汇映射到连续向量空间的方法,能够捕捉词汇之间的语义关系。Word2Vec、GloVe 和 FastText 等模型可以生成这种词嵌入。这些向量表示可以通过预训练模型获取,也可以在特定任务上进行微调。

BERT(Bidirectional Encoder Representations from Transformers): BERT 是一种预训练的语言模型,它能够生成上下文感知的词汇表示。你可以使用 BERT 模型或其变体来为词汇生成向量,这些向量会考虑词汇在上下文中的含义。
Transformer 编码器输出: 如果你有一个训练有素的 Transformer 编码器(如 BERT、GPT 等),你可以将文本输入编码器,然后使用编码器的输出作为文本的向量表示。

如果目标词汇是 “apple”,上下文是 [“juicy”, “fruit”],那么训练样本可以是 (“apple”, “juicy”) 和 (“apple”, “fruit”)。

3、利用神经网络训练词向量

在使用word2vec将词向量传入神经网络训练的时候,词向量会发生改变,神经网络的权重也会发生改变。

使用Word2Vec预训练的词向量作为初始输入,然后将它们传入神经网络进行进一步的训练,通常会涉及两个部分的权重更新:词向量权重和神经网络权重。

词向量权重更新: 当使用预训练的Word2Vec词向量作为初始输入时,这些词向量本身可以被看作是一种初始的表示。在训练过程中,这些词向量也会发生微小的调整,以更好地适应特定任务。这种微小的调整有时被称为“微调”。这意味着,预训练的词向量可能会在训练期间进行轻微的优化,以更好地捕捉语义信息和任务特定的上下文。
神经网络权重更新: 神经网络的权重包括各种层(例如,全连接层、卷积层等)的权重以及可能的偏置项。当将预训练的词向量传入神经网络进行训练时,神经网络的权重会在反向传播的过程中进行更新,以使网络能够适应特定的任务。这些权重的更新取决于损失函数、优化算法(如随机梯度下降或其变体)、学习率等。

词向量分别是4个,假设a和b相似度为0.8,0.8是人为定义的,假设a=[0.2, 0.3, 0.4, 0.5],b=[0.1,0.9,0.6,0.5]
那数据集应该是[[0.2, 0.3, 0.4, 0.5],[0.1,0.9,0.6,0.5],0.8],所以我们的神经网络应该如下:
在这里插入图片描述

训练好的词向量
打印词汇表中的dirty对应的向量
在这里插入图片描述

4、怎么求两个词向量的相似度

假如有两个词向量,a=[0.2, 0.3, 0.4, 0.5],b=[0.1,0.9,0.6,0.5]
在这里插入图片描述

5、词向量通过什么方法组成段落向量

词向量 通过一定算法组成 句向量
句向量 通过一定算法组成 段落向量
段落向量 通过一定算法组成 文章向量

每一步的算法都可以使用如下算法:
1、求平均值或加权平均值: 可以对段落中的所有句子向量进行平均或加权平均,得到段落向量。这是一种简单的方法,但可能无法很好地处理句子之间的关系。
2、循环神经网络 (RNN) 或 Transformer 编码器: 类似于生成句子向量的方式,可以使用RNN或Transformer编码器来处理句子向量序列,生成一个表示整个段落的向量。
3、层次化注意力: 可以使用注意力机制来捕捉段落内句子之间的关系。例如,可以使用自注意力机制来为句子赋予不同的权重,然后加权平均句子向量以生成段落向量。
4、递归神经网络 (Recursive Neural Network): 这种神经网络结构允许在树状结构中捕捉句子之间的层次关系,从而生成段落向量。
5、文档级预训练模型: 一些预训练模型(如DocBERT、Longformer等)专门设计用于生成文档级别的嵌入。这些模型可以直接用于生成段落向量。

上面提到的算法当中,我举例一个最简单的算法,就是直接把向量相加.
在这里插入图片描述

7、使用词向量实现对文章分类的简单功能

在这里插入图片描述

假设我们已经拥有了所有水果词汇的向量,我们可以对文章进行分类,分类的简单方式如下
假设将所有红色向量加起来,得到了一个粗红色的向量,我们将红色的向量在我们的分类库里面查找,找到最相似分类红色粗线,水果分类是蓝色粗线,根据余弦相似度计算红色粗线和蓝色粗线,证明我们这篇文章是关于水果的,而不是蔬菜的。
在这里插入图片描述
上面的通过关键词的向量相加,能够提取的信息只是一篇文章的相关关键词的数量信息,但是无法提取一篇文章的关键词的顺序信息。假设有向量a,b,c,他们之间相加的先后顺序不影响最终结果,如a + b + c = b + a + c = c + a + b。所以假设有两篇文章,一篇讲的是男生喜欢女生的情感心理活动,一篇讲的是女生喜欢男生的情感心理活动。关键词“男生”“喜欢”“女生”,男生喜欢女生 和 女生喜欢男生 是不一样的,所以这种相加方式无法区分出这种顺序特征,所以可以利用一些更加复杂的算法是生成,复杂的算法代表了更加耗费训练时间。

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

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

相关文章

在react中如何计算本地存储体积

1.定义useLocalStorageSize钩子函数 // 计算localStorage大小 function useLocalStorageSize() {const [size, setSize] useState(0);useEffect(() > {const calculateSize () > {let totalSize 0;for (let key in localStorage) {//过滤掉继承自原型链的属性if (loc…

抄作业-跟着《React通关秘籍》捣鼓React-playground-上集

文章目录 前言1. 搭建react 开发环境2、react hooks 知识3. 目标:跟着小册实现 react-playground3.1 整体布局初始化项目使用Alloment 来实现左右分屏的拖拉功能 3.2 代码编辑器Monaco Editor 3.3 实现了多文件的切换用 useContext 来共享数据。优化 tab的样式&…

扫雷游戏小程序

目录 一.文件 1.头文件 2.源文件 二.游戏界面和执行(test.c) 三.函数实现(void game部分,源文件game.c) 1.定义雷二维数组和展示二维数组 2.初始化地雷数组 3.初始化显示的数组 4.显示当前的情况 5.随机放置地雷 6.排雷 ps:深度优先遍历数组 四.结束 一.文件 1.头…

《Single-Stage Extensive Semantic Fusion for multi-modal sarcasm detection》

系列论文研读目录 文章目录 系列论文研读目录文章题目含义ABSTRACTKeywords1. Introduction2. Related work3. Method3.1. Multi-modal projection 多模态投影3.2. Extensive Semantic Fusion Multiway Transformer 可拓语义融合多路Transformer3.3. Multi-objective optimizat…

LeetCode 热题 HOT 100 (011/100)【宇宙最简单版】

【图论】No. 0200 岛屿数量 【中等】👉力扣对应题目指路 希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&#xf…

DjangoRF-10-过滤-django-filter

1、安装pip install django-filter https://pypi.org/ 搜索django-filter基础用法 2、进行配置 3、进行内容调试。 4、如果碰到没有关联的字段。interfaces和projects没有直接关联字段,但是interface和module有关联,而且module和projects关联&#x…

linux下使用yum安装mysql

本文使用常规方式手动安装mysql 第一步 下载mysql的repo源 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm第二步 安装mysql-community-release-el7-5.noarch.rpm包 rpm -ivh mysql-community-release-el7-5.noarch.rpm第三步 安装mysql-server yum -y…

Esp_server 安卓嵌入壳子,原创! 2024/7/28 20:58

用到的软件: uni-app 思路: 让用户感觉是,一个完整的程序.实际上只是一个类浏览器壳子.轻便小巧. 由于是第一次用uni-app开发类软件,所以前前后后耗费7小时! 隔行如隔山,不是白讲的. 软件界面: 软件功能: 简化输入: 输入ip地址,例:http:// www.baidu.com 完整网址 前面…

Javaer 5分钟入门 Golang

文章目录 前言一个 go 文件长啥样?Go 语言的变量变量类型变量声明 Go 语言的函数&方法Go 语言没有的概念访问修饰符面向对象模型异常处理机制 Go 语言高效简洁的并发编程总结 前言 这两年主流的编程语言 Golang,想必大家或多或少都接触过。云原生领…

使用 Docker Compose 部署 RabbitMQ 的一些经验与踩坑记录

前言 RabbitMQ 是一个功能强大的开源消息队列系统,它实现了高效的消息通信和异步处理。 本文主要介绍其基于 Docker-Compose 的部署安装和一些使用的经验。 特点 成熟,稳定消息持久化灵活的消息路由高性能,高可用性,可扩展性高支…

【PYTHON】多进程运行示例含共享数据

运行结果 Python多进程调用示例 import multiprocessing import time import os import sys# 注册多个函数用于不同进程分别调用 def testcase0():time.sleep(1)return "case0_"get_time()def testcase1(timestamp):return "case1_"timestampdef testcase…

Python | TypeError: ‘float’ object is not subscriptable

Python | TypeError: ‘float’ object is not subscriptable 在Python编程中,遇到“TypeError: ‘float’ object is not subscriptable”这一错误通常意味着你尝试对浮点数(float)使用了下标访问(如数组或列表那样的访问方式&a…

Mindspore框架循环神经网络RNN模型实现情感分类|(四)损失函数与优化器

Mindspore框架循环神经网络RNN模型实现情感分类 Mindspore框架循环神经网络RNN模型实现情感分类|(一)IMDB影评数据集准备 Mindspore框架循环神经网络RNN模型实现情感分类|(二)预训练词向量 Mindspore框架循环神经网络RNN模型实现…

探索 Blockly:自定义积木实例

3.实例 3.1.基础块 无输入 , 无输出 3.1.1.json var textOneJson {"type": "sql_test_text_one","message0": " one ","colour": 30,"tooltip": 无输入 , 无输出 };javascriptGenerator.forBlock[sql_test_te…

数据结构:二叉树(堆)的顺序存储

文章目录 1. 树1.1 树的概念和结构1.2 树的相关术语 2. 二叉树2.1 二叉树的概念和结构2.2 二叉树的特点2.3 特殊的二叉树2.3.1 满二叉树2.3.2 完全二叉树 2.4 二叉树的性质 3. 实现顺序结构二叉树3.1 堆的概念和结构3.2 初始化3.3 销毁3.4 插入数据3.5 向上调整算法3.6 删除数据…

【二叉树】—— 算法题

一、单值二叉树 题目要求:判断二叉树是不是单值二叉树(就是所以节点的值都相等)。 思路: 利用二叉树的递归思想,判断每一个节点值与其左右子节点的值是否相等,如果遇到空节点,就返回true&#…

醒醒,别睡了...讲《数据分析pandas库》了—/—<7>

一、 1、处理缺失值 1.1 认识缺失值 系统默认的缺失值 None 和 np. nan datapd.Series([3,4,np.nan,1,5,None]) dfpd.DataFrame([[1,2,None],[4,np.nan,6],[5,6,7]]) 1.2 缺失值查看 直接调用info() 方法就会返回每一列的缺失情况。 dfpd.DataFrame([[1,2,np.nan],[4,np.n…

在Linux中,MySQL备份与恢复

随着自动化办公与电子商务的不断发展,企业对于信息系统的依赖性越来越高,而数据库在信息系统中担任着非常重要的角色。尤其一些对数据可靠性要求非常高的行业,如银行、证券、电信等,如果发生意外宕机或数据丢失,其损失是非常严重的…

[ACTF2020 新生赛]Upload1

打开靶机,发现什么都没有 查看源码发现有个表单,不过高度为0,所以被隐藏了,我们直接找打css文件,清空(也可以设置原始高度) 然后提交木马脚本,直接提交PHP不通过 修改为phtml&#x…

Java | Leetcode Java题解之第299题猜数字游戏

题目&#xff1a; 题解&#xff1a; class Solution {public String getHint(String secret, String guess) {int bulls 0;int[] cntS new int[10];int[] cntG new int[10];for (int i 0; i < secret.length(); i) {if (secret.charAt(i) guess.charAt(i)) {bulls;} e…