【Python机器学习】NLP词频背后的含义——反馈及改进

news2024/11/16 1:20:52

之前学习的LSA方法都没有考虑文档之间的相似度信息,创建的主题对一组通用规则来说是最优的。在这些特征(主题)提取模型的无监督学习中,没有任何关于主题向量之间应该多么接近的数据。我们也不允许任何关于主题向量在哪里结束或者它们之间相关性如何的反馈。引导或者“习得型距离指标”是在降维和特征提取方面的最新进展。通过调整向聚类和嵌入算法报告的距离分数,我们可以控制自己的向量,从而让它们使一些代价函数最小化。通过这种方式,可以“强制”向量专注于我们感兴趣的信息内容的某个方面。

线性判别分析

下面是在一个标注好的短消息数据集上训练一个线性判别分析(LDA)模型。LDA的工作原理与LSA类似,但是它需要分类标签或其他分数才能找到高维空间中维度(词袋或TF-IDF向量中的词项)的最佳线性组合。LDA没有最大化新空间中所有向量之间的分离程度(方差),而是最大化了每个类质心向量之间的距离。

但是,这意味着必须通过给出样例(标注好的向量)来告诉LDA算法想对哪些主题建模。只有这样,算法才能计算出从高维空间到低维空间的最优转换。得到的低维向量的维数不能超过所能提供的类标签或分数的数量。

因为只需要训练一个“垃圾性”主题,下面看一维主题模型在垃圾短消息分类方面能达到多高的精确率:

from nlpia.data.loaders import get_data
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
from nltk.tokenize import casual_tokenize

sms=get_data('sms-spam')
index=['sms{}{}'.format(i,'!'*j) for (i,j) in zip(range(len(sms)),sms.spam)]
sms.index=index
tfidf=TfidfVectorizer(tokenizer=casual_tokenize)
tfidf_docs=tfidf.fit_transform(raw_documents=sms.text).toarray()
tfidf_docs=tfidf_docs-tfidf_docs.mean(axis=0)

lda=LDA(n_components=1)
lda=lda.fit(tfidf_docs,sms.spam)
sms['lda_spaminess']=lda.predict(tfidf_docs)
print(((sms.spam-sms.lda_spaminess)**2.0).sum()**0.5)
print((sms.spam==sms.lda_spaminess).sum())
print(len(sms))

可以看到,精确率为100%。在TF-IDF向量中有10000个词项,它可以“记住”答案。

下面做一些交叉验证:

from sklearn.model_selection import cross_val_score
lds=LDA(n_components=1)
scores=cross_val_score(lda,tfidf_docs,sms.spam,cv=5)
print('精确率:',scores.mean(),scores.std()*2)

可以看到,效果并不好。为了确保76%的精确率数值是正确的,下面保留1/3的数据集用于测试:

from sklearn.model_selection import train_test_split
X_train,X_text,y_train,y_test=train_test_split(tfidf_docs,sms.spam,test_size=0.33,random_state=271828)
lda=LDA(n_components=1)
lda.fit(X_train,y_train)

print(lda.score(X_text,y_test).round(3))

同样的,测试集的精确率也很低。因此,并不像是数据抽样做的不好,这是一个糟糕的过拟合模型。

下面看LSA和LDA结合起来是否有助于创建一个精确的、泛化能力强的模型,这样面对新的短消息时就不会出错:

import pandas as pd
from sklearn.decomposition import PCA
pca=PCA(n_components=16)
pca=pca.fit(tfidf_docs)
pca_topicvectors=pca.transform(tfidf_docs)
columns=['topic{}'.format(i) for i in range(pca.n_components)]
pca_topicvectors=pd.DataFrame(pca_topicvectors,columns=columns,index=index)
X_train,X_text,y_train,y_test=train_test_split(pca_topicvectors.values,sms.spam,test_size=0.3,random_state=271828)
lda=LDA(n_components=1)
lda.fit(X_train,y_train)
print(lda.score(X_text,y_test).round(3))
lda=LDA(n_components=1)
scores=cross_val_score(lda,pca_topicvectors,sms.spam,cv=10)
print('精确率:',scores.mean())

因此,通过使用LSA,我们可以刻画一个只有16个维度的短消息,并且仍然有足够的信息将它们分类为垃圾信息或非垃圾信息。低维模型不太可能过拟合,它应该有很好的泛化能力,并且能够对尚未看到的短消息或聊天信息进行分类。

在尝试所有这些语义分析之前,使用简单的LDA模型可以获得更高的精确率,这个新模型的优点是:现在可以在多于一个的维度上创建表示语句语义的向量。

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

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

相关文章

力扣刷题(复习版1)

文章目录 题目:最大重复子字符串题解 题目: 面试题 16.07. 最大数值题解 题目: 最大字符串配对数目题解 题目: 字符串中第二大的数字题解 题目: 统计最大组的数目题解 题目: 删除每行中的最大值题解 题目&a…

记录|Chart控件使用

目录 前言一、Series集合1.1 什么是Series1.2 IsValueShownAsLabel1.3 Points 二、ChartArea2.1 轴- Axes2.1.1 Title2.1.2 刻度下的Maximum、Minimum2.1.3 间隔- Interval2.1.4 网格刻度线 2.2 游标- CursorX/CursorYMajorGrid属性中的Enabled 更新时间 前言 参考视频&#xf…

七、库存管理——盘点业务

第一节 库存管理盘点 1、盘点的目的 答:是指通过定期或临时对库存商品的实际数量进行盘查、清点,然后掌握货物的流动情况(入库、出库、调拨、在库等),最后对仓库现有物品的实际数量与保管账上记录的数量相核对&…

Spring Boot集成Stripe快速入门demo

1.什么是Stripe? 一体化全球支付平台,开启收入增长引擎,针对不同规模业务打造的支付解决方案,满足从初创公司到跨国企业的多维度需求,助力全球范围内线上线下付款。 转化更多客户: 通过内置的优化功能、100 多种支付…

QT QGraphicsView实现预览图片显示缩略图功能

QT QGraphicsView实现预览图片显示缩略图功能QT creator Qt5.15.2 头文件&#xff1a; #ifndef TGRAPHICSVIEW_H #define TGRAPHICSVIEW_H#include <QGraphicsView> #include <QMainWindow> #include <QObject> #include <QWidget>class TGraphicsVie…

vue页面自适应 动态 postcss postcss-pxtorem

vue页面自适应 动态 postcss postcss-pxtorem postcss-pxtorem实现页面自适应1、安装postcss-pxtorem2、根目录创建postcss.config.js&#xff0c;并配置以下内容3、创建rem.js&#xff0c;动态设置root px4、在main.js中引入rem.js5、在main.js中创建全局处理函数px2rem6、对…

【王树森】Vision Transformer (ViT) 用于图片分类(个人向笔记)

图片分类任务 给定一张图片&#xff0c;现在要求神经网络能够输出它对这个图片的分类结果。下图表示神经网络有40%的信心认定这个图片是狗 ResNet&#xff08;CNN&#xff09;曾经是是图像分类的最好模型在有足够大数据做预训练的情况下&#xff0c;ViT要强于ResNetViT 就是Tr…

S7-200编程软件STEP 7打开时界面乱码显示Translation Required

遇到的问题 如题&#xff0c;两个月没有打开过S7-200编程软件&#xff08;软件版本是V4.0 STEP 7 MicroWIN SP9&#xff0c;电脑系统是Windows 11&#xff09;&#xff0c;这一次打开就发现它的那个界面乱码了&#xff0c;原来时中文汉化的地方全都变成了Translation Required…

笔记整理—内核!启动!—uboot部分(1)

常规启动时&#xff0c;各镜像都在SD卡中的各种分区中&#xff0c;内核放在kernel分区&#xff0c;从SD卡到DDR的连接处&#xff08;内核不需要进行重定位&#xff0c;直接从链接处启动&#xff09;。uboot从sd卡分区读使用movi命令。 使用fastboot指令可以查看分区情况&#x…

通过Dot1q终结子接口实现VLAN间互访

如图1所示&#xff0c;SwitchA为支持配置子接口的三层交换机&#xff0c;SwitchB为二层交换机&#xff0c;SwitchA通过一个三层以太网接口与SwitchB互连。用户主机被划分到两个VLAN&#xff1a;VLAN2和VLAN3。由于业务需要&#xff0c;不同VLAN的用户要求互通。 图1 通过Dot1q…

AI革命:清华大学揭秘大模型工具学习的未来

&#x1f31f; 未来已来&#xff1a;大模型工具学习开启智能新时代 &#x1f31f; 清华大学THUNLP最新研究&#xff0c;探索AI工具使用的无限可能 文末有报告免费下载&#xff0c;需要的朋友自行下跳。 亲爱的读者朋友们&#xff0c;人工智能的浪潮已经不可阻挡地涌入我们的…

LabVIEW VI并行执行设置

要在多个程序中运行同一个VI&#xff08;Virtual Instrument&#xff09;&#xff0c;通常需要确保VI的重入性&#xff08;Reentrancy&#xff09;设置正确。在LabVIEW中&#xff0c;可以使用“重入性”&#xff08;Reentrancy&#xff09;选项来允许同一个VI同时在多个地方调用…

RAG噪声的设计及其对大模型问答的作用分析

有趣的大模型中RAG噪声的作用分析 大模型&#xff08;LLMs&#xff09;在多个任务上表现出色&#xff0c;但存在依赖过时知识、幻觉等问题。RAG作为一种提高LLM性能的方法&#xff0c;通过在推理过程中引入外部信息来缓解这些限制。 Figure 1 展示了一个来自 NoiserBench 的示…

Docker技术

一、Docker简介 1.什么是docker Docker是管理容器的引擎&#xff0c;为应用打包、部署平台&#xff0c;而非单纯的虚拟化技术。 它具有以下几个重要特点和优势&#xff1a; 1. 轻量级虚拟化 &#xff1a;Docker 容器相较于传统的虚拟机更加轻量和高效&#xff0c;能够快速启…

【高中数学/极值/判别式法】已知实数a和b,b在(0,1)区间,a-b=1,则1/(a-1)+1/(5-4b)的最小值是?

【问题】 已知实数a,b&#xff0c;b在(0,1)区间&#xff0c;a-b1,则1/(a-1)1/(5-4b)的最小值是&#xff1f; 【来源】 《解题卡壳怎么办 高中数学解题智慧点剖析》P34 余继光 苏德矿合著 浙江大学出版社出版 【破题点】 将a-1用b取代&#xff0c;发现结果是二次式相除&…

24-8-31-读书笔记(十六)-《契诃夫文集》(十一)([俄] 契诃夫 [译] 汝龙 )

文章目录 《契诃夫文集》&#xff08;十一&#xff09;&#xff08;[俄] 契诃夫 [译] 汝龙 &#xff09;目录阅读笔记记录总结 《契诃夫文集》&#xff08;十一&#xff09;&#xff08;[俄] 契诃夫 [译] 汝龙 &#xff09; 8月最后一天了&#xff0c;心里很多的感慨&#xff0…

Bluetooth: gatt server example 解读

在 core spec 中有 Example ATT Server contents,这里对此进行解读; Assigned_Numbers.pdf 需要提前准备,可以从 SIG 下载; Step-1 从这个服务看,server handle 是1, 但是第一个 characteristic clare handle是 4,所以不能预设handle 是按顺序连续的; Step-2 Servic…

强推第一本给程序员看的AI Agent教程终于来啦!全方位解析LLM-Agent

AI Agent火爆到什么程度&#xff1f; &#x1f340;OpenAI创始人奥特曼预测&#xff1a;未来各行各业&#xff0c;每一个人都可以拥有一个AI Agent。 &#x1f340;比尔盖茨在2023年曾预言&#xff1a;AI Agent将彻底改变人机交互方式&#xff0c;并颠覆整个软件行业。 &#x…

MATLAB生成COE文件

MATLAB代码 % 参数设置 N 4096; % 数据点数量 t linspace(0, 2*pi, N); % 时间向量 width 12; % 位宽% 正弦波&#xff0c;幅度在0到5之间 sine_wave 2.5 * sin(t) 2.5;% 三角波&#xff0c;幅度在0到5之间 tri_wave 5 * (1 - abs(mod(t/(2*pi)*4, 2) - 1));% 方波&…

记一次学习--webshell绕过

目录 第一题 第二题 第三题 第四题 第五题 第一题 <?php$action $_GET[action]; $parameters $_GET; if (isset($parameters[action])) {unset($parameters[action]); }$a call_user_func($action, ...$parameters); 上面题目&#xff0c;下面的call_user_func有一…