当前位置:   article > 正文

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

词频处理

前言

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

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

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

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

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

正文

1. 安装

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

pip install nltk

2. 统计词频

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

  1. import nltk
  2. # 读取txt文本内容,写入你的txt文本路径
  3. with open(r'ck.txt', 'r', encoding='utf-8') as f:
  4. txt = f.read()
  5. f.close()
  6. word_list = {}
  7. # 使用nltk.FreqDist统计词频
  8. record = nltk.FreqDist(txt)
  9. for key, value in record.items():
  10. # print(f'{key}: {value}')
  11. word_list[key] = value
  12. print(word_list)

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

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

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

pip install matplotlib

示例代码如下:

  1. import matplotlib
  2. import nltk
  3. import matplotlib as plot
  4. # 显示中文
  5. matplotlib.rc("font", family="YouYuan")
  6. # 读取txt文本内容
  7. with open(r'ck.txt', 'r', encoding='utf-8') as f:
  8. txt = f.read()
  9. f.close()
  10. word_list = {}
  11. # 使用nltk.FreqDist统计词频
  12. record = nltk.FreqDist(txt)
  13. for key, value in record.items():
  14. # print(f'{key}: {value}')
  15. word_list[key] = value
  16. record.plot(20, cumulative=False)

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

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

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

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

3. 停用词处理 

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

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

  1. from nltk.corpus import stopwords
  2. stopwords.words('english') # 这里的语言为english

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

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

  1. import matplotlib
  2. import nltk
  3. import matplotlib as plot
  4. # 显示中文
  5. matplotlib.rc("font", family="YouYuan")
  6. # 读取txt文本内容
  7. with open(r'ck.txt', 'r', encoding='utf-8') as f:
  8. txt = f.read()
  9. f.close()
  10. word_list = {}
  11. # 读取停用词
  12. with open(r'中文停用词.txt', 'r', encoding='utf-8') as f:
  13. stopword = f.read()
  14. f.close()
  15. # 使用nltk.FreqDist统计词频
  16. record = nltk.FreqDist(txt)
  17. for key, value in record.items():
  18. # print(f'{key}: {value}')
  19. if key in stopword:
  20. pass
  21. else:
  22. word_list[key] = value
  23. record.plot(20, cumulative=False)

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

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

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号