Python 自然语言处理入门(2)

最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

from nltk.tokenize import word_tokenize

print(word_tokenize(“Hi, this is a nice hotel.”))

代码的输出如下:

[‘Hi’, ‘,’, ‘this’, ‘is’, ‘a’, ‘nice’, ‘hotel’, ‘.’]

您会注意到,word_tokenize它不仅根据空格简单地拆分字符串,而且还将标点符号拆分为标记。如果您想在分析中保留标点符号,这取决于您。

第 2 步:将单词转换为其基本形式


在处理自然语言时,您经常会注意到同一个词有多种语法形式。例如,“go”、“going”和“gone”是同一个动词“go”的形式。

虽然项目的必要性可能要求您保留各种语法形式的单词,但让我们讨论一种将同一单词的各种语法形式转换为其基本形式的方法。您可以使用两种技术将单词转换为其基础。

第一种技术是词干。词干提取是一种从单词中删除词缀的简单算法。NLTK中有多种词干提取算法可供使用。我们将在本教程中使用 Porter 算法。

我们首先PorterStemmernltk.stem.porter. 接下来,我们将词干分析器初始化为stemmer变量,然后使用该.stem()方法找到一个单词的基本形式:

from nltk.stem.porter import PorterStemmer

stemmer = PorterStemmer()

print(stemmer.stem(“going”))

上面代码的输出是go. 如果您为上述其他形式的“go”运行词干分析器,您会注意到词干分析器返回相同的基本形式“go”。但是,由于词干提取只是一种基于去除词缀的简单算法,因此当词在语言中不太常用时,它就会失败。

例如,当您尝试对单词“构成”进行词干分析时,它会给出不直观的结果:

print(stemmer.stem(“constitutes”))

您会注意到输出是“构成”。

这个问题通过转向一种更复杂的方法来解决给定上下文中单词的基本形式。该过程称为词形还原。词形还原根据文本的上下文和词汇对单词进行规范化。在 NLTK 中,您可以使用WordNetLemmatizer类对句子进行词形还原。

首先,您需要wordnet从 Python 终端中的 NLTK 下载器下载资源:

nltk.download(‘wordnet’)

下载后,您需要导入WordNetLemmatizer该类并对其进行初始化:

from nltk.stem.wordnet import WordNetLemmatizer

lem = WordNetLemmatizer()

要使用词形还原器,请使用.lemmatize()方法。它需要两个参数:单词和上下文。在我们的示例中,我们将使用“v”作为上下文。在查看方法的输出之后,让我们进一步探索上下文.lemmatize()

print(lem.lemmatize(‘constitutes’, ‘v’))

您会注意到该.lemmatize()方法正确地将单词“构成”转换为其基本形式“构成”。您还会注意到词形还原比词干提取花费的时间更长,因为算法更复杂。

.lemmatize()让我们检查如何以编程方式确定方法的第二个参数。NLTK 具有pos_tag()帮助确定句子中单词上下文的功能。但是,您首先需要averaged_perceptron_tagger通过 NLTK 下载器下载资源:

nltk.download(‘averaged_perceptron_tagger’)

接下来,导入pos_tag()函数并在一句话上运行:

from nltk.tag import pos_tag

sample = “Hi, this is a nice hotel.”

print(pos_tag(word_tokenize(sample)))

您会注意到输出是对的列表。每对都由一个标记及其标记组成,它表示整个文本中标记的上下文。请注意,标点符号的标签本身就是:

[(‘Hi’, ‘NNP’),

(‘,’, ‘,’),

(‘this’, ‘DT’),

(‘is’, ‘VBZ’),

(‘a’, ‘DT’),

(‘nice’, ‘JJ’),

(‘hotel’, ‘NN’),

(‘.’, ‘.’)]

你如何解码每个令牌的上下文?以下是Web 上所有标签及其对应含义的完整列表。请注意,所有名词的标签都以“N”开头,所有动词的标签都以“V”开头。我们可以在.lemmatize()方法的第二个参数中使用此信息:

def lemmatize_tokens(stentence):

lemmatizer = WordNetLemmatizer()

lemmatized_tokens = []

for word, tag in pos_tag(stentence):

if tag.startswith(‘NN’):

pos = ‘n’

elif tag.startswith(‘VB’):

pos = ‘v’

else:

pos = ‘a’

lemmatized_tokens.append(lemmatizer.lemmatize(word, pos))

return lemmatized_tokens

sample = “Legal authority constitutes all magistrates.”

print(lemmatize_tokens(word_tokenize(sample)))

上面代码的输出如下:

[‘Legal’, ‘authority’, ‘constitute’, ‘all’, ‘magistrate’, ‘.’]

该输出是预期的,其中“构成”和“地方法官”已分别转换为“构成”和“地方法官”。

第三步:数据清理


准备数据的下一步是清理数据并删除任何不会对您的分析增加意义的内容。从广义上讲,我们将着眼于从您的分析中删除标点符号和停用词。

删除标点符号是一项相当容易的任务。该库的punctuation对象string包含所有英文标点符号:

import string

print(string.punctuation)

此代码段的输出如下:

‘!"#$%&amp;</span>’()*+,-./:;&lt;=&gt;?@[</span></span>]^_`{|}~’

为了从标记中删除标点符号,您可以简单地运行以下命令:

for token in tokens:

if token in string.punctuation:

# Do something

接下来,我们将专注于删除停用词。停用词是语言中的常用词,如“I”、“a”和“the”,在分析文本时对文本的意义不大。因此,我们将从分析中删除停用词。首先,stopwords从 NLTK 下载器下载资源:

nltk.download(‘stopwords’)

stopwords下载完成后,导入nltk.corpus并使用.words()以“english”为参数的方法。这是英语中 179 个停用词的列表:

from nltk.corpus import stopwords

stop_words = stopwords.words(‘english’)

我们可以将词形还原示例与本节中讨论的概念结合起来创建以下函数clean_data()。此外,在比较一个词是否是停用词列表的一部分之前,我们将其转换为小写。这样,如果停用词出现在句子的开头并且大写,我们仍然会捕获它:

def clean_data(tokens, stop_words = ()):

cleaned_tokens = []

for token, tag in pos_tag(tokens):

if tag.startswith(“NN”):

pos = ‘n’

elif tag.startswith(‘VB’):

pos = ‘v’

else:

pos = ‘a’

lemmatizer = WordNetLemmatizer()

token = lemmatizer.lemmatize(token, pos)

if token not in string.punctuation and token.lower() not in stop_words:

cleaned_tokens.append(token)

return cleaned_tokens

sample = “The quick brown fox jumps over the lazy dog.”

stop_words = stopwords.words(‘english’)

clean_data(word_tokenize(sample), stop_words)

该示例的输出如下:

[‘quick’, ‘brown’, ‘fox’, ‘jump’, ‘lazy’, ‘dog’]

如您所见,标点符号和停用词已被删除。

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python自然语言处理是指使用Python语言来处理自然语言数据,而NLTK就是Python中最常用的自然语言处理工具之一。在深度学习中,自然语言处理技术已经变得越来越重要,它在处理文本数据、自动翻译、语音识别、情感分析和信息提取等方面发挥着重要作用。 在使用NLTK进行自然语言处理的时候,需要掌握一些基本的用法和技巧。下面介绍一些重要的入门教程: 1.安装NLTK库。 首先需要在电脑上安装好Python和NLTK库,可以直接使用 pip install nltk 或者从官网下载进行安装。 2.加载数据集。 使用NLTK库,可以很方便地预处理自然语言文本数据。可以使用nltk.corpus模块的reuters数据集,通过对文章进行预处理和分类,来预测股市趋势。 3.文本预处理。 自然语言文本数据中有许多瑕疵,如标点符号、停用词等。使用NLTK库,可以很方便地进行文本清洗,包括去除标点和停用词。 4.分词。 分词是自然语言处理最基本的步骤之一,需要将一段文本切分成单个词汇。可以使用NLTK库的 sent_tokenize()和word_tokenize()方法来实现。 5.词干提取。 同一个单词的不同形态意义相同,需要将它们转化为同一个形式。可以使用NLTK库的 PorterStemmer和LancasterStemmer来处理。 6.词性标注。 词性标注是将单个单词标注为他们在句子中扮演的角色,如名词、动词、副词等。可以使用NLTK库的pos_tag()方法来实现。 总之,使用NLTK库进行自然语言处理,需要掌握一些基本的用法,包括加载数据集、文本预处理、分词、词干提取和词性标注等。掌握这些基本用法,可以进行更深层次的自然语言处理研究。 ### 回答2: Python自然语言处理(NLP)是指使用计算机技术处理和分析人类语言的领域。NLP应用广泛,包括情感分析、语音识别、机器翻译、智能问答等等,是近年来非常热门的领域。Python作为一种非常流行的编程语言,也因其简洁易学的特点成为了NLP工程师们的首选语言之一。而在Python NLP中,NLTK是一个非常著名的库,提供了很多有用的工具和资源,用于处理自然语言数据。以下简要介绍基于Python中的自然语言处理nltk库的用法入门教程。 1. 安装NLTK 在Python环境下,使用pip安装nltk库即可。 2. 下载语料库 使用NLTK,可以轻松下载多个语言的语料库,包括英语、阿拉伯语、西班牙语等等。可以使用如下代码来下载英语语料库: import nltk nltk.download('punkt') 此外,还可以使用其他命令下载更多的资源。 3. 分词 分词是NLP中的一个重要任务。NLTK中的word_tokenize方法可以用于将一段文本分成单词。 import nltk text = "This is a sentence." tokens = nltk.word_tokenize(text) print(tokens) 输出内容为 ['This', 'is', 'a', 'sentence', '.'] 4. 词性标注 NLTK还提供了许多方法和资源来进行词性标注。其中,pos_tag方法用于给文本中的每个单词标注词性。标注后的词性可用于后续的文本分析任务中。 import nltk tokens = nltk.word_tokenize("They refuse to permit us to obtain the refuse permit") tagged = nltk.pos_tag(tokens) print(tagged) 输出结果为 [('They', 'PRP'), ('refuse', 'VBP'), ('to', 'TO'), ('permit', 'VB'), ('us', 'PRP'), ('to', 'TO'), ('obtain', 'VB'), ('the', 'DT'), ('refuse', 'NN'), ('permit', 'NN')] 5. 前缀提取 前缀提取是NLP中一种常用的文本处理技术,它将前缀从单词中提取出来,用于相关信息检索。NLTK中的PrefixSpan类可以轻松提取前缀。 import nltk from nltk.corpus import brown from nltk.util import ngrams, pad_sequence from nltk.collocations import PrefixCollocationFinder from nltk.metrics import BigramAssocMeasures text = nltk.Text(brown.words()) prefix_finder = PrefixCollocationFinder(text.tokens, prefix_length=2) top_prefixes = prefix_finder.nbest(BigramAssocMeasures().raw_freq, 10) print(top_prefixes) 输出结果为 [('in', 'the'), ('on', 'the'), ('to', 'the'), ('of', 'the'), ('as', 'a'), ('that', 'the'), ('with', 'the'), ('for', 'the'), ('to', 'be'), ('at', 'the')] 以上就是NLP入门教程中nltk库的使用方法。NLTK为我们提供了丰富的工具和资源,非常方便和高效地处理自然语言数据。希望通过这篇文章的介绍,大家能够轻松入门Python NLP领域。 ### 回答3: Python是一种广泛使用的编程语言,可以在自然语言处理(NLP)领域中发挥巨大作用。NLTK (Natural Language Toolkit),是Python下常用的一种自然语言处理库,它提供了很多基本NLP工具和数据集,可以帮助开发人员快速构建自己的NLP应用。 安装nltk库: 在前置知识中您已经了解到了如何安装Python和pip,安装nltk库其实也非常容易,只需在控制台中输入以下命令即可。 pip install nltk 首先,我们需要安装nltk库。在你的监视器上,输入 "import nltk" 以运行库。如果没有问题弹出,那么nltk库就被成功安装。 现在可以导入所有nltk库中的所有元素,并将它们用于文本解析和分析。不过,值得一提的是,nltk不仅仅只包括算法,它还支持不同语言的语料库和辅助工具。这篇简单教程将介绍NLTK几个当前常用的功能。 第一步,我们先加载语料库: nltk.download() 执行上述代码后,会弹出一个下载窗口,在窗口中下载所有需要的子模蜜蜂和相关语料库即可。 第二步,我们使用语料库: 导入预处理的语料库: from nltk.corpus import genesis text = genesis.raw() print(text[:1000]) 在第二行中,我们加载了名为“创世纪”的语料库。这个语料库包含英语版本的《圣经》,并准备好读取。现在,在第四行中,我们将文本内容存储在名为“text”的新变量中,并在下一行中使用print()函数将前1000个字符输出到屏幕上。 接下来,我们使用正则表达式来分离出所有单词,并将其存储在新的字符串列表words中: from nltk.tokenize import word_tokenize sents = genesis.sents() words = [word_tokenize(sent) for sent in sents] words = [word for sublist in words for word in sublist] print(words[:20]) 此时我们使用nltk.tokenize库中的函数word_tokenize来把我们之前的text转化为单词,并分离到sents列表中。 然后使用列表推导式,将sents中的所有字符串合并,并将其存储在名为“words”的新列表中。我们可以使用相同的print()函数来显示前20个单词。 接下来,我们使用NLTK的詞频計算功能来了解在几乎所有课本中都将演示的語料庫分布: from nltk.probability import FreqDist fdist = FreqDist(words) print(fdist) 最后,我们将自己的当前NLTK库安装到“C:\Python36\Lib\site-packages\nltk_data”目录中,以确保以后不需要重新下载所有语料库。 为此,我们将使用以下代码: import nltk.data nltk.data.path.append("C:\Python36\Lib\site-packages\nltk_data") 我们希望本教程能够帮助您进入自然语言处理(NLP)领域,并掌握入门级的NLTK库的使用。当然,还有很多更多完整的NLP功能等待您去发掘。总之,希望您可以进一步学习NLP,并创造出更加智能的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值