nlp入门之nltk工具的使用

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,5000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 本文作为nlp入门开山第三篇,简要的介绍了nltk工具的使用

源码请到:自然语言处理练习: 学习自然语言处理时候写的一些代码 (gitee.com)

三、nltk工具的使用

3.1  nltk工具的安装

使用命令

pipinstallnltk


安装nltk,但是仅仅是安装了nltk的框架,内部的软件包需要使用命令

nltk.download()


执行命令会弹出一个窗口

无法下载软件包的问题可以参考这篇:NLTK语料库nltk.download()安装失败及下载很慢的解决方法_深度学习菜鸟的博客-CSDN博客

将服务器地址改为了http://www.nltk.org/nltk_data/

 

就可以正常安装软件包了

3.2 nltk分词操作

安装成功后就可以使用分词器进行分词了

示例:

input_str="Today's weather is good, very windy and sunny, we have no classes in the afternoon. We have to play " \
"basketball tomorrow"tokens=word_tokenize(input_str)
 print(tokens)


3.3 nltk简单文本操作

nltk可以进行一些简单的文本操作,如统计词的个数,查找词的位置等

示例:

# 文本操作t=Text(tokens)
print(t.count('good'))
print(t.index('good'))
print(t.plot())


 

3.4 停用词

出现频率很高但是对自然语言处理价值很低的词被叫做停用词

nltk自带了一些停用词表,输入命令就可以查看支持语言的停用词表

示例:

print(stopwords.fileids())


可以看到支持的语言不包含中文,所有接下来我们只使用英文语料库

输入命令就可以查看英文停用词表

示例:

print(stopwords.raw('english'))


数量很多就不全部展示了,接下来查找目前语料库中的停用词

print(test_words_set.intersection(set(stopwords.words('english'))))


为了进一步进行自然语言处理,很多时候我们需要将停用词进行筛除,nltk就可以做到这个功能。

示例:

filterd= [wforwintest_words_setifwnotinstopwords.words('english')]
print(filterd)


3.5 词性标注

nltk还可以将每个词的词性标注出来,词性表如下

示例:

tags=pos_tag(tokens)
print(tags)


3.6 分块

可以根据词性对词进行分块

示例:

我定义了一个MY_NP的词并且用正则表达式写出这个块的句子词性是什么样的,nltk可以找出语料库中符合的块

sentence= [('the', 'DT'), ('little', 'JJ'), ('yellow', 'JJ'), ('dog', 'NN'), ('died', 'VBD')]
grammer="MY_NP: {<DT>?<JJ>*<NN>}"cp=nltk.RegexpParser(grammer)
result=cp.parse(sentence)


3.7 命名实体识别

nltk可以提取出一些语句中的实体

示例:

# 命名实体识别sentence="Edison went to Tsinghua University today"print(ne_chunk(pos_tag(word_tokenize(sentence))))


Edison被识别出是个人,清华大学被识别出是个组织

3.8 数据清洗

网络上爬取的语料中有可能有很多特殊符号,对nlp造成了很大的影响,所以需要一些方法来进行数据清理,利用nltk可以很好的办到这些

示例:

# 数据清洗s="RT @Amila #Test\nTom\'s newly listed Co  &amp; Mary\'s unlisted       Group to supply tech for nlTK.\nh $TSLA " \
"$AAPL https:// t.co/x34afsfQsh"cache_english_stopwords=stopwords.words('english')
deftext_clean(text):
print('原始数据:', text, "\n")
# 去掉HTML标签(e.g. &amp;)text_no_special_entities=re.sub(r'&\w*;|#\w*|@\w*', '', text)
print("去掉特殊标签后的:", text_no_special_entities, '\n')
# 去掉一些价值符号text_no_tickers=re.sub(r'\$\w*', '', text_no_special_entities)
print("去掉一些价值符号的:", text_no_tickers, '\n')
# 去掉超链接text_no_hyperlinks=re.sub(r'https?://.*/\w*', '', text_no_tickers)
print("去掉超链接的:", text_no_hyperlinks, '\n')
# 去掉一些专门名词缩写,简单来说就是字母较少的词text_no_small_words=re.sub(r'\b\w{1,2}\b', '', text_no_hyperlinks)
print("去掉专门名词缩写的:", text_no_small_words, '\n')
# 去掉多余空格text_no_whitespace=re.sub(r'\s\s+', " ", text_no_small_words)
text_no_whitespace=text_no_whitespace.lstrip(' ')
print("去掉多余空格的:", text_no_whitespace, '\n')
# 分词tokens=word_tokenize(text_no_whitespace)
print("分词结果:", tokens, '\n')
# 去停用词list_no_stopwords= [iforiintokensifinotincache_english_stopwords]
print('去掉停用词结果', list_no_stopwords, '\n')
# 过滤后结果text_filtered=' '.join(list_no_stopwords)
print('过滤后', text_filtered)
text_clean(s)



相关文章
|
存储 自然语言处理 数据可视化
自然语言入门:NLP数据读取与数据分析
本章主要内容为数据读取和数据分析,具体使用`Pandas`库完成数据读取操作,并对赛题数据进行分析构成。
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(NLP自然语言处理概念介绍)
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(NLP自然语言处理概念介绍)
126 0
|
18天前
|
自然语言处理 Python
如何使用自然语言处理库`nltk`进行文本的基本处理
这段Python代码展示了如何使用`nltk`库进行文本的基本处理,包括分词和词频统计。首先需要安装`nltk`库,然后通过`word_tokenize`方法将文本拆分为单词,并使用`FreqDist`类统计每个单词的出现频率。运行代码后,会输出每个词的出现次数,帮助理解文本的结构和常用词。
|
1月前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
46 2
|
3月前
|
自然语言处理 算法 数据可视化
NLP-基于bertopic工具的新闻文本分析与挖掘
这篇文章介绍了如何使用Bertopic工具进行新闻文本分析与挖掘,包括安装Bertopic库、加载和预处理数据集、建立并训练主题模型、评估模型性能、分类新闻标题、调优聚类结果的详细步骤和方法。
NLP-基于bertopic工具的新闻文本分析与挖掘
|
4月前
|
SQL 人工智能 自然语言处理
一款利用人工智能将自然语言查询转换为 SQL 代码的互译工具 - SQL Translator
一款利用人工智能将自然语言查询转换为 SQL 代码的互译工具 - SQL Translator
119 0
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
自然语言处理(NLP)技术入门指南
【5月更文挑战第3天】本文是自然语言处理(NLP)技术的入门指南,介绍了NLP的基本概念、关键技术和学习建议。NLP旨在实现人机自然语言交互,应用于机器翻译、文本分类等领域。核心技术包括词法分析、句法分析、语义分析及深度学习模型。入门学习需掌握基础知识,动手实践,关注前沿技术并持续学习。通过学习NLP,可为人工智能发展贡献力量。
|
6月前
|
缓存 自然语言处理 数据处理
Python自然语言处理面试:NLTK、SpaCy与Hugging Face库详解
【4月更文挑战第16天】本文介绍了Python NLP面试中NLTK、SpaCy和Hugging Face库的常见问题和易错点。通过示例代码展示了如何进行分词、词性标注、命名实体识别、相似度计算、依存关系分析、文本分类及预训练模型调用等任务。重点强调了理解库功能、预处理、模型选择、性能优化和模型解释性的重要性,帮助面试者提升NLP技术展示。
108 5
|
数据采集 机器学习/深度学习 自然语言处理
nlp入门之基于贝叶斯算法的拼写错误检测器
基于贝叶斯思想简单的实现了一个拼写错误检测器
|
6月前
|
机器学习/深度学习 自然语言处理 Java
中文自然语言处理相关资料 | Chinese NLP Toolkits 中文NLP工具
中文自然语言处理相关资料 | Chinese NLP Toolkits 中文NLP工具