赞
踩
前言
本文是该专栏的第1篇,后面会持续分享NLP的各种干货知识,值得关注。
一般来说,自然语言处理(NLP)就是开发能够理解人类语言的应用程序或者应用服务。
举个例子,如Facebook News Feed这种社交网站推送,它的算法知道你的兴趣是自然语言处理,就会推送相关的广告或者帖子;再比如Apple的Sri,它通过语言引擎处理,应对你的问题,给出一些回答内容。
现阶段,自然语言工具包最受欢迎的自然语言处理库是Natural language toolkit (NLTK),其是用python编写的,有着非常强大的社区支持。而且NLTK非常容易上手,主要在于它是最简单的自然语言(NLP)处理库。
以下使用NLTK处理停用词为例,跟着笔者直接往下看。
正文
如果你已安装,请忽略该步骤,直接往下看即可。安装方法如下:
pip install nltk
假设,现在需要读取某个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")
运行上述代码,结果如下:
像上图中的“的,是,‘,’,‘。’”等等,这些词都属于停用词。而对于出现停用词,应该进行删除,防止它们影响分析结果。
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干货在等着你。
如果喜欢本文或者本文对你有帮助的话,记得关注小编并点个赞哟,有问题和需求欢迎留言私信。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。