admin 管理员组文章数量: 887021
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] = valueprint(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] = valuerecord.plot(20, cumulative=False)
注意:当你的txt文本是中文的时候,必须加入该代码,否则可视化界面显示不了中文,代码如下:
import matplotlib# 显示中文
matplotlib.rc("font", family="YouYuan")
运行上述代码,结果如下:
像上图中的“的,是,‘,’,‘。’”等等,这些词都属于停用词。而对于出现停用词,应该进行删除,防止它们影响分析结果。
3. 停用词处理
NLTK,它自带了多种语言的停用词列表。
比如说,你想获取英文停用词表,使用如下代码即可:
from nltk.corpus import stopwordsstopwords.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:passelse:word_list[key] = valuerecord.plot(20, cumulative=False)
如果还想了解,后面笔者会持续更新NLP的相关干货知识,记得收藏并关注小编,后面的python干货在等着你。
如果喜欢本文或者本文对你有帮助的话,记得关注小编并点个赞哟,有问题和需求欢迎留言私信。
本文标签: nlp
版权声明:本文标题:NLP 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1686499224h2552.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论