处理和分析人类语言数据-NLTK安装和使用

简介:NLTK(Natural Language Toolkit)是一个强大的Python库,用于处理和分析人类语言数据,是一个开源的项目,包含:Python模块,数据集和教程,用于NLP的研究和开发,由Steven Bird和Edward Loper在宾夕法尼亚大学计算机和信息科学系开发。NLTK包括图形演示和示例数据。其提供的教程解释了工具包支持的语言处理任务背后的基本概念。

历史攻略:

Python:使用pycorrector处理错字、纠正

Python:字符转语音

Python:2行代码实现文字转语音

语音识别:利用百度智能进行语音识别

安装:

pip install nltk

参数解析:

函数和模块 - NLTK包含多种函数和模块,例如 nltk.tokenize(用于分词),nltk.tag(用于词性标注)等。

常用参数:对于分词(word_tokenize)等函数,主要参数是要处理的文本字符串。对于词性标注等,参数可能包括分词后的词列表。

案例:

# -*- coding: utf-8 -*-
# time: 2023/11/22 10:18
# file: nltk_demo.py
# 公众号: 玩转测试开发

import nltk
import random
from nltk.util import ngrams
from nltk.tag import pos_tag
from collections import Counter
from nltk.probability import FreqDist
from nltk.corpus import movie_reviews
from nltk.tokenize import word_tokenize
from nltk.classify.util import accuracy
from nltk.classify import NaiveBayesClassifier

# demo - 01: 基本使用
text = "NLTK is a leading platform for building Python programs to work with human language data."
tokens = word_tokenize(text)

# 首次运行,如果环境没配置好,会报错,具体解决步骤参考,注意事项
print(tokens)

# demo - 02:文本分析
# a: 词频分布分析: 展示了如何使用NLTK来分析文本中词汇的频率分布。

nltk.download('punkt')
with open(r"D:\codes\tom2023\IHaveADream.txt")as f:
    text = f.read()
tokens = word_tokenize(text)
fdist = FreqDist(tokens)

# b: 输出最常见的10个词
for word, frequency in fdist.most_common(10):
    print(f"最常见的词 - {word}")

# c: 词性标注: 展示了如何使用NLTK进行词性标注。
nltk.download('averaged_perceptron_tagger')

text = "NLTK is a leading platform for building Python programs."
tokens = word_tokenize(text)
tags = pos_tag(tokens)

print(f"tags:{tags}")

# 简单的情感分类:展示了如何使用NLTK的分类工具进行简单的情感分析。
nltk.download('movie_reviews')


def extract_features(words):
    return dict([(word, True) for word in words])


# 构建训练和测试数据
fileids_pos = movie_reviews.fileids('pos')
fileids_neg = movie_reviews.fileids('neg')

features_pos = [(extract_features(movie_reviews.words(fileids=[f])), 'Positive') for f in fileids_pos]
features_neg = [(extract_features(movie_reviews.words(fileids=[f])), 'Negative') for f in fileids_neg]
threshold = 0.8
num_pos = int(threshold * len(features_pos))
num_neg = int(threshold * len(features_neg))

features_train = features_pos[:num_pos] + features_neg[:num_neg]
features_test = features_pos[num_pos:] + features_neg[num_neg:]

# 训练分类器
classifier = NaiveBayesClassifier.train(features_train)

# 测试分类器
print("Accuracy: ", accuracy(classifier, features_test))

# 语言模型:展示了如何使用NLTK构建一个简单的n-gram语言模型。
nltk.download('reuters')
from nltk.corpus import reuters

text = reuters.raw(reuters.fileids()[0])
tokens = word_tokenize(text.lower())

bigrams = ngrams(tokens, 2)
bigram_freq = Counter(bigrams)

# 输出最常见的5个bigram
print(bigram_freq.most_common(5))

运行结果:

**图片**

注意事项:

性能问题:对于大规模数据集,NLTK可能不是最高效的选择。

语言支持:NLTK主要支持英语,对于其他语言可能需要额外的处理。

版本兼容性:确保使用的Python版本与NLTK兼容。

首次运行报错,需要手动导入下载,操作如下图

手动执行Python,然后导入,下载相应包

python >> import nltk >> nltk.download(“punkt”)

图片

总结:NLTK是Python中用于自然语言处理的重要库之一。它提供了丰富的工具和数据集,适用于文本处理、分析和建模等多种任务。虽然NLTK在处理大型数据集时可能不是最高效的,但它的易用性和强大功能使其成为学习和实践自然语言处理的优秀工具。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python海绵宝宝

目录 系列文章 写在前面 海绵宝宝 写在后面 系列文章 序号文章目录直达链接表白系列1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want595.blog.csdn.net/article/details/1297945183跳动的爱心https://want595.blog.cs…

MySQL数据库从小白到入门(一)

MySQL概述: MySQL连接: 打开cmd窗口 window r 输入 cmd输入mysql -u用户名 -p密码; 示例:mysql -uroot -p1234; 这种方式登录mysql,会出现警告,建议使用下面这种。mysql -uroot -p 然后回车…

sharding-jdbc实现分库分表

shigen日更文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 😅😅最近几天的状态有点不对,所以有几天没有更新了。 当我们的数据量比较大…

7.6 Windows驱动开发:内核监控FileObject文件回调

本篇文章与上一篇文章《内核注册并监控对象回调》所使用的方式是一样的都是使用ObRegisterCallbacks注册回调事件,只不过上一篇博文中LyShark将回调结构体OB_OPERATION_REGISTRATION中的ObjectType填充为了PsProcessType和PsThreadType格式从而实现监控进程与线程&a…

node.js-连接SQLserver数据库

1.在自己的项目JS文件夹中建文件:config.js、mssql.js和server.js以及api文件夹下的user.js 2.在config.js中封装数据库信息 let app {user: sa, //这里写你的数据库的用户名password: ,//这里写数据库的密码server: localhost,database: medicineSystem, // 数据…

C# WPF上位机开发(绘图软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 本身c# wpf可以看成是生产力工具,它的意义在于可以快速根据业务的情况,把产品模型搭建出来。这一点不像c/c,需要…

Python容器——字典

Key——Value 键值对

Nacos源码解读04——服务发现

SpringBoot自动注入 项目启动的时候会通过自动注入的机制将 NacosDiscoveryClientConfiguration注入 当注入NacosDiscoveryClientConfiguration的时候会将DiscoveryClient一起注入Bean DiscoveryClient实现了SpringCloud的DiscoveryClient接口,重点是getInstances和…

观察者设计模式

package com.jmj.pattern.observer;/*抽象观察者类*/ public interface Observer {void update(String message);}package com.jmj.pattern.observer;/*** 抽象主题角色*/ public interface Subject {//添加观察者对象void attach(Observer observer);//删除订阅者void detach(…

Docker的常用基本命令(基础命令)

文章目录 1. Docker简介2. Docker环境安装Linux安装 3. 配置镜像加速4. Docker镜像常用命令列出镜像列表搜索镜像下载镜像查看镜像版本删除镜像构建镜像推送镜像 5. Docker容器常用命令新建并启动容器列出容器停止容器启动容器进入容器删除容器(慎用)查看…

AI创作ChatGPT源码+AI绘画(Midjourney绘画)+DALL-E3文生图+思维导图生成

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…

安装selenium+chrome详解

1、创建yaml文件 创建yaml文件,命名为:docker-compose-chrome.yaml,具体内容如下: version: "3.9" services:spiderdriver:image: selenium/standalone-chrome:114.0restart: alwayshostname: spiderdrivercontainer_name: spiderdriverdeploy:resources:limit…

为何全球电商都在拼“质价比”?

远在西雅图的希拉里,在著名的“黑色星期五”大促开始之前,她就已经准备好了一份购物清单。 然而,她发现身边的朋友们总是拉她组团购物。 在朋友和社交媒体的持续轰炸下,希拉里决定尝试一下这个让人贼上头的Temu。 最终&#xf…

4.OpenResty系列之Nginx负载均衡

1. 负载均衡配置 上篇文章中,代理仅仅指向一个服务器。但是,网站在实际运营过程中,大部分都是以集群的方式运行,这时需要使用负载均衡来分流。nginx 也可以实现简单的负载均衡功能。 假设这样一个应用场景:将应用部署…

鸿蒙绘制折线图基金走势图

鉴于鸿蒙下一代剥离aosp,对于小公司而言,要么用h5重构,要么等大厂完善工具、等华为出转换工具后跟进,用鸿蒙重新开发一套代码对于一般公司而言成本会大幅增加。但对于广大开发者来说,暂且不论未来鸿蒙发展如何&#xf…

在PyCharm中运行OpenCV

一、安装Anaconda配置python环境 这里选用清华大学开源软件镜像站:anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 下载的速度更快。 点击下载链接:Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsin…

神经网络模型预训练

根据神经网络各个层的计算逻辑用程序实现相关的计算,主要是:前向传播计算、反向传播计算、损失计算、精确度计算等,并提供保存超参数到文件中。 # coding: utf-8 import sys, os sys.path.append(os.pardir) # 为了导入父目录的文件而进行的…

Redis对象

Redis根据基本数据结构构建了自己的一套对象系统。主要包括字符串对象、列表对象、哈希对象、集合对象和有序集合对象 同时不同的对象都有属于自己的一些特定的redis指令集,而且每种对象也包括多种编码类型,和实现方式。 Redis对象结构 struct redisOb…

SSM SpringBoot vue社团事务管理系统

SSM SpringBoot vue社团事务管理系统 系统功能 登录 个人中心 人员信息管理 考勤信息管理 空闲时间管理 现金日记账管理 经费预算管理 物品租借管理 会议信息管理 活动信息管理 项目任务管理 公告通知管理 物资信息管理 开发环境和技术 开发语言:Java 使用框架:…

华为1+x网络系统建设与运维(中级)-练习题2

一.设备命令 LSW1 [Huawei]sys LSW1 同理可得,给所有设备改名 二.VLAN LSW1 [LSW1]vlan ba 10 20 [LSW1]int g0/0/1 [LSW1-GigabitEthernet0/0/1]port link-type trunk [LSW1-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 20 [LSW1-GigabitEthernet0/0/1]in…