人工智能在电子邮件领域的应用

小夏 科技 更新 2024-02-12

基于IBM AI平台,引入语音识别和自然语言理解服务。

人工智能是当下的热门话题。 无论采用何种系统,与人工智能相关的都是最先进的生产力。 笔者主要在协作领域工作,协作领域有很多AI应用场景,比如可以自动制作会议纪要的智能会议系统(不仅仅是语音识别)。 在本文中,笔者考虑将AI集成到邮件系统中,以制作智能语音邮件查询功能。 主要应用场景是在用户不方便输入文本时快速查询邮件。

免费试用 IBM Cloud

使用 IBM Cloud Lite 快速轻松地构建您的下一个应用程序。 您的免费帐户永不过期,您将获得 256 MB 的 Cloud Foundry 运行时内存和 2 GB 的 Kubernetes 集群存储空间。 了解所有详细信息并决定如何开始。 要实现语音查询,我们需要执行以下操作:

录音和上传。 作者使用 H5 的语音功能进行录音和语音上传。 语音识别。 无论是小冰、智能音箱,还是IBM的辩论机器人,它们都与语音交互。 自然语言理解。 光有语音识别是不够的,人类的语言是非常随意的,当用户说不同的话时,人工智能也应该理解用户在说什么。 自然语言理解的难度其实是相当大的,这个服务的能力强不强,直接影响到系统对人类思想的理解。 人工智能平台如何处理这项服务以及他们如何做到这一点存在很多差异。 电子邮件查询和显示。 这些是更基本的能力。 作者使用了 Domino 服务器的邮件和 REST 服务的整体流程图

图1整体流程图。

Domino V10 现在支持 nodeJS 开发,作者也使用 nodeJS 来开发这个系统。

为了方便将本系统集成到其他应用程序中,笔者使用了 H5 的多**处理能力。

这似乎应该很简单,毕竟太多的移动应用程序使用语音。 但是当我真的想找到一个现成的 nodejs 示例时,确实花了一些时间。 最后,github 更强大。 请参考以它为起点,可以节省大量时间。 此示例同时支持 Windows 和 Linux。 但是这个例子是上传的,我们需要把它的一部分改成音频。 例如:控件它应该更改为音频控件。还有:

清单 1修改文件。

var filename = generaterandomstring() '.w**';var file = new file([blob], filename, ) 录制参数是根据语音识别平台的要求而定的,通常为单声道,16000采样率:captureUserMedia(function(stream) )
通过这个修改后的示例,用户可以记录和上传浏览器,以在服务器端生成一个 w** 文件。

语音识别相对简单,可以使用 IBM 的 Speech to Text 语音识别服务。

首先,您需要注册一个 IBM ID,以便在 IBM Cloud 站点上免费使用 IBM Cloud 服务。 在 IBM Cloud Services 中,在 AI 类别下找到 Speech to Text 服务,您很快就能设置语音识别服务了。 图2语音对语音服务。

Watson 的语音识别服务提供 NodeJS API。 安装 watson-developer-cloud 软件包允许我们使用 NodeJS编程:

npm install --s**e watson-developer-cloud
有关更多信息,请参阅文档,如下所示: 清单 2调用语音翻译服务。

var params = ;// create the stream.var recognizestream = speechtotext.recognizeusingwebsocket(params);.
将我们上传的录音发送到 Watson 服务以获取识别文本:

// pipe in the audio.fs.createreadstream(filename).pipe(recognizestream);
自然语言理解是本文的重点。 IBM大名鼎鼎的沃森能参加辩论赛,他的自然语言理解能力应该相当不错。

登录到 IBM Cloud 控制台,首先在 AI Services 类别中找到 Natural Language Understanding (NLU)。

图3自然语言理解服务。

进入 NLU 服务后,可以创建新服务。 为了便于理解,请为您的服务想出一个合适的名称。 作者姓名为:Natural Language Understanding-mailquery。

图4创建服务。

在以下各节中,默认值为“免费”。 请注意,最后一个粗体文本显示:轻量级服务将在 30 天不活动后删除。 为了防止删除,您必须不时使用积分。 吐出来,30天就短了一点。

图5*选择。

最后,单击下方的“创建”按钮。

创建后,您看到的不是服务,而是入门文档。

图6入门文档。

我们都已经完成了入门文档中的步骤,不要混淆,只需单击入门上方的“管理”链接即可。

在管理页面上,您可以首先看到用于访问服务的凭据和 URL

图7凭据和 URL

使用 curl 调用服务也是为你写的,服务中的凭证是根据当前服务自定义的,值得称赞。

图8 curl **

笔者习惯了使用Firefox的restclient,所以顺便介绍一下如何使用restclient调用服务。 调用接口如下:

图9 restclient

有两点需要注意:

添加基本认证。 用户名是固定的 apikey; 密码是 API 密钥值。 需要添加 HTTP 头 content-type:Application JSON,HTTP 响应与 demo 相同。

图10HTTP 响应。

其中包括情感分析和关键字分析。

然后呢? 在 NLU 中,没有 then。 在其他平台上使用过自然语言分析的同学一定很困惑,为什么没有其他定制方法? IBM 就是 IBM,我们需要为此构建一个 Knowledge Studio 服务,然后将其部署到我们刚刚创建的 NLU 中。

点击上面的目录,然后在 AI 类别中找到 Knowledge Studio。

图11 knowledge studio

转到 Knowledge Studio。

图12创建 Knowledge Studio 服务。

单击下面的“创建”按钮以创建服务。

创建后,单击启动工具。

图13启动该工具。

单击上方的创建工作区。

图14创建工作区

每个工作区都相当于一个语言分析环境配置。

图15工作区参数。

注意:如果语言选择为中文,则某些功能不可用,因此我们使用英语。

工作空间创建完成后,将自动进入其配置界面。 现在,我终于感觉到了一点,对吧?

图16工作区界面。

让我们从一些概念开始:

documents:用于训练服务的文档,其中应包含许多典型的例句。 实体类型:实体类型。 例如,如果我们的语言与电子邮件相关,那么实体类别应该有发件人、发送时间、关键字等。 在这种情况下,实体类型是最重要的。 关系类型:关系的类别。 定义实体类别之间的关系。 在这种情况下,关系类别并不重要,所以再举一个例子,我喜欢踢足球。 在我和踢球之间,在踢球和足球之间,有一种关系类型。 我们可以随心所欲地命名这些关系,经过训练后,服务应该知道用户的语言中是否存在这样的关系并识别它们。 例如,训练后,用户说“我喜欢打排球”,服务也应该明白语句中存在相同的理性类型。 dictionary:词典。 我们分析的语句中的一些实体类型可能是详尽无遗的,最典型的例子是在预订服务中,其中的起点和终点是一些城市的名称。 让我们从定义实体类型开始。

图17 entity type

单击“添加实体类型”。 添加同义词发送方实体类型。 救。

图18添加实体类型

接下来,再添加 2 个:

图19添加更多实体类型

顾名思义,这 3 种实体类型分别代表发件人、发送时间和关键字。 关键字用于全文搜索。

我们知道关系类型是实体类型之间的关系,为了测试关系类型,我们定义了一个mailkeyword实体类型,它要么是邮件词,要么是邮件词。 邮件或邮件应出现在问题中。

图20定义 MailWord

接下来,让我们定义字典。

图21创建词典。

单击创建词典。 取名 maildic。 我们想给 mailkeyword 一个字典值。 所以实体类型是 mailkeyword。

图22添加 mailkeyword 字典值。

单击添加条目。 为表面形式写邮件,为词性选择名词。

图23将 mailkeyword 字典值设置为 1

再添加一个值 mails。

图24将 mailkeyword 字典值设置为 2

当查询语句为 mail 或 mail 时,服务会将其标识为 mailkeyword。

接下来,是时候提供样本进行分析了。 您可以使用 Excel 编辑 CSV 文件。 示例如下:

图25示例列表。

第一列是示例语句编号(任意编号,不一定是数字)。 第二列是示例语句。

在“文档”页上,单击“上载文档集”。

图26上传档案。

选择 CSV 文件并上传。

图27开始上传。

上传后,我们会发现有2个文档集,其实我们只上传了1个文件,另外一个都是来自系统。 您会注意到有一个“创建注释集”。

注解是标记的意思,机器还是个白痴,你要告诉它如何分析这些例子中的句子,然后让它学习。

那么为什么要创建标注集,因为在实际制作中,一个文件中可能有很多示例,可以将它们分给很多人来完成标记任务。

图28文档集和批注集

单击“创建注释集”(Create Annotation Sets)。

图29创建注释集

如果没有人帮忙或样品很少,可以选择100%的样品作为1套。 如果需要选择注释者,可以选择自己。 也给这个集合起个名字,我们称它为邮件。 将来训练时需要此名称。

单击生成按钮。 注释集已构建。

图30 annotation sets

现在我们已经构建了集合,让我们在标记之前构建关系类型。

转到“关系类型”页面。

图31创建关系类型

单击“添加关系类型”按钮。

我们将第一个关系类型称为 rsender。 这种关系被定义为 mailkeyword 和发件人之间的关系。

图32定义 rsender 关系类型

同样,我们总共定义了 3 个关系:

图33定义其他关系类型

下一步是开始标记。

转到“注释任务”(Annotation Tasks) 页面。

图34注释任务。

单击“添加任务”按钮。 进入以下界面。 系统会告诉您任务已构建,但注解集尚未放入。

图35向任务添加批注。

检查邮件。 单击“创建任务”按钮(此按钮变慢,您需要变慢)。

图36创建注释任务。

现在,任务已设置:

图37添加了注释任务。

刚开始不熟悉的时候,我等了一会儿这个进度,但进度总是0%。 最后,我发现我应该做我自己的事情。 哈哈。

点击此任务:

图38任务列表。

点击“注释”按钮。

图39需要标记的列表。

对于每个示例语句,请单击语句末尾的打开链接。

在语句中选择一个或几个单词,然后选择右侧的“实体类型”。 例如:

图40标记实体 1

直到完全标记:

图41标记实体 2

注意:如果语句中的词语有误,可以点击上面的小眼睛进行消除,重复的词语无法消除,IBM需要改进吗?

选中“关系”选项卡。

图42标记关系 1

选择“邮件”(黄色)和“发件人”(绿色)。

图43标记关系 2

在右侧,选择 rsender 关系。

图44标记关系 3

同样,定义其他关系。

图45标记关系 4

实体类型和关系类型标记完成后,单击“S**e”按钮。

图46保存标记工作。

此按钮更谨慎。

保存后,单击“打开文档列表”按钮返回样本列表并继续标记,直到标记完成。

标记完所有语句后,接口如下:

图47所有标记都是完整的。

单击“提交所有文档”以提交到“服务培训”。

图48提交标记文档 1

实际上,它还没有提交。 您需要返回“注释任务”界面。

图49提交标记文档 2

选择您刚刚标记的邮件,然后单击“接受”按钮。 我真的提交了。 完成的提交屏幕如下所示:

图50马克完成 1

返回 Annotation Task 界面:

图51马克·多恩 2

这需要大量的体力劳动,而机器做了一些事情。

转到性能页面。

图52培训界面。

单击训练结束评估按钮。

图53选择培训文档。

选择“邮件”,然后单击“训练”按钮。

图54开始训练。

接下来,泡一杯茶,休息 20 分钟,直到训练结束。 它似乎慢了一点,但与婴儿学习说话相比,它仍然相当快。

当它结束时,它将显示:

图55培训完成。

事实上,系统选择大部分数据进行训练,少量数据进行自检。

图56训练结果。

因为它是样本,所以通常是准确的。 如果实际收集的生产数据,则不一定。

接下来,我们转到版本页面。

图57创建训练结果的版本 1

运行此模型可以使用训练结果对新样本进行机器识别标注,然后在机器识别标注后手动标注。 现在没有新示例,我们不单击“运行此模型”。

导出当前模型可以导出,但在免费版本中不允许导出。

创建版本是现在最重要的事情。 我点击这个按钮。 生成版本。

图58创建训练结果的版本 2

新生成的版本如下:

图59版本已生成。

接下来,敲黑板。 我们将把这个训练有素的服务部署到 NLU。

单击“部署”按钮

图60部署到 NLU 1

检查自然语言理解。 点击下一步。

图61部署到 NLU 2

选择我们创建的 NLU,然后单击部署。 出现一个界面,告诉您它已经在部署中。 记录此型号 ID。 我需要型号 ID 做什么? 这样做的原因是单个 NLU 可以使用多个模型。 使用 NLU 时,需要告诉 NLU 使用哪个模型来分析语言。

图62部署到 NLU 3

好吧。 让我们回到 NLU。

让我们将 restclient 中的请求更改为:

清单 3为分析模型添加参数。

请注意模型参数。 NLU 分析的结果将具有我们的实体类型:

清单 4实体的分析结果。

, "disambiguation": ,"count": 1 },"disambiguation": ,"count": 1 },"disambiguation": ,"count": 1 }
我们可以将请求中的实体替换为关系,得到句子成分的关系分析,例如:

清单 5分析关系的结果。

让我们将分析的陈述更改为我需要上周约翰·史密斯(John Smith)关于猫的邮件,分析结果也是一样的。

回到 nodejs 编程。 Watson 为我们准备了一个 nodejs 开发包(watson-developer-cloud)。 您可以单击此处查看开发套件的文档。 根据需要,我们专注于分析的实体部分。 根据文档,调用 NLU 的 **:

清单 6调用 NLU 服务。

var naturallanguageunderstandin**1 = require('watson-developer-cloud/natural-language-understanding/v1.js');var natural_language_understanding = new naturallanguageunderstandin**1();var parameters = , 'keywords': }
其中 querystring 是我们要分析的语句; 模型是我们训练的分析模型。 正如我们在Firefox中看到的那样,NLU服务以JSON形式返回分析结果。 由此,我们提取查询的关键信息:发件人、交货时间和关键字。 请注意,可能有 1 个以上的关键字。

最初笔者希望使用多米诺的DQL查询邮件,但DQL支持中文大约需要2-3个月的时间,于是笔者开发了多米诺REST服务来实现邮件查询。

Domino 支持 REST 服务已经有很长一段时间了,无需编程即可默认使用。 但是我们希望这个REST服务是自定义的,这样我们就可以使用Xpages的REST控制。

让我们为查询创建一个新的 Xpages,并在 Xpages 上添加一个 REST 控件:

图63REST 服务。

其中 mailq 是 rest 服务的名称,nodejs 程序需要调用 ....nsf/….xsp mailq 查询邮件。

在 REST 控件的 Service 属性中,添加 CustomRESTservice。 并在 DoPost 中编写代码,分析查询参数并构造 Domino 查询语句来查询邮件。

图64REST 服务设置。

最后,将查询结果返回给 nodejs。

清单 7邮件搜索。

var dc = db.ftsearch(ftsearchstr);.while (doc != null) return list
效果测试,笔者没有花心思在UI设计上,只是试试功能。

作者说,给我看上周约翰·史密斯的邮件,搜索约翰·史密斯上周的电子邮件。

图65测试效果 1

添加限定符,它就变成了上周约翰·史密斯(John Smith)关于猫的邮件这就是留给猫的全部。

图66测试效果 2

关于UI操作,这个版本的方式是用户点击蓝色按钮,然后开始说话,完成后再按绿色按钮。 也可以只用1个按钮制作,按下即可说话,抬起即可识别。

人工智能将在各个专业领域蓬勃发展,不同领域的人工智能技术也将有很大差异。 在笔者看来,在协作领域,人工智能需要以人性化的方式理解人类的自然语言; 另一方面,需要整合专业系统,为用户提供业务协助。 希望这篇文章能起到扔砖石的作用,激发读者更深入的思考。

IBM Cloud Docs,了解 IBM Cloud 的功能以及如何开始使用。 IBM AI Services 查看 IBM AI 服务的列表。 IBM 语音翻译服务文档。 IBM Natural Language Understanding Services 文档。

相似文章

    人工智能在物流领域的应用,打造智慧物流,提升效率

    人工智能出现后,影响到各行各业,现在人工智能已经在不同行业普及,给全球经济和科技的发展带来了新的机遇和挑战。这里不得不提一下合肥威天速递,它作为数字货运在这个领域脱颖而出。因此,人工智能在物流领域的应用已经有一些龙头企业,他们创建了智能物流管理系统,通过该系统可以对物流进行全方位的管理。作为中国领先...

    人工智能在农业领域的应用与展望

    人工智能 AI 是一种模仿人类智能的技术,可以处理大量数据,分析复杂模式,做出决策和决策。尽管人们都关注 ChatGPT 等华而不实的新兴 AI 工具,但 AI 监管的挑战以及超级智能机器人的世界末日场景。但人工智能在许多领域都是一种有用的工具,事实上它对造福人类具有巨大的潜力。在农业领域,农民越来...

    生成式AI在美军应用趋势分析

    简介 大型语言模型在海量数据上进行训练,帮助人工智能用户提示并生成类似人类的响应。它们为 OpenAI 的 ChatGPT 和谷歌的 Bard 等生成式 AI 工具提供支持。在几个典型的大型语言模型中,有五个项目正在测试,这是美国国防部更广泛的一系列实验的一部分,旨在开发供美国军队使用的数据集成和数...

    人工智能在企业环境中的应用有哪些缺点?

    自从ghatgpt爆炸后,看到它强大的生产力的人们都担心他们的工作有一天会被取代。但实际上,除了劳动力替代之外,目前人工智能的应用也存在许多违规行为。接下来,我们来看看它在当前环境下的缺点。建设成本高人工智能的前期投资巨大,对技术 人力和硬件基础设施的需求巨大。此外,构建框架的过程需要一定的时间,其...

    矢量在人工智能领域的应用与影响

    随着人工智能 AI 的快速发展,载体的作用日益凸显。向量是一种数学对象,可用于表示和比较复杂的结构,例如文本 图像等。在人工智能领域,向量广泛应用于机器习 自然语言处理 计算机视觉等,本文将详细介绍向量在人工智能领域的应用和影响。.机器习中的向量。机器习是人工智能的一个重要分支,它通过分析大量数据并...