Python 自然语言处理入门

自然语言处理--nltk库WordNetLemmatizer词形归并 对于任何一个 NLP 流水线,如果想要对相同语义词根的不同拼写形式都做出统一回复的话,那么词形归并工具就很有用,它会减少必须要回复的词的数目,即语言模型的维度。利用词形归并工具,可以让模型更一般化,当然也可能带来模型精确率的降低,因为它会对同一词根的不同拼写形式一视同仁。 from nltk.stem import WordNetLemmatizer lemmatizer = WordNetLemmatizer() # 默认其为名词 print(lemmatizer.lemmatize("better") 阅读详情

今天生成的数据中有很大一部分是非结构化的。非结构化数据包括社交媒体评论、浏览历史记录和客户反馈。您是否发现自己处于需要分析大量文本数据的情况,却不知道如何进行?Python 中的自然语言处理可以提供帮助。

本教程的目标是让您能够通过自然语言处理 (NLP) 的概念在 Python 中分析文本数据。您将首先学习如何将文本标记为更小的块,将单词标准化为其根形式,然后删除文档中的任何噪音,为进一步分析做好准备。

让我们开始吧!

先决条件

在本教程中,我们将使用 Python 的nltk库对文本执行所有 NLP 操作。在编写本教程时,我们使用的是 3.4 版本的nltk. 要安装库,您可以pip在终端上使用命令:

<span style="background-color:#292d3e"><span style="color:#bfc7d5"><code class="language-python">pip install nltk<span style="color:#89ddff">==</span><span style="color:#f78c6c">3.4</span>
</code></span></span>

要检查系统中有哪个版本nltk,可以将库导入 Python 解释器并检查版本:

<span style="background-color:#292d3e"><span style="color:#bfc7d5"><code class="language-python">import nltk
print<span style="color:#c792ea">(</span>nltk<span style="color:#c792ea">.</span>__version__<span style="color:#c792ea">)</span>
</code></span></span>

要执行nltk本教程中的某些操作,您可能需要下载特定资源。我们将在需要时描述每个资源。

但是,如果您想避免在教程后面下载单个资源并立即获取它们,请运行以下命令:

<span style="background-color:#292d3e"><span style="color:#bfc7d5"><code class="language-bash">python -m nltk.downloader all
</code></span></span>

第 1 步:转换为代币

计算机系统本身无法在自然语言中找到意义。处理自然语言的第一步是将原始文本转换为标记。记号是连续字符的组合,具有一定的含义。由您决定如何将句子分解为标记。例如,一个简单的方法是用空格分割一个句子以将其分解为单个单词。

在 NLTK 库中,您可以使用该word_tokenize()函数将字符串转换为标记。但是,您首先需要下载punkt资源。在终端中运行以下命令:

<span style="background-color:#292d3e"><span style="color:#bfc7d5"><code class="language-python">nltk<span style="color:#c792ea">.</span>download<span style="color:#c792ea">(</span><span style="color:#c3e88d">'punkt'</span><span style="color:#c792ea">)</span>
</code></span></span>

接下来,您需要导入word_tokenizefromnltk.tokenize才能使用它:

<span style="background-color:#292d3e"><span style="color:#bfc7d5"><code class="language-python">from nltk<span style="color:#c792ea">.</span>tokenize import word_tokenize
print<span style="color:#c792ea">(</span>word_tokenize<span style="color:#c792ea">(</span><span style="color:#c3e88d">"Hi, this is a nice hotel."</span><span style="color:#c792ea">)</span><span style="color:#c792ea">)</span>
</code></span></span>

代码的输出如下:

<span style="background-color:#292d3e"><span style="color:#bfc7d5"><code class="language-bash"><span style="color:#c792ea">[</span><span style="color:#c3e88d">'Hi'</span>, <span style="color:#c3e88d">','</span>, <span style="color:#c3e88d">'this'</span>, <span style="color:#c3e88d">'is'</span>, <span style="color:#c3e88d">'a'</span>, <span style="color:#c3e88d">'nice'</span>, <span style="color:#c3e88d">'hotel'</span>, <span style="color:#c3e88d">'.'</span><span style="color:#c792ea">]</span>
</code></span></span>

您会注意到,word_tokenize它不仅根据空格简单地拆分字符串,而且还将标点符号拆分为标记。如果您想在分析中保留标点符号,这取决于您。

第 2 步:将单词转换为其基本形式

在处理自然语言时,您经常会注意到同一个词有多种语法形式。例如,“go”、“going”和“gone”是同一个动词“go”的形式。

虽然项目的必要性可能要求您保留各种语法形式的单词,但让我们讨论一种将同一单词的各种语法形式转换为其基本形式的方法。您可以使用两种技术将单词转换为其基础。

第一种技术是词干。词干提取是一种从单词中删除词缀的简单算法。NLTK中有多种词干提取算法可供使用。我们将在本教程中使用 Porter 算法。

我们首先PorterStemmer从nltk.stem.porter. 接下来,我们将词干分析器初始化为stemmer变量,然后使用该.stem()

Python与自然语言处理 自然语言处理是一门计算机科学子领域,致力于让计算机能够理解、解释和生成人类语言。NLP技术已经被广泛应用于文本分类、情感分析、机器翻译、问答系统等领域。使用Python进行自然语言处理,可以利用Python的强大功能快速实现各种自然语言处理任务。以下是几个常用的Python库。 阅读详情

相关推荐

Python自然语言处理入门指南:从基础到实战

自然语言处理(NLP)是人工智能领域最具挑战性和应用价值的方向之一。从智能客服到舆情分析,从机器翻译到内容生成,NLP技术正在深度改变我们与计算机的交互方式。本文以Python为工具,从基础概念出发,结合生活化比喻、代码示例和实战项目,带您一步步掌握NLP的核心流程——从文本清洗到特征提取,从传统模型到预训练技术,最终完成一个完整的情感分析项目。无论您是刚入门的编程新手,还是想拓展技术栈的开发者,本文都将为您提供清晰的学习路径和可复用的实战经验。想象一个场景:你对智能音箱说“今天下雨吗?

AI Python 编程之道的博客 1105

Python NLP自然语言处理详解

在这个大数据时代,几乎所有事物都能用数据描述。数据可以大致分为三类。第一类是用于传播的媒体数据,如图片、音频、视频等。这类数据一般不需要做处理,只需要存储和读取。第二类是数字类数据,其价值很高。因为数字是有一定规律的,从已有数字中发现的规律可以用于预测未来的数据。这也是传统大数据处理与分析的主要方面。第三类是自然语言数据。这类数据更贴近生活,对其进行统计和分析,可以让机器理解人的语言,实现机器与人的交流。

悦分享 8275

自然语言处理入门教程:使用Python进行NLP

Python是一种广泛应用于NLP任务的编程语言,具有丰富的库和工具,本文将介绍使用Python进行NLP的入门教程,并提供相应的源代码。当然,这只是NLP领域中的一小部分内容,还有许多其他的技术和算法可以进一步探索和应用。在NLP中,常常需要去除这些停用词,以减少文本数据的噪音。在输出结果中,'NN’表示名词,'JJ’表示形容词,'CD’表示基数词,'PU’表示标点符号等。在输出结果中,语义相似度的范围是0到1,值越接近1表示文本之间的语义相似度越高。在输出结果中,'正面’表示文本的情感倾向为正面。

KkowServer的博客 324

2、自然语言处理(NLP)入门:Python 实战指南

本博客是一份全面的自然语言处理(NLP)入门指南,结合Python实战讲解NLP核心概念与技术。内容涵盖NLP基础、语料库分析、句子结构理解、文本预处理、特征工程、机器学习与深度学习在NLP中的应用,并提供大量Python代码示例。适合希望使用Python开发智能语言应用的开发者学习与参考。

gitlab7runner的博客 75

中文:Python进行自然语言处理入门教程

作者:禅与计算机程序设计艺术 1.简介 Python在近年来备受瞩目并成为机器学习、数据科学领域的“炮灰”之一。许多大数据处理、分析、挖掘任务都可以用Python语言解决。相信随着AI的崛起,越来越多的人会发现,Python将成为很多热门领域的通用编程语言。在这里,我将以中英文结合的方式详细介绍一些Py

AI天才研究院 1513

Python入门实战:自然语言处理应用

1.背景介绍 自然语言处理(NLP)是计算机科学领域的一项重要技术,它的目的是对文本数据进行高效、准确地理解并做出相应的分析和推断。在实际应用中,它可以用于从电子邮件、网页、搜索引擎日志、社会网络、医疗记录等多种形式的无结构或半结构化的文本数据中提取有效的信息,帮助企业、政府、金融、市场营销等部门解决复杂的问题。近年来随着语音识别和智能助手的兴起,越来

AI架构师小马 553

31、Python编程与自然语言处理入门

本文是一篇关于Python编程与自然语言处理(NLP)的入门教程。博文首先回顾了Python编程的基础知识,包括类的定义与对象创建、属性访问控制、特殊方法、继承与多态、运算符重载、异常处理、命名元组与数据类等内容。随后介绍了自然语言处理的基础任务和常用工具,重点讲解了TextBlob库的使用,包括分词、词性标注、情感分析、名词短语提取等。同时,还涉及使用spaCy进行命名实体识别和文本相似度检测。此外,文章还涵盖了文本可视化、可读性评估、机器学习与深度学习在NLP中的应用,以及常用NLP数据集等内容。通过本

wine的专栏 48

Docker一键部署Synopsys EDA全家桶(VCS/Verdi 2018版)保姆级教程

本文提供了一份详尽的Docker容器化部署Synopsys EDA工具链(VCS/Verdi 2018版)的保姆级教程。通过环境隔离与标准化,解决传统安装的依赖冲突问题,并重点攻克了容器内GUI图形界面显示的核心难题。教程涵盖从Docker基础安装、镜像获取、容器启动配置,到使用X11转发或VNC实现Verdi完美显示的完整实践,旨在帮助芯片设计工程师快速构建稳定、可移植的一键化EDA工作环境。

weixin_29281941的博客 199

Voronoi算法构建多晶

孪晶多晶 采用孪晶的原子链作为种子通过voronoi算法可以得到孪晶多晶结构。 孪晶种子: txt文件不需要特殊设置 box 150 150 150 random 8 得到孪晶多晶: 通过改变孪晶种子的长度可以得到不同孪晶片层厚度的多晶。 准二维柱晶 所有晶粒在某一维度的晶向一致,晶粒仅在平面内具有旋转关系,所有晶界为旋转对称晶界,这种结构的多晶其位错滑移在某些方向受限,但是能极大的提高晶粒...

yamatachi的博客 5280

学术报告系列(二) - 智能自主作业机器人感知与控制技术及发展趋势

收集整理于2022年模式识别高峰论坛湖南大学王耀南院士报告(报名题目:智能自主作业机器人感知与控制技术及发展趋势)

Make something people want. 4699

Frida实战:如何用HashMap.put拦截法快速定位安卓App加密参数(附完整脚本)

本文详细介绍了如何使用Frida拦截HashMap.put方法快速定位安卓App加密参数,提供完整脚本和实战案例。通过动态分析技术,相比传统静态分析大幅提升效率,适用于电商、社交、金融等场景的加密参数定位。

jump7的博客 264

YOLOv8改进系列:RepVGG重参数化结构——训练多分支,推理单路,极致提速

本文将详细介绍如何将RepVGG的重参数化思想融入到YOLOv8的骨干网络中,实现一种训练时多分支、推理时单路的改进版YOLOv8。我们将提供完整的代码实现、详细的原理讲解,并在COCO数据集和自定义数据集上进行充分的实验验证。

YOLO 201

人群仿真软件:Pathfinder_(14).与其他软件的集成与互操作

在人群仿真软件的二次开发中,与其他软件的集成和互操作是非常重要的。通过数据导入导出、接口调用和脚本编写,可以显著提升仿真的准确性和实用性。Pathfinder提供了多种数据格式的支持和丰富的API,使得与其他软件的集成变得简单高效。无论是建筑模型的导入、仿真结果的导出,还是实时数据的交换,Pathfinder都能满足用户的需求。

kkchenjj的博客 1017

车载软件架构 -- SOA服务分层设计原则

摘要: 本文系统阐述了车载SOA(面向服务架构)的核心价值与分层设计原则。传统汽车软件架构因功能耦合度高、升级困难等问题难以适应智能汽车发展需求,而SOA通过服务化设计实现模块化解耦,支持跨域协同与生态开放,显著提升开发效率和可维护性。文章详细解析了服务分层策略(原子服务、基础服务、应用服务)及其设计原则:原子服务作为最小功能单元实现硬件抽象;基础服务整合原子服务提供通用能力;应用服务面向具体业务场景。分层架构有效降低了系统复杂度,使各层可独立演进,为智能汽车软件生态建设提供了方法论支撑。

Soly_kun的博客 729

UNet + Shuffle Attention:一种轻量高效的医学图像分割注意力机制

本文提出了一种轻量高效的医学图像分割方法,将Shuffle Attention模块嵌入UNet的上采样路径中。Shuffle Attention通过通道分组注意力机制增强关键特征,同时保持计算轻量化。该方法在上采样后应用注意力模块,有效融合高层语义与低层细节,计算开销小且易于部署。实验表明,该模型在保持UNet原有优势的基础上,通过注意力机制提升了特征聚焦能力,适用于多种图像分割任务。未来可进一步结合空间注意力或Transformer模块以增强模型性能。

Henry的博客 240

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

深度学习工具包 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")

上一篇: Python 趋势:当今最热门语言的热门话题
下一篇: Python 集合之旅
程序员孔乙己
博客等级 码龄5年 1190粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值