赞
踩
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
python -m nltk.downloader all
第 1 步:转换为代币
计算机系统本身无法在自然语言中找到意义。处理自然语言的第一步是将原始文本转换为标记。记号是连续字符的组合,具有一定的含义。由您决定如何将句子分解为标记。例如,一个简单的方法是用空格分割一个句子以将其分解为单个单词。
在 NLTK 库中,您可以使用该word_tokenize()
函数将字符串转换为标记。但是,您首先需要下载punkt
资源。在终端中运行以下命令:
nltk.download(‘punkt’)
接下来,您需要导入word_tokenize
fromnltk.tokenize
才能使用它:
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 算法。
我们首先PorterStemmer
从nltk.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)
此代码段的输出如下:
‘!"#$%&</span>’()*+,-./:;<=>?@[</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:
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/686934
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。