几年来,人工智能和机器学习已经占领了网站建设中的网络论坛,同时也增加了热切的开发人员的兴奋感,他们渴望在自己的项目中尝试一下。我绝不是机器学习专家,但我在几个需要“更聪明的”做事方式的开发项目中已经触及了它的表面。
需要澄清的是,我们今天要探讨的仅仅是冰山的一角时,机器学习和我的例子是相当基本的,然而自然语言处理是一个令人兴奋的前景和有一些惊人的,然而创造性的用例项目,这些的例子是:
更智能的搜索建议和搜索结果
聊天机器人集成,以更好地理解用户输入/对话
文本到语音的集成,类似于Amazon Polly这样的服务
内容生成器的内容编辑特性,如拼写检查、语法等。
NLP是什么?
根据维基百科上的定义,自然语言处理是指:“应用计算技术分析和合成自然语言和语音。——让我们把它分解一下。
NLP库将帮助您对字符串执行相对复杂的数据提取。在谷歌上搜索过拼写错误的单词吗?有没有注意到谷歌是如何告诉您“同时显示x的结果”的?谷歌主页上的搜索表单在分析表单输入内容时非常复杂。
NLP通常在一串单词上执行。
作为一个使用NLP库的开发人员,我可以提取大量的信息,这些信息可以帮助我执行几乎任何我喜欢的任务。对于这个项目,我们将使用Natural。
为了简单起见,我只介绍一些最有用的方法,这些方法可以快速地实现到您自己的项目中并进行迭代。
我在Web Designer Depot上找到了这篇文章的标题:《秘密设计师:第一份工作的恐惧》
分析整个字符串是一回事,但是我们希望能够对单个单词执行方法,以便从中提取更多的数据。幸运的是,我们可以使用记号赋予器来做到这一点,请看下面:
WordTokenizer简单地将字符串分解为可以迭代和执行方法的单词。有趣的是,自然库附带了一些不同的令牌器。
Natural已经收集了一些由一些非常聪明的人编写的算法来执行我们将要讨论的功能,在这些例子中有一些剥猫皮的方法,所以如果你想再深入一点,所有的信息都在Natural Github页面上。
字符串的距离
Natural使用Levenshtein距离算法来确定两个字符串是否相同
上面将注销1,这意味着这两个字符串在算法上下文中匹配。如你所见,有很多拼写“Daine”的方法——Levenshtein distance可以变得非常复杂,因为它使用了一些参数,称为:
在上面的例子中,我们插入了一个i,因此Levenshtein距离将根据插入计算字符串。这种方法对于提供拼写错误的建议非常有用。
近似串匹配
另一个能让你的应用程序更加有趣的功能是近似字符串匹配。类似于上面的“字符串距离”。实际上,它实现了Levenshtein算法。这种方法更适用于具有更多上下文的字符串或可能在字符串中拼写错误的某种实体(例如城市、国家、人等)。
语音学
对于发音相同但含义不同的单词,使用meta .compare()方法非常有用。
解释清楚
拼写检查可以以动态的方式使用,如果你在你的应用程序中重写拼写检查功能,或者你正在构建某种文字处理工具,这种功能非常棒。
字典
Wordnet是Natural的最新集成。这是一个由普林斯顿大学开发的字典数据库,允许即时查找单词,包括与该单词相关的所有元数据。元的例子包括动词、形容词和同义词。
Wordnet要求您安装Wordnet -db NPM包,以便对其运行关键字。你可以把它安装到你的项目中。
这种捆绑的功能对于标准化本机字典查找有很大的影响,通常大多数操作系统都将本机字典查找内置到浏览器和软件中。再加上React这样的库,开发人员可以走得更远。
好吧!那么完整的例子呢?让我们构建一个简单的CLI工具,它将提示我们输入一个单词,然后返回一个字典查询。请注意,为了简洁起见,我省略了检查和错误处理。由于Node.js支持promise,所以将其添加到逻辑流中非常容易。
首先,创建一个文件夹,其名称是您想要调用您的应用程序的任何名称。接下来,将cd放入该文件夹并运行:
这里有一个解释:
首先,我们需要commander、wordnet和natural from node_modules。
稍后我们将回到wordNetLookup函数。
我们可以多次调用程序,在这个应用程序中我已经调用了三次。
第一个调用设置版本和描述。
接下来,我们设置一个命令。这个命令将接受一个必需的参数
然后,我们为它提供一个别名,以防您不想在每次运行程序时都键入查找。
然后,我们为该命令添加一个描述,最后运行.action()
action方法提供一个回调函数,该函数将用户在终端上键入的单词作为参数。在这个回调中,我们运行wordNetLookup(),它传递fed参数并执行查找。
现在,我们可以运行字典查找“word”,程序将执行查找当前在WordNet数据库中的任何单词。
这是它!我希望你们喜欢NLP的速成课程。在我的下一篇文章中,我们将研究NER,或者自然实体识别,它将允许我们从真实的事物中提取数据,比如城市、人和国家。与NLP相结合,NER为我们基于节点的应用程序提供了一些非常强大的集成。