掌握Python第一课:从构建实际应用程序开始!
点击上方关注,All in AI中国
作者:Dhrumil Patel
如果没有足够的资源,互联网的运行有时是一团糟。而学习一门新的编程语言可能是一种繁琐乏味的工作。在这种情况下,大多数学习者都会放弃或者他们选择学习其他的知识。所以,在我们开始学习之前,我向你保证,这不是你平时上网时偶然发现的任何其他"学习python编程"的那种帖子。在本系列的10篇文章中,我们要做的是使用python构建10个真实世界的应用程序,并且随着我们学习的进展,采用其他重要和必要的工具来掌握我们的数据科学python技能。
学习编程语言是很重要的。无论看起来多么艰难,你必须要从头开始。所以如果你没有任何使用python编程的实践经验,请不要担心,只要你了解python的基础知识就可以了。
我们要构建的第一个应用程序是字典:交互式字典。你可能知道这很容易。但千里之行,始于脚下,所以你必须迈出第一步。现在,字典会做什么?它将检索用户输入的单词的定义,这就是字典的作用,对吧?除此之外,如果用户在输入单词时出现了拼写错误,应用程序将建议使用最接近的单词,并提示道,"你的意思是这个吗?",如果单词有多个定义,则检索所有单词。现在看起来不那么容易,是吧?让我们来看看。
在这篇文章的最后,你会感觉和这个人跃入水中之后感觉一样。因为学习或体验新事物让我们感到兴奋和惊奇。这就是你今天要做的事情。
注 - 除了学习如何构建应用程序之外,还要密切注意代码的编写方式。清洁代码同样也很重要。
步骤1 - 数据
要知道字典是如何工作的,我们必须了解它将用来执行这些动作的数据。所以,让我们开始吧。这里的数据是JSON格式的。如果你已经知道JSON是什么,请跳过下面几行。但是,另一方面,如果你第一次听到JSON这个词,或者你需要一点点复习,我就能帮到你了。我建议查看我们将用于更好地理解JSON格式的数据。您可以在这里找到数据。
https://www.kaggle.com/borrkk/dictionary
这是一个有趣的事实,截至2017年,每秒都在产生大约2,500,000,000,000,000,000(2.5艾字节,Quintillion)字节的数据。
JSON或JavaScript Object Notation是用于构造数据的最小可读(对于人和计算机都是如此)格式。它主要由两部分组成:一个键和一个与键相关的值。我们仅从我们的数据中获取示例,下面是键/值对。键是"abandoned industrial site(废弃的工业用地)",单词和值是"Site that cannot be used for any purpose, being contaminated by pollutants(不能用于任何目的的场地,被污染物污染)"的定义。要了解有关JSON的更多信息,请参阅这篇文章。
现在让我们从代码开始。首先,我们导入JSON库,然后我们使用该库的load(加载)方法来加载.json格式的数据。这里重要的是我们以.json格式加载数据,但它将作为python'dictionary'存储在"data"变量中。如果你不了解python词典,请将其视为存储库。它与JSON格式几乎相同,并且遵循相同的键值格式。
步骤1 - 数据
加载数据后,让我们创建一个函数,它将获取该单词,并在数据中查找该单词的定义。这比较简单。
步骤1 - 数据(输出)
步骤2- 检查不存在的单词
使用基本的if-else语句将帮助检查不存在的单词。如果数据中没有该单词,只需告知用户即可。在我们的例子中,它将打印"这个词不存在,请仔细检查它"。
步骤2- 检查不存在的单词
步骤2-- 检查不存在的单词(输出)
步骤3 - 区分大小写
每个用户都有自己的写作方式。虽然有些人可能会采用小写,但有些人可能想在标题中用采大写,我们的目标是单词的输出必须保持不变。例如'Rain'和'rain'将提供相同的输出。为了做到这一点,我们将把用户输入的单词全部转换为小写,因为我们的数据具有相同的格式。我们将使用Python自己的lower()方法来实现。
案例1 - 为了确保程序返回以大写字母开头的单词的定义(例如Delhi, Texas)),我们还将检查else-if条件下的标题中的大小写字母。
案例2 - 为了确保程序返回首字母缩写词的定义(例如USA,NATO),我们也将检查大写字母。
步骤3- 区分大小写
步骤3-区分大小写(输出)
你的字典已准备好为其基本目的服务,检索定义。但让我们更进一步。当你在搜索栏中输入错误时,谷歌建议你写出正确的单词时,你觉得它很酷吗?
显示'medium'而不是'mediium'的结果
如果可以对我们的字典做同样的事情怎么办?这很酷,对吗?在执行此操作之前,请执行步骤5,让我们在步骤4中了解其背后的机制。
步骤4- 最接近的匹配
现在,如果用户在输入单词时出现了拼写错误,你可能想要建议最接近的单词,并询问他们是否需要这个单词的含义。我们可以使用Python的库difflib来做到这一点。有两种方法可以做到这一点,我们需要对这两种方法进行一下了解,然后使用有效的方法。
方法1 - 序列匹配器
让我们来了解这种方法。首先,我们将从中导入库和fetch(获取)方法。 SequenceMatcher()函数总共需要3个参数。第一个是垃圾,这意味着如果单词有空格或空行,在我们的例子中是没有。第二个和第三个参数是你想要找到相似之处的单词。并且附加比率方法将给出数字的结果。
步骤4.1 - 序列匹配器
步骤4.1 - 序列匹配器(输出)
如你所见,"rainn"和"rain"之间的相似度为0.89,即89%。这是一种方法。然而,在同一个库中有另一种方法可以直接获取与该单词的紧密匹配,不涉及数字。
方法2 - 获取近似匹配
该方法的工作原理如下,第一个参数当然是你要查找其匹配项的单词。第二个参数是要匹配的单词列表。第三个表示你想要多少匹配作为输出。而最后一个被截止。你还记得我们在之前的方法中得到过一个数字吗?0.89?截止使用该数字来知道何时停止将单词视为近似匹配(0.99最接近单词)。我们可以根据自己的标准进行设置。
步骤4.2 - 获取近似匹配
步骤4.2 - 获取近似匹配(输出)
我认为不需要解释输出,对吧?这三个中最接近的词是rainy,因此是[' rainy ']。如果你执行到这一步,那么你已经学会了困难的一部分。现在,我们只需将其插入到代码中即可获得输出。
步骤5- 你说的是这个意思吗?
为了便于阅读,我刚刚添加了if-else部分代码。你可能熟悉前两个else-if语句,让我们理解第三个。它首先检查它得到的近似匹配的长度,因为我们只有在单词有一个或多个近似匹配时才能打印。获取近似匹配函数将用户输入的单词作为第一个参数,我们的整个数据集与该单词匹配。在这里,关键是我们的数据中的单词和值是它们的定义,正如我们之前所学到的。return语句中的[0]表示所有匹配的第一个近似匹配。
步骤5-你说的是这个意思吗?
步骤5-你说的是这个意思吗?(输出)
是的,这就是我的意思。所以现在怎么办?你不能只留下一个问题。如果这是用户的意思,你必须检索这个单词的定义。这就是我们下一步要做的事情。
步骤6- 检索定义
来自用户的另外一个输入和if-else的另一个层,就在那里。建议对单词进行定义。
步骤6- 检索定义
步骤6- 检索定义(输出)
步骤7-锦上添花
当然它让我们得到了rain的定义,但是它周围有方括号,这看起来不是很好吧?让我们删除它们,让它看起来更干净。"rain"这个词有多个定义,你注意到了吗?有几个单词有多个定义,因此我们将遍历具有多个定义的单词的输出,并简单地打印出具有单个定义的单词。
步骤7-锦上添花
步骤7-锦上添花(输出)
看起来好多了,不是吗?在下面我附上整个代码供你参考,随时修改和升级代码。
代码
交互式词典
结束说明
当参与其中时,你会学到很多东西。你今天了解了JSON数据类型和python的基本功能,一个名为"difflib"的新库,以及如何编写清洁代码。选择不同数据集,并应用你所有的技能,而这是你成为数据科学领域大师的唯一途径。
文章来源:https://towardsdatascience.com/master-pytho