前言

NTLK是著名的Python自然语言处理工具包,记录一下学习NTLK的总结。

安装nltk

pip install nltk

# 测试
import nltk
  • 安装相关的包
import nltk
nltk.download()
# 在弹出的界面选择想要安装的包 # 也可以指定安装
nltk.download('brown')

自然语言处理

第一步:获取语料库

语料库又称为词典,涉及多个分类,nltk自带了大量的语料库,意料之中大部分都是英文语料库,随便选一个装上。

import nltk
nltk.download('brown') # 布朗大学的语料库

但是我需要的是中文的语料库,发现有一个繁体中文的语料库,装上;

nltk.download('sinica_treebank')

另外还可以安装自己的语料库,将语料库文件放在LTK_DATA/corpora/的目录下

from nltk.corpus import PlaintextCorpusReader
corpus_root = r"xxxx" # 获取语料库目录
file_pattern = r"xxx\.txt" # 获取下面的文件
wordlists = PlaintextCorpusReader(corpus_root, file_pattern)
wordlists.fileids() # 获取文件列表
wordlists.words("1001.txt") # 获取单词

很多的分词工具自带了标注语料库,可以参考使用。

第二步:分词

将一个句子分解成不同词性的词语,有众多不同的分词工具,英文分词简单,中文如jieba,foolnltk等。

  • 英文分词
# 安装库
import nltk
nltk.download('punkt')
import nltk
text1 = 'I like the movie so much!'
raw_words = nltk.word_tokenize(text1)
print(raw_words)
  • 中文分词
# 安装
pip install jieba
import jieba

seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("Full Mode:" + "/ ".join(seg_list)) # 全模式 seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list)) # 精确模式 seg_list = jieba.cut("他来到了网易杭研大厦") # 默认是精确模式
print(", ".join(seg_list)) seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") # 搜索引擎模式
print(", ".join(seg_list))

英文文本的词形归一化

  • 词干提取
# 三个常用的类PorterStemmer, SnowballStemmer, LancasterStemmer
from nltk.stem.porter import PorterStemmer, SnowballStemmer, LancasterStemmer porter_stemmer = PorterStemmer()
snowball_stemmer = SnowballStemmer('english') # 选择一门语言
lancaster_stemmer = LancasterStemmer()
print(lancaster_stemmer.stem('looked'))
print(porter_stemmer.stem('red'))
print(porter_stemmer.stem('looking')) # 除去ing等保留词干
snowball_stemmer.stem('looking')
  • 词形归并
from nltk.stem import WordNetLemmatizer 

wordnet_lematizer = WordNetLemmatizer()
print(wordnet_lematizer.lemmatize('are'))
print(wordnet_lematizer.lemmatize('went'))
  • 词性标注
import nltk

words = nltk.word_tokenize('Python is a good language.')
print(nltk.pos_tag(words))
  • 去除停用词

停用词都是人工输入、非自动化生成的,形成停用词表,分词后判断是否是停用词。

from nltk.corpus import stopwords
filtered_words = [word for word in words if word not in stopwords.words('english')]

英文语言处理实例

  • 安装需要的库
import nltk
nltk.download('wordnet')
nltk.download('punkt')
nltk.download('stopwords')
  • 实例
import nltk
from nltk.stem import WordNetLemmatizer
from nltk.corpus import stopwords def proc_text(text):
"""
处理文本
"""
# 分词
raw_words = nltk.word_tokenize(text)
new_words = raw_words
# 词形归并
wordnet_lematizer = WordNetLemmatizer()
words = [wordnet_lematizer.lemmatize(new_word) for new_word in new_words]
# 去除停用词
filtered_words = [word for word in words if word not in stopwords.words('english')]
# 去除标点
res_words = [word for word in filtered_words if word not in ',.!' ]
return res_words if __name__ == "__main__":
with open('./english.txt') as f:
text = f.read()
print(proc_text(text))

中文语言处理实例

import jieba

def chinese_text(text):
"""
处理中文文本
:param text:
:return:
"""
# 分词
word_list = jieba.cut(text, cut_all=True)
# 除去空字符
words = [word for word in word_list if word]
return words

总结

自然语言处理按步骤来分别为获取语料库、加载语句进行分词、词型归一化、最后输出处理结果,后续在此基础上可以进一步统计、过滤等。

参考

python之自然语言处理入门(一)的更多相关文章

  1. Python NLTK 自然语言处理入门与例程(转)

    转 https://blog.csdn.net/hzp666/article/details/79373720     Python NLTK 自然语言处理入门与例程 在这篇文章中,我们将基于 Pyt ...

  2. 转-Python自然语言处理入门

      Python自然语言处理入门 原文链接:http://python.jobbole.com/85094/ 分享到:20 本文由 伯乐在线 - Ree Ray 翻译,renlytime 校稿.未经许 ...

  3. Python编程:从入门到实践(选记)

    本文参考< Python 编程:从入门到实践>一书,作者: [ 美 ] Eric Matthes 第1章 起步 1.1     搭建python环境 在不同的操作系统中, Python 存 ...

  4. HanLP《自然语言处理入门》笔记--1.新手上路

    1. 新手上路 自然语言处理(Natural Language Processing,NLP)是一门融合了计算机科学.人工智能及语言学的交叉学科,它们的关系如下图所示.这门学科研究的是如何通过机器学习 ...

  5. HanLP《自然语言处理入门》笔记--2.词典分词

    2. 词典分词 中文分词:指的是将一段文本拆分为一系列单词的过程,这些单词顺序拼接后等于原文本. 中文分词算法大致分为基于词典规则与基于机器学习这两大派. 2.1 什么是词 在基于词典的中文分词中,词 ...

  6. Python黑客编程2 入门demo--zip暴力破解

    Python黑客编程2 入门demo--zip暴力破解 上一篇文章,我们在Kali Linux中搭建了基本的Python开发环境,本篇文章为了拉近Python和大家的距离,我们写一个暴力破解zip包密 ...

  7. 用Python做自然语言处理必知的八个工具【转载】

    Python以其清晰简洁的语法.易用和可扩展性以及丰富庞大的库深受广大开发者喜爱.其内置的非常强大的机器学习代码库和数学库,使Python理所当然成为自然语言处理的开发利器. 那么使用Python进行 ...

  8. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  9. Python云端系统开发入门——框架基础

    Django框架基础 这是我学习北京理工大学嵩天老师的<Python云端系统开发入门>课程的笔记,在此我特别感谢老师的精彩讲解和对我的引导. 1.Django简介与安装 Django是一个 ...

随机推荐

  1. c#中,字符串前加@是什么意思

    让转移字符"\"保持原意,不要转义,如一个地址字符串string path="c:\abc\";默认的"\"是作为转义来使用的,而不是一个真 ...

  2. C++解析(31):自定义内存管理(完)

    0.目录 1.遗失的关键字mutable 2.new / delete 3.new[] / delete[] 4.小结 5.C++语言学习总结 1.遗失的关键字mutable 笔试题: 统计对象中某个 ...

  3. ACID和CAP, BASE

      ACID:关系型数据库中事务的4个属性:   Atomicity,原子性,整个事务的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间的某个环节.事务在执行过程中出错,会回滚到事务开始前的状 ...

  4. JDBC连接Oracle

    数据库的操作是当前系统开发必不可少的开发部分之一,尤其是在现在的大数据时代,数据库尤为重要.但是你真的懂得Java与数据库是怎么连接的么? 先给大家一个数据库连接的简单实例: package com. ...

  5. 光荣之路测试开发面试linux考题之四:性能命令

    Hi,大家好我是tom,I am back.今天要给大家讲讲linux系统一些性能相关命令. 1.fdisk 磁盘管理 是一个强大的危险命令,所有涉及磁盘的操作都由该命令完成,包括:新增磁盘.增删改磁 ...

  6. SpringBoot web 小项目

    Spring Boot 整合 Thymeleaf 完整 Web 案例 原创出处  作者:泥瓦匠BYSocket 希望转载,保留摘要,谢谢! Thymeleaf 是一种模板语言.那模板语言或模板引擎是什 ...

  7. Web之CGIC的介绍与使用20171229

    一.CGIC简介 1.CGI简介 CGI(Common Gateway Interface)是外部应用扩展应用程序与WWW服务器交互的一个标准接口.按照CGI标准编写的外部扩展应用程序可以处理客户端浏 ...

  8. mybatis中的resultMap与resultType、parameterMap与 parameterType的区别

    Map:映射:Type:Java类型 resultMap 与 resultType.parameterMap 与  parameterType的区别在面试的时候被问到的几率非常高,项目中出现了一个小b ...

  9. vim切换显示器乱行问题解决

    http://note.youdao.com/noteshare?id=ccdad950ca154a6b1597cbe2ede07b81

  10. 使用OAuth2.0协议的github、QQ、weibo第三方登录接入总结

    目录 第三方接入总结 OAuth2.0介绍 github OAuth2.0登录接入 国内第三方应用商SDK使用 微博SDK 腾讯QQ SDK passport.js插件使用 安装 相关中间件.路由 返 ...