`
wx1568016009
  • 浏览: 23523 次
文章分类
社区版块
存档分类
最新评论

Python入门NLP(二)

 
阅读更多

上次我们看了词频的统计和如何处理停用词。

这次我们看与语义相关的NLP

640?wx_fmt=jpeg

使用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)入门.pdf

    Python自然语言处理(NLP)是人工智能领域的一个关键分支,主要目标是使计算机能够理解和处理人类的自然语言。在Python中,NLP的实现离不开强大的工具包,其中最常用的就是Natural Language Toolkit(NLTK)。NLTK是...

    python中文自然语言处理基础与实战

    《Python中文自然语言处理基础与实战》是一本深入浅出的教程,涵盖了使用Python进行NLP工作的各个方面。在本文中,我们将详细探讨该领域的重要概念、工具和技术,并结合实际案例来深化理解。 首先,让我们从Python...

    Python中文自然语言处理基础与实战_源代码和实验数据.rar

    Python中文自然语言处理(NLP)是近年来在大数据和人工智能领域中备受关注的一个重要分支,尤其对于中文文本的理解和分析,Python提供了丰富的库和工具,使得开发者能够高效地进行文本预处理、情感分析、词性标注、...

    python - 自然语言处理从入门到实战(1-13 全部代码).rar

    python - 自然语言处理从入门到实战(1-13 全部代码,可同书籍一起食用。 python - 自然语言处理从入门到实战(1-13 全部代码,可同书籍一起食用。 python - 自然语言处理从入门到实战(1-13 全部代码,可同书籍一起...

    python自然语言处理实战pdf_dode.zip

    《Python自然语言处理实战》是一本深入探讨Python在NLP(自然语言处理)领域的实践应用的书籍。PDF版本为读者提供了方便的电子阅读体验,同时附带的代码资源则可以帮助读者更好地理解和应用书中的理论知识。这个...

    用Python进行自然语言处理.pdf_afternoonz8z_用python进行自然语言处理_

    《用Python进行自然语言处理》是一本专注于介绍如何利用Python编程语言进行自然语言处理(NLP)的实用指南。自然语言处理是计算机科学的一个重要领域,它涉及到人类语言的理解、生成和分析,使得计算机能够与人进行...

    零基础Python入门--课件代码下载1_python入门_python_billhhr_

    【Python入门】 Python是一种高级编程语言,以其简洁明了的语法和强大的功能深受程序员喜爱。作为零基础的初学者,了解Python的基础至关重要。在"Python入门"阶段,你将学习到以下关键知识点: 1. **环境搭建**:...

    Python-NLPBeginner自然语言处理入门练习

    "Python-NLPBeginner自然语言处理入门练习" 是一个针对初学者的教程,旨在帮助他们理解 NLP 的基本概念,并通过实践应用来提升技能。在这个项目中,我们将探讨一系列关键的 NLP 概念和技术,以及如何使用 Python 来...

    浅谈Python NLP入门教程

    #### 一、自然语言处理(NLP)概述 **自然语言处理(NLP)定义:** - **定义:**自然语言处理(Natural Language Processing, NLP)是一种涉及计算机与人类(自然)语言交互的技术。其目标在于让计算机能够理解、...

    Python入门.pdf

    ### Python入门知识点详解 #### 一、Python简介与特点 Python是一种高级编程语言,由Guido van Rossum创建,以其简洁、清晰的语法著称,适用于多种编程领域,包括Web开发、数据分析、人工智能等。Python的特点包括...

    Python入门Demo-WordCount

    【Python入门Demo-WordCount】是一个适合初学者的Python编程示例,主要目的是介绍如何使用Python进行基础的数据处理,特别是文本分析中的词频统计。在这个Demo中,我们将学习到Python语言的一些基本语法、文件操作、...

    hanlp-python_spiderpbl_ch11/11.5.py_自然语言处理入门_

    在本项目"hanlp-python_spiderpbl_ch11/11.5.py_自然语言处理入门_"中,我们将探讨使用Python进行NLP的实践应用。 `11.5.py`可能是一个章节练习或示例代码,对应何晗先生的书籍关于自然语言处理的部分。这个Python...

    零基础Python入门-课程大纲.docx

    * 介绍 Python 的发展方向和应用领域,如数据分析、自然语言处理、社交网络分析、人工智能、深度学习、计算机视觉、网络爬虫、量化交易等 第二章:程序设计与 Python 语言 * 讲解计算机的组成和工作过程 * 介绍 ...

    Python自然语言处理:NLTK与Spacy入门教程

    使用场景及目标:本文适合作为 Python 自然语言处理的入门教材,可以帮助读者快速掌握 NLTK 和 Spacy 的基本用法,为复杂 NLP 任务打下坚实基础。 其他说明:本文通过详细的代码示例和实际应用案例,使读者能够更好...

    Python入门:程序设计概论

    自然语言处理(NLP)涉及使计算机理解和生成人类语言,而计算机视觉(CV)则是让计算机理解图像和视频内容。 在这个压缩包中,"Python入门:程序设计概论.mp4"是一个视频文件,很可能是系列讲座或教程的一部分,由...

    python入门教程配套视频全集

    Python的设计哲学注重代码的可读性,它采用了更接近自然语言的英文关键字,使得Python代码相对容易理解。Python语言是解释型的,这意味着它在执行时不需要事先编译,直接由解释器逐行翻译执行。这一特性让Python在...

    python 入门、数据分析、自然语言处理课件(3份合集).zip

    python VIP学习的资料,合集包含3份:python数据分析与自然语言处理;快速入门python培训教程;自然语言处理课件。分享学习共同进步。为了一个月不走弯路快速入门学习python和python数据分析与机器学习的学习路线,...

Global site tag (gtag.js) - Google Analytics