超实用的机器学习中的短文本数值特征方法:字符级n-gram和TF-IDF方法并用

关键词提取:TF-IDF和n-gram 一:今日相亲 搭档镇楼。 今天的头版给我漂亮的搭档,啥年芳二六、待字闺中之类的矫情话就不说了,希望看到文章的小伙子,如果对眼,请放下你手中的游戏,我可以牵线搭桥。 好好相爱,就是为民除害。 搭档是重庆妹纸,重庆妹纸长得是很水灵。 搭档给我的感觉是情商比较高,比较会捧哏,说话不会闷。 搭档身高160体重100,学历本科水瓶座,目前在重庆的银行工作。 以下为搭档的自我介绍: 性格慢热,... 阅读详情

在应用机器学习算法来处理单词或短文本时,我们通常需要首先获取它们的数字嵌入向量。
一些强大的方法包括使用预训练的深度学习模型(例如 BERT)来进行更多语义嵌入。如果计算资源有限,或者我们想要更简单的嵌入方法,我们可以尝试 TF-IDF 指标。

这里我们介绍一种非常简单的方法,将字符级别的 n-gram 方法和 TF-IDF 结合起来,将诸如几个单词之类的短文本转换为数字向量。在数字向量中,我们可以进一步将分类方法(例如梯度提升机)应用于下游任务。

首先,让我们回顾一下什么是 n-gram:

引用 Wikipedia N-Gram 页面中的一些定义:

…n-gram 是来自给定文本或语音序列的 n 个项目的连续序列。根据应用,这些项目可以是音素、音节、字母、单词……大小为 1 的 n-gram 称为“unigram”;大小 2 是“bigram”;大小 3 是一个“3-gram”。较大的尺寸有时由 n 的值来表示,例如“4-gram”、“5-gram”等。

到目前为止,两种最常见的 N-Gram 类型是(1)字符级,其中项目由一个或多个字符组成;(2)词级,其中项目由一个或多个单词组成。项目(或通常称为标记)的大小由 n 定义;

其次,什么是 TF-IDF 指标?

TF-IDF(Term Frequency - Inverse Document Frequency)编码是BOW(bag of words)的一种改进方式,与TF相同。它认为各种文档中经常出现的术语不太重要。

TF(词频):计算文档中存在多少词
IDF(逆文档频率):与包含该术语的文档数量的倒数

所以 TF-IDF 基本上是 TF 和 IDF 度量的产物。

事实证明,使用 scikit-learn 包实现短文本的字符级 n-gram TF-IDF 编码非常简单。
这意味着我们可以轻松地将流程步骤合并到我们的数据流程和特征工程管道中.

第一步 , Fit

LLM中的N-Gram、TF-IDF和Word embedding 特性N-GramTF-IDF主要用途预测下一个词/生成文本评估词语重要性/文档特征提取核心思想词语出现的概率依赖前几个词重要=在本文档多见+在其它文档少见典型应用输入法、机器翻译、拼写检查搜索引擎、文本分类、关键词提取优势保持语言连贯性识别文档关键主题词局限长距离依赖差、需要大量训练数据忽略词语顺序和语义关系两者常结合使用,比如先用TF-IDF提取重要词,再用N-Gram分析这些词的关系。Word Embedding 就是让计算机通过数字"理解"词语。 阅读详情

相关推荐

BOW与TF-IDF实战指南:从词频计数到智能加权的工程抉择

Bag of Words(词袋模型)和TF-IDF是文本表示最基础也最关键的两种方法,前者通过简单词频统计构建文档向量,后者引入逆文档频率对词频进行语义加权,从而缓解高频通用词的干扰。其核心价值在于为文本分类、相似度计算、信息检索等任务提供可解释、轻量且高效的特征表示,在算力受限或数据稀疏场景下尤为关键。实际应用中,BOW适合需要原始共现信号的任务(如拼写纠错、异常检测),而TF-IDF更适配强调区分性的场景(如新闻分类、商品搜索)。本文结合电商搜索、金融舆情、医疗编码等真实项目,深入解析二者在sklear

daxi1047的博客 488

人工智能自然语言处理:N-gram和TF-IDF模型详解

人工智能自然语言处理:N-gram和TF-IDF模型详解

丨汀、的博客 1957

Python垃圾短信分类实战:从TF-IDF到模型压缩的完整流程

文本分类是自然语言处理的基础任务,其核心原理是通过特征工程将文本转化为数值向量,再训练模型识别模式。在垃圾短信识别场景中,TF-IDF结合线性模型因高维稀疏特征下的高效性成为首选,字符级n-gram能有效应对中文变体。技术价值在于以低计算成本实现高精度过滤,应用于短信过滤、反诈骗等场景。针对类别不平衡和误杀问题,需采用class_weight平衡和阈值校准。本文以垃圾短信分类为例,详细讲解数据清洗、模型选型、评估指标及模型压缩技巧,提供可复现的Python代码,帮助读者快速构建可解释的基线系统。

weixin_29046611的博客 323

机器学习驱动的SQL注入检测:字符n-gram特征与工程实践

SQL注入是Web安全领域最经典且持续演进的攻击手法。随着攻击者不断使用编码、注释、大小写混淆等方式绕过后端规则,传统基于正则匹配的检测手段逐渐失效。机器学习将检测判断从“字符串是否命中规则”转化为“查询在特征空间中与合法样本的偏离程度”,借助字符级n-gram特征提取,能够有效捕捉查询的局部结构指纹,在分词失效或载荷变形的场景下依然保持稳定的判别能力。逻辑回归模型以其高可解释性和低推理成本成为此类任务的理想基线,结合阈值调整、混淆矩阵评估以及对抗样本扩充,可在旁路评分架构中实现低误报率的实时检测。该方案适

weixin_33046983的博客 311

机器学习Web攻击检测系统源码实战:从TF-IDF到字符CNN的避坑指南

Web攻击检测是网络安全的核心环节,其本质是将HTTP请求转化为可计算的特征向量,再通过分类模型识别恶意流量。传统方法依赖规则匹配,而机器学习通过TF-IDF、字符n-gram等特征提取技术,结合LightGBM等高效模型,能显著提升检测的泛化能力。这类技术在WAF、入侵检测、日志分析等场景中价值突出,尤其适合需要快速搭建原型的工程师。然而,从源码到落地常面临标签不平衡、编码绕过、时间切分等工程陷阱。本文围绕一套可运行的Web攻击检测系统源码,拆解数据管道、特征工程、模型选型与API封装,并给出字符级CNN

weixin_34246529的博客 311

基于机器学习的Web攻击检测:从HTTP请求特征工程到模型上线实战

Web攻击检测的核心在于将HTTP请求转化为可计算的特征向量,再通过分类模型识别SQL注入、XSS等恶意载荷。其原理是结合字符级n-gram与TF-IDF提取文本模式,辅以特殊字符比例、信息熵等统计特征,利用逻辑回归或集成模型进行二分类。技术价值在于弥补传统WAF规则维护成本高、泛化能力弱的缺陷,实现自适应威胁识别。典型应用场景包括网关侧实时流量过滤、API安全防护及安全运营告警降噪。面对攻击载荷编码绕过与数据不平衡挑战,需配合阈值调优与在线学习机制。本文围绕机器学习Web攻击检测系统源码,详解从数据标注、

weixin_29053695的博客 334

Python MLP虚假新闻检测器:从TF-IDF到PyTorch实战

文本分类是NLP的基础任务,其核心在于将文本转化为数值特征并训练模型。TF-IDF通过词频与逆文档频率加权,有效提取关键词特征,而多层感知机(MLP)则能学习特征间的非线性关系。在虚假新闻检测场景中,结合TF-IDF与PyTorch构建的MLP模型,可低成本实现高精度的内容审核与舆情监控。本文以Python MLP虚假新闻检测器为例,详解从数据清洗、特征工程到模型训练与调优的完整流程,帮助读者掌握文本二分类的工程实践。

weixin_33708633的博客 159

机器学习驱动的Webshell检测:从特征工程到增量训练落地

网络安全攻防中,Webshell作为常见的恶意后门,传统正则特征匹配在遇到变量混淆、字符串拼接等变种时容易失效。机器学习通过将源代码文件转化为数值特征,让模型从统计分布上区分正常业务代码与恶意脚本,从而有效识别未知变体。其核心流程涉及字符n-gram或Token统计等特征提取方式,配合TF-IDF向量化,再使用逻辑回归、随机森林等分类器完成训练与评估。该技术可部署为PHP文件扫描器,并支持基于误报样本回灌的增量训练,适合安全研发与运维人员在已有样本基础上构建可迭代的检测能力。本文以源代码加文档的形式,完整演

weixin_27038701的博客 315

用Python解析AI竞赛题库:docx结构化、TF-IDF检索与变体题校验

文档结构化解析的关键,是把非结构化内容转成可查询字段。python-docx读取Word段落,正则表达式切分题干、选项、答案与解析,再输出结构化JSON;检索层可采用TF-IDF与字符n-gram,在中文短文本场景无需训练词向量,配合SQLite即可完成错题记录、相似题查询和板块统计。其价值在于把静态题库变成可追踪、可复用、可校验的数据资产,适用于AI知识竞赛备赛、认证自测与期末复习。以《2025全国大学生人工智能知识竞赛题库及答案》为例,沿知识框架拆解、docx解析、错题库搭建、变体题生成与答案自洽性校验

weixin_32050773的博客 292

[零基础]用docker搭建Hadoop集群

[零基础]用docker搭建Hadoop集群,每一步都有详细的解释!

weixin_56114243的博客 2万+

QT编程之PCM音频播放与采集

Qt5/Qt6通用方案。

深之JohnChen的专栏 1170

在Pycharm中配置Pyqt5工具(2023年新版教程)

在Pycharm中配置Pyqt5相关的三个工具:QtDesigner、PyUIC、PYRCC

网络技术和Python 2万+

vivado:差分信号和单端信号 的相互转换 IBUFDS OBUFDS

FPGA能处理的都是单端信号,但有些输入信号是差分的,这时候就需要把差分信号转为单端信号。

qq_52137732的博客 1万+

实战演练:基于Veristand Custom Device的硬件在环(HIL)数据流控制模块开发

本文详细介绍了基于Veristand Custom Device的硬件在环(HIL)数据流控制模块开发实战。通过LabVIEW环境配置、动态路由逻辑构建、实时处理核心开发及性能优化等关键步骤,帮助工程师快速掌握定制化HIL测试系统的开发技巧,提升测试效率与准确性。

weixin_29206669的博客 475

CPU 访问外设的两种核心机制:MMIO(Memory-Mapped I/O) 和 DMA(Direct Memory Access)

BAR和DMA是计算机系统中两种关键的数据传输机制:BAR(基址寄存器)用于CPU与设备间的控制通信,映射设备寄存器便于配置操作;而DMA(直接内存访问)允许设备直接读写系统内存,无需CPU参与大量数据传输。典型场景如NVMe SSD读取数据时,CPU通过BAR下发指令,设备通过DMA高效传输数据到主机内存,最后中断通知CPU。虽然BAR能映射大内存空间,但仍无法替代DMA的高效数据传输功能,两者各司其职——BAR负责控制,DMA专注数据传输,共同实现高性能的硬件交互。

MHD0815的博客 237

基于STM32L4XX、HAL库的 TMC2660C-PA 驱动程序设计

/ 默认灵敏度和电流。// 20/31最大电流。

zhusl6688的博客 384

智能车图像处理2-入门级分析1 ---基础扫线

PS :入门级文章适合新手,如果已经有基础可以去看进阶篇文章。

taiyuezyh的博客 7752

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: 利用python解决线性规划最优化问题
下一篇: 必读:数据科学家最常用的几个Python库
robot_learner
博客等级 码龄7年 632粉丝 187原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值