python语言处理初探——分词、词性标注、提取名词

这个教程里我们只需要调库,不需要了解原理,很简单的

参考文章:
参考:Python NLTK 自然语言处理入门与例程
参考1:NLP入门学习1——分词、词性标注 - CSDN博客
参考2:使用nltk进行分词、词性标注、词性提取 - 知乎

介绍和安装:

可以直接下这个压缩包
文章代码下载:蓝奏云链接

NLTK是最受欢迎的英文自然语言处理库

其包含了两部分,pip里带有的库,和它另外要下载的扩展库(大概700M)
首先我们要用python官方安装器pip安装ntkl库,并用ntkl的函数安装它的扩展库
新建一个download.py文件,输入运行以下代码

try:
    import nltk
except ImportError: # 尝试导入nltk库,如果没有则系统运行pip安装
    import os
    os.system('pip install nltk')
    import nltk

nltk.download() # nltk自己的download程序

在弹出来的窗口中点击download下载安装
在这里插入图片描述

注意:如果提示“由于目标计算机积极拒绝”,下载出错

这是因为nltk的扩展库下载源来自github,网络被墙了
需要自己想办法,或使用我的压缩包里包含的steamcommunity_302软件绕过github服务器

打开包里“绕过github服务器的软件(如果下载出错”文件夹,点开程序,点击“设置” - 打勾“Github访问”,保存设置
再点启动服务请添加图片描述

代码:

这里我们先导入库,并自定义一段自己的英文文本

# coding: utf-8
# NLTK是最受欢迎的自然语言处理库
import nltk

# 自然语言处理
# 使用的文本
text = "Hello Mr. Adam, how are you? I hope everything is going well. Today is a good day, see you dude." 

分词

直接调用NLTK的自带分函数

words = nltk.word_tokenize(text) # 单词分词
# print(words) # 也可以直接这样输出
print("words:" + str(words))	# 字符串+转换成字符串的变量

输出效果:
words:[‘Hello’, ‘Mr.’, ‘Adam’, ‘,’, ‘how’, ‘are’, ‘you’, ‘?’, ‘I’, ‘hope’, ‘everything’, ‘is’, ‘going’, ‘well’, ‘.’, ‘Today’, ‘is’, ‘a’, ‘good’, ‘day’, ‘,’, ‘see’, ‘you’, ‘dude’, ‘.’]

可以看到每个单词都被分开了

词性标注

tags = nltk.pos_tag(words) # 对单个字符进行标注
print("tags:" + str(tags))

输出效果:
tags:[(‘Hello’, ‘NNP’), (‘Mr.’, ‘NNP’), (‘Adam’, ‘NNP’), (‘,’, ‘,’), (‘how’, ‘WRB’), (‘are’, ‘VBP’), (‘you’, ‘PRP’), (‘?’, ‘.’), (‘I’, ‘PRP’), (‘hope’, ‘VBP’), (‘everything’, ‘NN’), (‘is’, ‘VBZ’), (‘going’, ‘VBG’), (‘well’, ‘RB’), (‘.’, ‘.’), (‘Today’, ‘NN’), (‘is’, ‘VBZ’), (‘a’, ‘DT’), (‘good’, ‘JJ’), (‘day’, ‘NN’), (‘,’, ‘,’), (‘see’, ‘VBP’), (‘you’, ‘PRP’), (‘dude’, ‘VBP’), (‘.’, ‘.’)]

每个单词后面跟着它的词性,词性表可以参考在这里插入图片描述

提取名词

例:(‘day’, ‘NN’)
↑在列表里判断后一个变量是否为’NN’或’NNP’

NN表示普通名词,NNP表示专有名词

并输出(单词,词性)

NN = [(s1,s2) for (s1,s2) in tags if s2 in ['NN', 'NNP']]
#对list列表的tags的两个变量进行判断(s1代表第一个变量,s2代表第二个变量)
#提取出tags的NN和NNP单词。NN表示普通名词,NNP表示专有名词
print("N:" + str(NN))

输出效果:

N:[(‘Hello’, ‘NNP’), (‘Mr.’, ‘NNP’), (‘Adam’, ‘NNP’), (‘everything’, ‘NN’), (‘Today’, ‘NN’), (‘day’, ‘NN’)]

或:
只输出第一个变量(单词)

NN = [s1 for (s1,s2) in tags if s2 in ['NN', 'NNP']]
#对list列表的tags的两个变量进行判断(s1代表第一个变量,s2代表第二个变量)
#提取出tags的NN和NNP单词。NN表示普通名词,NNP表示专有名词
print("N:" + str(NN))

输出效果:
N:[‘Hello’, ‘Mr.’, ‘Adam’, ‘everything’, ‘Today’, ‘day’]

教程结束
谢谢阅读!
本文章所有的代码都放在开头了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值