NLTK 基础知识总结

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: NLTK 基础知识总结

什么是 NLTK

NLTK,全称Natural Language Toolkit,自然语言处理工具包,是NLP研究领域常用的一个Python库,由宾夕法尼亚大学的Steven Bird和Edward Loper在Python的基础上开发的一个模块,至今已有超过十万行的代码。这是一个开源项目,包含数据集、Python模块、教程等;


如何安装

详情可以参见我的另一篇博客NLP的开发环境搭建,通过这篇博客,你将学会Python环境的安装以及NLTK模块的下载;


常见模块及用途


image.png

NLTK能干啥?

  • 搜索文本
  • 单词搜索:
  • 相似词搜索;
  • 相似关键词识别;
  • 词汇分布图;
  • 生成文本;
  • 计数词汇image.pngimage.png
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018-9-28 22:21
# @Author  : Manu
# @Site    : 
# @File    : python_base.py
# @Software: PyCharm
from __future__ import division
import nltk
import matplotlib
from nltk.book import *
from nltk.util import bigrams
# 单词搜索
print('单词搜索')
text1.concordance('boy')
text2.concordance('friends')
# 相似词搜索
print('相似词搜索')
text3.similar('time')
#共同上下文搜索
print('共同上下文搜索')
text2.common_contexts(['monstrous','very'])
# 词汇分布表
print('词汇分布表')
text4.dispersion_plot(['citizens', 'American', 'freedom', 'duties'])
# 词汇计数
print('词汇计数')
print(len(text5))
sorted(set(text5))
print(len(set(text5)))
# 重复词密度
print('重复词密度')
print(len(text8) / len(set(text8)))
# 关键词密度
print('关键词密度')
print(text9.count('girl'))
print(text9.count('girl') * 100 / len(text9))
# 频率分布
fdist = FreqDist(text1)
vocabulary = fdist.keys()
for i in vocabulary:
    print(i)
# 高频前20
fdist.plot(20, cumulative = True)
# 低频词
print('低频词:')
print(fdist.hapaxes())
# 词语搭配
print('词语搭配')
words = list(bigrams(['louder', 'words', 'speak']))
print(words)

NLTK设计目标

简易性;

一致性;

可扩展性;

模块化;

NLTK中的语料库

古腾堡语料库:gutenberg;

网络聊天语料库:webtext、nps_chat;

布朗语料库:brown;

路透社语料库:reuters;

就职演说语料库:inaugural;

其他语料库;

文本语料库结构

isolated: 独立型;

categorized:分类型;

overlapping:重叠型;

temporal:暂时型;

基本语料库函数


image.png

条件频率分布

image.png总结

以上就是自然语言处理NLP中NLTK模块的相关知识介绍了,希望通过本文能解决你对NLTK的相关疑惑,欢迎评论互相交流!!!




目录
相关文章
|
7月前
数据传输的基本概念
本内容介绍了带宽、数据传输速率和吞吐量的概念及三者关系。带宽是通信链路的最大传输能力,决定理论上限;数据传输速率表示实际传输速度,受多种因素影响可能低于带宽;吞吐量则是实际测量的传输速率,反映网络真实性能。用公路类比:带宽是宽度(容量)、数据传输速率是速度、吞吐量是实际通行量。
1279 7
|
7月前
|
数据采集 机器学习/深度学习 人工智能
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
687 0
|
算法
数据结构中的KMP算法及其改进算法
KMP算法通过引入部分匹配表,有效避免了重复计算,从而将字符串匹配的时间复杂度降低到O(m+n)。通过进一步优化next数组,KMP算法的效率得到了进一步提升。对于大规模字符串匹配问题,KMP算法及其改进算法提供了高效的解决方案,是计算机科学领域的经典算法之一。
653 3
将毫秒数量转换为时分秒字符串(毫秒数→转换为→00:00:00.000或00天00时00分00秒000毫秒形式)
将毫秒数量转换为时分秒字符串(毫秒数→转换为→00:00:00.000或00天00时00分00秒000毫秒形式)
|
前端开发 JavaScript 搜索推荐
深入理解前端路由:构建现代 Web 应用的基石(下)
深入理解前端路由:构建现代 Web 应用的基石(下)
深入理解前端路由:构建现代 Web 应用的基石(下)
|
存储 网络协议 安全
详解TCP报文格式以及TCP相关特性
详解TCP报文格式以及TCP相关特性
810 2
|
消息中间件 存储 负载均衡
什么是RabbitMQ?
RabbitMQ是一个开源的消息代理软件,用于在分布式系统中传递消息。它实现了高级消息队列协议(AMQP),提供了一种可靠的、强大的、灵活的消息传递机制,使得不同应用程序或组件之间可以轻松地进行通信。
515 0
|
JavaScript
在vue中如果头像为空时用姓名第一个字当头像
在vue中如果头像为空时用姓名第一个字当头像
275 0
|
C++ API 存储
protobuf 中的嵌套消息的使用 主要对set_allocated_和mutable_的使用
protobuf的简单的使用,不过还留下了一个问题,那就是之前主要介绍的都是对简单数据的赋值,简单数据直接采用set_xx()即可,但是如果不是简单变量而是自定义的复合类型变量,就没有简单的set函数调用了,下面看一个简单的例子。
2712 0
|
固态存储 芯片 内存技术
固态硬盘E2E数据保护机制
为什么采用E2E端对端数据保护机制很有必要呢?

热门文章

最新文章