上次我们看了词频的统计和如何处理停用词。
这次我们看与语义相关的NLP
使用NLTK Tokenize文本
如果有一下这样一段文本:
Python can be easy to pick up whether you're a first time programmer or you're experienced with other languages. The following pages are a useful first step to get on your way writing programs with Python!
使用句子tokenizer将文本tokenize成句子:
from nltk.tokenize import sent_tokenize
mytext = "Python can be easy to pick up whether you're a first time programmer or you're experienced with other languages. The following pages are a useful first step to get on your way writing programs with Python!"
print(sent_tokenize(mytext))
输出:
["Python can be easy to pick up whether you're a first time programmer or you're experienced with other languages.", 'The following pages are a useful first step to get on your way writing programs with Python!']
它能把每句话准确的识别出来。
接下来试试单词tokenizer:
from nltk.tokenize import word_tokenize
mytext = "Python can be easy to pick up whether you're a first time programmer or you're experienced with other languages. The following pages are a useful first step to get on your way writing programs with Python!"
print(word_tokenize(mytext))
输出:
['Python', 'can', 'be', 'easy', 'to', 'pick', 'up', 'whether', 'you', "'re", 'a', 'first', 'time', 'programmer', 'or', 'you', "'re", 'experienced', 'with', 'other', 'languages', '.', 'The', 'following', 'pages', 'are', 'a', 'useful', 'first', 'step', 'to', 'get', 'on', 'your', 'way', 'writing', 'programs', 'with', 'Python', '!']
它也能准确的识别每个单词。
使用Tokenize时可以指定语言 : sent_tokenize(mytext,
"Chinese"
)
同义词处理
WordNet是一个为自然语言处理而建立的数据库。它包括一些同义词组和一些简短的定义。
具体看代码:
from nltk.corpus import wordnet
syn = wordnet.synsets("happiness")
print(syn[0].definition())
输出:
state of well-being characterized by emotions ranging from contentment to intense joy
它能具体解读出这个词汇的意思
所以我可以使用如下的方式来获取它的同义词:
from nltk.corpus import wordnet
synonyms = []
for syn in wordnet.synsets('happy'):
for lemma in syn.lemmas():
synonyms.append(lemma.name())
print(synonyms)
输出:
['happy', 'felicitous', 'happy', 'glad', 'happy', 'happy', 'well-chosen']
同样的,我们也因此可以得到反义词处理:
antonyms = []
for syn in wordnet.synsets("happy"):
for l in syn.lemmas():
if l.antonyms():
antonyms.append(l.antonyms()[0].name())
print(antonyms)
输出:
['unhappy']
词干提取
语言形态学和信息检索里,词干提取是去除词缀得到词根的过程,例如working的词干为work。
搜索引擎在索引页面时就会使用这种技术,所以很多人为相同的单词写出不同的版本。
有很多种算法可以避免这种情况,最常见的是波特词干算法。NLTK有一个名为PorterStemmer的类,就是这个算法的实现:
from nltk.stem import PorterStemmer
stemmer = PorterStemmer()
print(stemmer.stem('working'))
print(stemmer.stem('worked'))
输出:
work
work
单词变体还原
单词变体还原类似于词干,但不同的是,变体还原的结果是一个真实的单词。不同于词干,当你试图提取某些词时,它会产生类似的词:
from nltk.stem import PorterStemmer
stemmer = PorterStemmer()
print(stemmer.stem('increases'))
输出:
increas
现在,如果用NLTK的WordNet来对同一个单词进行变体还原,才是正确的结果:
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
print(lemmatizer.lemmatize('increases'))
输出:
increase
结果可能会是一个同义词或同一个意思的不同单词。
有时候将一个单词做变体还原时,总是得到相同的词。
这是因为语言的默认部分是名词。要得到动词,可以这样指定:
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
print(lemmatizer.lemmatize('playing', pos="v"))
输出:
play
实际上,这也是一种很好的文本压缩方式,最终得到文本只有原先的50%到60%。
结果还可以是动词(v)、名词(n)、形容词(a)或副词(r):
print(lemmatizer.lemmatize('playing', pos="n"))
print(lemmatizer.lemmatize('playing', pos="a"))
print(lemmatizer.lemmatize('playing', pos="r"))
输出:
playing
playing
playing
这次就到这里吧。
下期见。
相关推荐
Python自然语言处理(NLP)是人工智能领域的一个关键分支,主要目标是使计算机能够理解和处理人类的自然语言。在Python中,NLP的实现离不开强大的工具包,其中最常用的就是Natural Language Toolkit(NLTK)。NLTK是...
《Python中文自然语言处理基础与实战》是一本深入浅出的教程,涵盖了使用Python进行NLP工作的各个方面。在本文中,我们将详细探讨该领域的重要概念、工具和技术,并结合实际案例来深化理解。 首先,让我们从Python...
Python中文自然语言处理(NLP)是近年来在大数据和人工智能领域中备受关注的一个重要分支,尤其对于中文文本的理解和分析,Python提供了丰富的库和工具,使得开发者能够高效地进行文本预处理、情感分析、词性标注、...
python - 自然语言处理从入门到实战(1-13 全部代码,可同书籍一起食用。 python - 自然语言处理从入门到实战(1-13 全部代码,可同书籍一起食用。 python - 自然语言处理从入门到实战(1-13 全部代码,可同书籍一起...
《Python自然语言处理实战》是一本深入探讨Python在NLP(自然语言处理)领域的实践应用的书籍。PDF版本为读者提供了方便的电子阅读体验,同时附带的代码资源则可以帮助读者更好地理解和应用书中的理论知识。这个...
《用Python进行自然语言处理》是一本专注于介绍如何利用Python编程语言进行自然语言处理(NLP)的实用指南。自然语言处理是计算机科学的一个重要领域,它涉及到人类语言的理解、生成和分析,使得计算机能够与人进行...
【Python入门】 Python是一种高级编程语言,以其简洁明了的语法和强大的功能深受程序员喜爱。作为零基础的初学者,了解Python的基础至关重要。在"Python入门"阶段,你将学习到以下关键知识点: 1. **环境搭建**:...
"Python-NLPBeginner自然语言处理入门练习" 是一个针对初学者的教程,旨在帮助他们理解 NLP 的基本概念,并通过实践应用来提升技能。在这个项目中,我们将探讨一系列关键的 NLP 概念和技术,以及如何使用 Python 来...
#### 一、自然语言处理(NLP)概述 **自然语言处理(NLP)定义:** - **定义:**自然语言处理(Natural Language Processing, NLP)是一种涉及计算机与人类(自然)语言交互的技术。其目标在于让计算机能够理解、...
### Python入门知识点详解 #### 一、Python简介与特点 Python是一种高级编程语言,由Guido van Rossum创建,以其简洁、清晰的语法著称,适用于多种编程领域,包括Web开发、数据分析、人工智能等。Python的特点包括...
【Python入门Demo-WordCount】是一个适合初学者的Python编程示例,主要目的是介绍如何使用Python进行基础的数据处理,特别是文本分析中的词频统计。在这个Demo中,我们将学习到Python语言的一些基本语法、文件操作、...
在本项目"hanlp-python_spiderpbl_ch11/11.5.py_自然语言处理入门_"中,我们将探讨使用Python进行NLP的实践应用。 `11.5.py`可能是一个章节练习或示例代码,对应何晗先生的书籍关于自然语言处理的部分。这个Python...
* 介绍 Python 的发展方向和应用领域,如数据分析、自然语言处理、社交网络分析、人工智能、深度学习、计算机视觉、网络爬虫、量化交易等 第二章:程序设计与 Python 语言 * 讲解计算机的组成和工作过程 * 介绍 ...
使用场景及目标:本文适合作为 Python 自然语言处理的入门教材,可以帮助读者快速掌握 NLTK 和 Spacy 的基本用法,为复杂 NLP 任务打下坚实基础。 其他说明:本文通过详细的代码示例和实际应用案例,使读者能够更好...
自然语言处理(NLP)涉及使计算机理解和生成人类语言,而计算机视觉(CV)则是让计算机理解图像和视频内容。 在这个压缩包中,"Python入门:程序设计概论.mp4"是一个视频文件,很可能是系列讲座或教程的一部分,由...
Python的设计哲学注重代码的可读性,它采用了更接近自然语言的英文关键字,使得Python代码相对容易理解。Python语言是解释型的,这意味着它在执行时不需要事先编译,直接由解释器逐行翻译执行。这一特性让Python在...
python VIP学习的资料,合集包含3份:python数据分析与自然语言处理;快速入门python培训教程;自然语言处理课件。分享学习共同进步。为了一个月不走弯路快速入门学习python和python数据分析与机器学习的学习路线,...