iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >入门系列之:Python3 如何使用N
  • 905
分享到

入门系列之:Python3 如何使用N

如何使用入门系列之 2023-01-31 08:01:29 905人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由冰糖葫芦 发表于云+社区专栏 介绍 文本已成为最常见的表达形式之一。我们每天都要发送电子邮件、短信、推文、更新状态。因此,非结构化文本数据变得非常普遍,分析大量文本数据

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~

本文由冰糖葫芦 发表于云+社区专栏

介绍

文本已成为最常见的表达形式之一。我们每天都要发送电子邮件、短信、推文、更新状态。因此,非结构化文本数据变得非常普遍,分析大量文本数据现在是了解人们的想法的关键方法。

微博上的推文帮助我们找到热门新闻主题。淘宝的评论帮助用户购买评价最高的产品。这些例子都是自然语言处理NLP)任务的体现。

NLP属于计算机科学领域,主要做人机互动。NLP技术用于分析文本,为计算机提供了一种理解人类语言的方法。NLP应用程序的一些例子包括自动文本摘要、主题分隔和情感分析。

教程将介绍如何使用Natural Language Toolkit(NLTK):一个python的NLP工具

准备

首先,您应该安装Python 3,并在计算机上设置一个本地编程环境。要充分利用本教程,您应该先熟悉Python编程语言,可以参考腾讯云开发手册Python中文开发文档和使用腾讯云python开发环境直接上机实验。

第一步,导入NLTK

开始使用Python之前,先确保安装了NLTK模块。在命令行上,通过运行以下命令检查NLTK:

$ python -c "import nltk"

如果已安装NLTK,那么这个命令将完成且没有错误。现在,让我们确保您安装了最新版本:

$ python -c "import nltk; print(nltk.__version__)"

您应该安装版本3.2.1,因为我们将使用需要此版本的NLTK Twitter软件包。

如果未安装NLTK,您将收到一条错误消息:

Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named 'nltk'

错误消息表明未安装NLTK,所以请使用pip下载资料库:

$ pip install nltk

接下来,我们将下载我们将在本教程中使用的数据和NLTK工具。

第二步,下载NLTK的数据和标记器

在本教程中,我们将使用一个Twitter语料库,该语料库可通过NLTK下载。具体来说,我们将使用NLTK的twitter_samples语料库。让我们通过以下命令行来下载语料库:

$ python -m nltk.downloader twitter_samples

如果命令成功运行,您应该看到以下输出:

[nltk_data] Downloading package twitter_samples to
[nltk_data]    /Users/sammy/nltk_data...
[nltk_data] Unzipping corpora/twitter_samples.zip.

接下来,下载POS标记器。POS标记是对文本中的单词进行标记的过程,使其与特定POS标记对应:名词,动词,形容词,副词等。在本教程中,我们将使用NLTK的平均感知器标记器。平均感知器标记器使用感知器算法来预测最可能给出该单词的POS标签。让我们下载该标记器,如下所示:

$ python -m nltk.downloader averaged_perceptron_tagger

如果命令成功运行,您应该看到以下输出:

[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data] /Users/sammy/nltk_data...
[nltk_data] Unzipping taggers/averaged_perceptron_tagger.zip.

让我们仔细检查语料库是否正确下载。在您的终端中,打开Python交互式环境:

$ python

在Python的交互式环境中,导入twitter_samples语料库:

>>> from nltk.corpus import twitter_samples

NLTK的twitter语料库目前包含从Twitter Streaming api检索的20,000条推文样本。完整推文以行分隔的JSON形式存储。我们可以用twitter_samples.fileids()来查看语料库中存在多少个jsON文件:

>>> twitter_samples.fileids()

输出将如下所示:

[u'negative_tweets.json', u'positive_tweets.json',u'tweets.20150430-223406.json']

使用这些文件ID,我们可以返回推文字符串

>>> twitter_samples.strings('tweets.20150430-223406.json')

运行它将返回大量输出。它通常看起来像这样:

[u'RT @KirkKus: Indirect cost of the UK being in the EU is estimated to be costing Britain \xa3170 billion per year! #BetterOffOut #UKIP'...]

现在我们知道我们的语料库下载成功了。因此,让我们使用快捷键ctrl+D 退出Python交互式环境。

现在我们可以访问twitter_samples语料库,我们可以开始编写脚本来处理推文了。

我们脚本的目标是计算在twitter_samples语料库的子集中出现形容词和名词的数量:

  • 名词,根据它最基本的定义,通常指一个人、地方或者事物。例如,电影书籍汉堡都是名词。计算名词可以帮助确定正在讨论的主题数量。
  • 形容词,是修饰名词(或代词)的词,例如:一个恐怖的电影,有趣的书,或者美味的汉堡。计算形容词可以决定使用什么类型的语言。

您可以稍后扩展此脚本以计算正面形容词(伟大的令人敬畏的快乐的等)与负面形容词(无聊蹩脚悲伤等),可用于分析推文的情绪或关于产品或电影的评论。此脚本提供的数据可以反过来用于与该产品或电影相关的决策。

我们将在下一步开始我们的脚本。

第三步,把句子分词

首先,在您选择的文本编辑器中,创建我们将要使用的脚本并调用它nlp.py。

在我们的文件中,首先导入语料库。然后创建一个tweets变量并从positive_tweets.json文件把它分配到推文字符串列表。

nlp.py
from nltk.corpus import twitter_samples
tweets = twitter_samples.strings('positive_tweets.json')

当我们第一次加载推文列表时,每条推文都用一个字符串来表示。在我们确定推文中哪些词是形容词或名词之前,我们首先需要对我们的推文进行分词。

Tokenization是将一系列字符串分解为单词、关键字、短语、符号和其他元素,我们称之为分词。让我们创建一个名为tweets_tokens的新变量,为其分配分词的推文列表:

nlp.py
from nltk.corpus import twitter_samples
tweets = twitter_samples.strings('positive_tweets.json')
tweets_tokens = twitter_samples.tokenized('positive_tweets.json')

这个新变量tweets_tokens是一个列表,其中每个元素都是一个分词列表。现在我们有了每条推文的分词,我们可以用适当的POS标签标记这些分词。

第四步,标记句子

为了访问NLTK的POS标记器,我们需要导入它。所有import语句都必须在脚本的开头。让我们把这个新的导入放在另一个导入声明中。

nlp.py
from nltk.corpus import twitter_samples
from nltk.tag import pos_tag_sents

tweets = twitter_samples.strings('positive_tweets.json')
tweets_tokens = twitter_samples.tokenized('positive_tweets.json')

现在,我们可以标记每个token 。NLTK允许我们使用以下方式一次完成所有操作:pos_tag_sents()。我们将创建一个新变量tweets_tagged,来存储标记列表。这个新行可以直接放在我们当前脚本的末尾:

tweets_tagged = pos_tag_sents(tweets_tokens)

要想知道标记的token长什么样,这是我们tweets_tagged列表中的第一个元素:

[(u'#FollowFriday', 'JJ'), (u'@France_Inte', 'NNP'), (u'@PKuchly57','NNP'),(u'@Milipol_Paris', 'NNP'), (u'for', 'IN'), (u'being', 'VBG'), (u'top', 'JJ'),(u'engaged', 'VBN'), (u'members', 'NNS'), (u'in', 'IN'), (u'my', 'PRP$'),(u'commUnity', 'NN'), (u'this', 'DT'), (u'week', 'NN'), (u':)', 'NN')]

我们可以看到我们的推文被表示为一个列表,对于每个token,我们都有关于其POS标签的信息。每个token/标记对都保存为元组。

在NLTK中,形容词的缩写是JJ。

所述标记器NLTK标记单数名词(NN),复数名词(NNS)。为简化起见,我们只会通过跟踪NN标记来计算单数名词。

在下一步中,我们将计算在我们的语料库中出现多少次JJ和NN。

第五步,计算POS标签

我们将使用累加器(计数)变量跟踪JJ并NN出现的次数,并在每次找到标记时不断添加该变量。首先让我们在脚本的底部创建计数,我们将首先设置为零。

nlp.py
from nltk.corpus import twitter_samples
from nltk.tag import pos_tag_sents

tweets = twitter_samples.strings('positive_tweets.json')
tweets_tokens = twitter_samples.tokenized('positive_tweets.json')

JJ_count = 0
NN_count = 0

在我们创建变量之后,我们将创建两个for循环。第一个循环将迭代列表中的每个推文。第二个循环将通过每个推文中的每个token /标签对进行迭代。对于每对,我们将使用适当的元组索引查找标记。

然后,使用条件语句检查标签是否匹配字符串'JJ'或'NN'。如果标记匹配,我们将add(+=1)添加到适当的累加器。

nlp.py
from nltk.corpus import twitter_samples
from nltk.tag import pos_tag_sents

tweets = twitter_samples.strings('positive_tweets.json')
tweets_tokens = twitter_samples.tokenized('positive_tweets.json')

JJ_count = 0
NN_count = 0

for tweet in tweets_tagged:
    for pair in tweet:
        tag = pair[1]
        if tag == 'JJ':
            JJ_count += 1
        elif tag == 'NN':
            NN_count += 1

在两个循环完成后,语料库中会看到形容词和名词的总数。想要查看我们的脚本找到多少个形容词和名词的话,在脚本末尾添加print语句。

nlp.py
...
for tweet in tweets_tagged:
    for pair in tweet:
        tag = pair[1]
        if tag == 'JJ':
            JJ_count += 1
        elif tag == 'NN':
            NN_count += 1
print('Total number of adjectives = ', JJ_count)
print('Total number of nouns =', NN_count)

现在,我们的程序能够输出在语料库中找到的形容词和名词的数量了。

第六步,运行NLP脚本

保存nlp.py文件并运行它来查看我们找到多少个形容词和名词:

$ python nlp.py

请耐心等待,脚本运行可能需要几秒钟。如果一切顺利,当我们运行脚本时,我们应该得到以下输出:

Total number of adjectives = 6094
Total number of nouns = 13180

如果您的输出也是这样,则表示您已成功完成本教程啦!

完整的代码

对于我们完整的代码,我们添加一些注释。我们的脚本如下所示:

nlp.py
# Import data and tagger
from nltk.corpus import twitter_samples
from nltk.tag import pos_tag_sents

# Load tokenized tweets
tweets_tokens = twitter_samples.tokenized('positive_tweets.json')

# Tag tagged tweets
tweets_tagged = pos_tag_sents(tweets_tokens)

# Set accumulators
JJ_count = 0
NN_count = 0

# Loop through list of tweets
for tweet in tweets_tagged:
    for pair in tweet:
        tag = pair[1]
        if tag == 'JJ':
            JJ_count += 1
        elif tag == 'NN':
            NN_count += 1
# Print total numbers for each adjectives and nouns
print('Total number of adjectives = ', JJ_count)
print('Total number of nouns = ', NN_count)

我们在本教程中使用了通过NLTK下载的Twitter语料库,但您可以读取自己的数据。现在,您可以扩展代码以计算复数和单数名词,对形容词进行情感分析,或使用matplotlib可视化您的数据。

结论

在本教程中,您学习了一些自然语言处理技术,以使用Python中的NLTK库分析文本。现在,您可以在Python中下载语料库、token 、标记和计数POS标记。您可以利用本教程来简化在Python中处理自己的文本数据的过程。如果您对NLP感兴趣, 可以访问腾讯云学院自然语言处理相关课程。


参考文献:《How To Work with Language Data in Python 3 using the Natural Language Toolkit (NLTK)》

问答

使用NLP进行句子压缩?

相关阅读

Nginx的安装和配置疑难解答

如何备份你的Mysql数据库

mysql 8.0 版本功能变更介绍

此文已由作者授权腾讯云+社区发布,原文链接:https://cloud.tencent.com/dev...

欢迎大家前往腾讯云+社区或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~

海量技术实践经验,尽在云加社区!

--结束END--

本文标题: 入门系列之:Python3 如何使用N

本文链接: https://www.lsjlt.com/news/193307.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 入门系列之:Python3 如何使用N
    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由冰糖葫芦 发表于云+社区专栏 介绍 文本已成为最常见的表达形式之一。我们每天都要发送电子邮件、短信、推文、更新状态。因此,非结构化文本数据变得非常普遍,分析大量文本数据...
    99+
    2023-01-31
    如何使用 入门 系列之
  • python入门系列之一:Centos6
    1)编译安装python2.7[root@mysql-master ~]# python -V Python 2.6.6 查看python的版本信息(之前的yum是通过yum安装的) [root@mysql-master src]# wge...
    99+
    2023-01-31
    入门 系列 python
  • SpringBoot入门系列之JPA mysql
    一,准备工作,建立spring-boot-sample-mysql工程http://start.spring.io/     A、Artifact中输入spring-boot-sample-MySQL...
    99+
    2023-05-31
    spring boot jpa
  • 【MySQL系列】PolarDB入门使用
    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,...
    99+
    2023-12-22
    mysql 数据库
  • 入门系列之在Ubuntu 16.04上
    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由谢鸢 发表于云+社区专栏 介绍 TensorFlow是一款由Google构建的用于训练神经网络的开源机器学习软件。TensorFlow的神经网络以有状态数据流图的形式表...
    99+
    2023-01-31
    入门 系列之 Ubuntu
  • python3入门(三)字典的使用
    python的常见字典用{}花括号来表示dict1 = {key1 : value1, key2 : value2 }字典的每个键值key:value对应冒号分割,每个键值用逗号分割字典的定义方法,比如a={name:huang}print...
    99+
    2023-01-31
    字典 入门
  • Android基础入门之dataBinding如何使用
    这篇“Android基础入门之dataBinding如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android基础...
    99+
    2023-07-02
  • Python入门之列表用法详解
    目录列表是什么列表的CRUD创建列表访问列表中的值更新列表删除元素拼接列表列表相乘判断遍历列表列表常用方法获取列表长度列表后面添加元素指定位置添加元素删除元素返回的是某个元素在列表里...
    99+
    2024-04-02
  • Python pandas入门系列之众数和分位数
    目录准备1.求众数1.1对全表进行操作1.1.1求取每列的众数1.1.2 求取每行的众数1.2 对单独的一行或者一列进行操作1.2.1 求取单独某一列的众数1.2.2 求取单独某一行...
    99+
    2024-04-02
  • Docker入门系列之二:使用dockerfile制作包含指定web应用的镜像
    在前一篇文章:Docker入门系列之一:在一个Docker容器里运行指定的web应用 里,我们已经成功地将我们在本地开发的一个web应用部署到Docker容器里运行。本文将介绍如何制作一个包含了这个web应用的Docker镜像。镜...
    99+
    2023-06-04
  • Java基础入门篇之如何使用For循环
    这篇文章主要讲解了“Java基础入门篇之如何使用For循环”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java基础入门篇之如何使用For循环”吧! 一、for循环语句在java中...
    99+
    2023-06-15
  • Python渗透测试入门之Scapy库如何使用
    Scapy 是一个用来解析底层网络数据包的Python模块和交互式程序,该程序对底层包处理进行了抽象打包,使得对网络数据包的处理非常简便。该类库可以在在网络安全领域有非常广泛用例,可用于漏洞利用开发、数据泄露、网络监听、入侵检测和流量的分析...
    99+
    2023-05-14
    Python scapy
  • k8s入门之deployment怎么使用
    这篇“k8s入门之deployment怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“k8s入门之deployment...
    99+
    2023-07-05
  • C++入门之vector使用详解
    目录前言创建对象迭代器数据插入数据删除容量操作总结前言 兜兜转转,我们来到了C++的vector章节,今天就讲讲怎么使用vector吧. vector的本质就是一个线性的顺序表,只不...
    99+
    2024-04-02
  • Android入门之系统设置Configuration类的使用教程
    简介 本节给大家介绍的Configuration类是用来描述手机设备的配置信息的,比如屏幕方向, 触摸屏的触摸方式等。 Configuration给我们提供的方法列表 density...
    99+
    2022-12-08
    Android Configuration类使用 Android Configuration类 Android Configuration
  • 如何使用postman(新手入门)
    目录 一、 了解postman1. 什么是postman?2. 如何下载postman3. postman界面二、 如何用postman工具测试1. 接口请求的常用方式(G...
    99+
    2024-04-02
  • C++入门之list的使用详解
    目录前言构造的使用1 构造空list2 构造含n个值为val的元素3 拷贝构造4 用迭代区间迭代器接口1 正常迭代接口2 逆向迭代接口容量接口元素访问数据修改头插头删尾插尾删pos位...
    99+
    2024-04-02
  • Android入门之TextClock的使用教程
    目录介绍课程例子UI主界面代码运行效果介绍 TextClock是在Android 4.2(API 17)后推出的用来替代DigitalClock的一个控件。 TextClock可以以...
    99+
    2022-11-16
    Android TextClock使用 Android TextClock
  • Android入门之ScrollView的使用教程
    目录介绍高度需要注意的点例子讲解activity_main.xmlMainActivity.java介绍 ScrollView(滚动条),它有两种“滚动条”:...
    99+
    2022-11-13
    Android ScrollView使用 Android ScrollView
  • Android入门之Toast的使用教程
    目录介绍课程目标项目结构前端代码view_toast_custom.xmlactivity_main.xml后端代码MainActivity.java介绍 本篇带来的是: Andro...
    99+
    2022-11-21
    Android Toast使用 Android Toast
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作