NLP-统计词频之处理停用词

前言

本文是该专栏的第1篇,后面会持续分享NLP的各种干货知识,值得关注。

一般来说,自然语言处理(NLP)就是开发能够理解人类语言的应用程序或者应用服务。

举个例子,如Facebook News Feed这种社交网站推送,它的算法知道你的兴趣是自然语言处理,就会推送相关的广告或者帖子;再比如Apple的Sri,它通过语言引擎处理,应对你的问题,给出一些回答内容。

现阶段,自然语言工具包最受欢迎的自然语言处理库是Natural language toolkit (NLTK),其是用python编写的,有着非常强大的社区支持。而且NLTK非常容易上手,主要在于它是最简单的自然语言(NLP)处理库。

以下使用NLTK处理停用词为例,跟着笔者直接往下看。

正文

1. 安装

如果你已安装,请忽略该步骤,直接往下看即可。安装方法如下:

pip install nltk

2. 统计词频

假设,现在需要读取某个txt文本内容,将其内容的词频进行统计,示例代码如下:

import nltk


# 读取txt文本内容,写入你的txt文本路径
with open(r'ck.txt', 'r', encoding='utf-8') as f:
    txt = f.read()
    f.close()

word_list = {}
# 使用nltk.FreqDist统计词频
record = nltk.FreqDist(txt)
for key, value in record.items():
    # print(f'{key}: {value}')
    word_list[key] = value

print(word_list)

注意:由于这里的txt文本是笔者本地的,你可以替换成一个你自己的txt文本即可。

运行上述代码成功之后,结果显示如下:

单独看上面的结果,会显得比较乏味。可以直接使用plot函数(即数据分析三剑客之一的matplotlib)做出频率分布图,matplotlib安装方法如下:

pip install matplotlib

示例代码如下:

import matplotlib
import nltk
import matplotlib as plot

# 显示中文
matplotlib.rc("font", family="YouYuan")

# 读取txt文本内容
with open(r'ck.txt', 'r', encoding='utf-8') as f:
    txt = f.read()
    f.close()

word_list = {}
# 使用nltk.FreqDist统计词频
record = nltk.FreqDist(txt)
for key, value in record.items():
    # print(f'{key}: {value}')
    word_list[key] = value

record.plot(20, cumulative=False)

注意当你的txt文本是中文的时候,必须加入该代码,否则可视化界面显示不了中文,代码如下:

import matplotlib

# 显示中文
matplotlib.rc("font", family="YouYuan")

运行上述代码,结果如下:

像上图中的“的,是,‘,’,‘。’”等等,这些词都属于停用词。而对于出现停用词,应该进行删除,防止它们影响分析结果。

3. 停用词处理 

NLTK,它自带了多种语言的停用词列表。

比如说,你想获取英文停用词表,使用如下代码即可:

from nltk.corpus import stopwords

stopwords.words('english')    # 这里的语言为english

根据对应语言,更改对应的参数即可。但是笔者认为这种停用词表并非一招吃遍天,所以最好是我们自己可以搭建一个停用词表,后期持续更新优化这个停用词表即可。笔者这里有中文停用词表以及英文停用词表,感兴趣的同学可以私信找我要即可。

考虑加入停用词之后,示例代码如下:

import matplotlib
import nltk
import matplotlib as plot

# 显示中文
matplotlib.rc("font", family="YouYuan")
# 读取txt文本内容
with open(r'ck.txt', 'r', encoding='utf-8') as f:
    txt = f.read()
    f.close()

word_list = {}
# 读取停用词
with open(r'中文停用词.txt', 'r', encoding='utf-8') as f:
    stopword = f.read()
    f.close()

# 使用nltk.FreqDist统计词频
record = nltk.FreqDist(txt)
for key, value in record.items():
    # print(f'{key}: {value}')
    if key in stopword:
        pass
    else:
        word_list[key] = value

record.plot(20, cumulative=False)

如果还想了解,后面笔者会持续更新NLP的相关干货知识,记得收藏并关注小编,后面的python干货在等着你。

如果喜欢本文或者本文对你有帮助的话,记得关注小编并点个赞哟,有问题和需求欢迎留言私信

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写python的鑫哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值