多年前,我在美国马里兰大学的计算机科学图书馆里闲逛时找到一本名为《计算机不能做什么》(What Computers Can’t Do)的又脏又旧的书,旁边是其续本《计算机仍不能做什么》(What Computers Still Can’t Do)。第二本书更加厚,这让我意识到计算机科学是值得研究的领域。在准备撰写本文时,我找到了第一本书的归档副本并发现了一条有趣的言论:
 
       由于人类对用自然语言编写的句子的使用和理解需要句子的上下文相关使用的隐性知识,因此,Turing 认为,使计算机了解和转换自然语言的唯一方式可能是对计算机进行编程以了解这个世界。
 
       这个言论非常有先见之明,并且我想告诉您的是 Amazon Comprehend 这项新服务实际上知道 (并且非常乐意分享) 有关世界的许多知识!
 
       Amazon Comprehend 简介
  Amazon Comprehend 将分析文本并告知您它找到的结果,从语言 (从南非荷兰语到约鲁巴语,这之间有 98 种以上的语言) 开始。它可识别不同类型的实体 (人、位置、品牌、产品等)、关键短语、情绪 (积极、消极、复杂或中性) 并从采用英语或西班牙语的所有文本中提取关键短语。最后,Comprehend 的主题建模服务可从大型文档集中提取主题以进行分析或基于主题的分组。
Amazon Comprehend 将分析文本并告知您它找到的结果,从语言 (从南非荷兰语到约鲁巴语,这之间有 98 种以上的语言) 开始。它可识别不同类型的实体 (人、位置、品牌、产品等)、关键短语、情绪 (积极、消极、复杂或中性) 并从采用英语或西班牙语的所有文本中提取关键短语。最后,Comprehend 的主题建模服务可从大型文档集中提取主题以进行分析或基于主题的分组。
 
       前 4 项函数 (语言检测、实体分类、情绪分析和关键短语提取) 专为交互使用而设计,可在几百毫秒内进行响应。主题提取适用于基于作业的模型,其响应与集合的大小成比例。
 
       Comprehend 是一项不断受训的自然语言处理 (NLP) 服务。我们的工程师和数据科学家组成的团队将继续扩展和完善培训数据,旨在使服务的准确度更高且应用更广泛。
 
       探究 Amazon Comprehend
 您可使用控制台探究 Amazon Comprehend,然后构建利用 Comprehend API 的应用程序。我将使用我的有关 Direct Connect 的最新文章中的开头段落来练习 Amazon Comprehend API 资源管理器。我将文本粘贴到框中并单击 Analyze:
 
       
 
       Comprehend 将快速处理文本,突出显示它识别的实体 (如您在前面所见),并通过一次单击使所有其他信息可用:
 
       
 
       让我们看看结果的每个部分。Comprehend 可在我提供的文本中检测许多类别的实体:
 
       
 
       下面是在我的文本中找到的所有实体 (它们还可以列表或原始 JSON 形式显示):
 
       
 
       下面是第一个关键短语 (其余的关键短语可通过单击 Show all 显示):
 
       
 
       语言和情绪是简单而直接的:
 
       
 
       嗯,这些是交互式函数。让我们了解一下批处理函数!我已有一个包含我之前的几千篇博客文章的 S3 存储桶,一个用于我的输出的空存储桶以及一个允许 Comprehend 访问这两个存储桶的 IAM 角色。我输入它并单击 Create job 以开始使用:
 
       
 
       我可在控制台中查看我最近的作业:
 
       
 
       作业完成后,输出将显示在我的存储桶中:
 
       
 
       在演示中,我可下载数据并快速浏览 (大多数情况下,我会将数据馈送到可视化或分析工具中):
 
        
        $ aws s3 ls s3://comp-out/348414629041-284ed5bdd23471b8539ed5db2e6ae1a7-1511638148578/output/
2017-11-25 19:45:09     105308 output.tar.gz
$ aws s3 cp s3://comp-out/348414629041-284ed5bdd23471b8539ed5db2e6ae1a7-1511638148578/output/output.tar.gz .
download: s3://comp-out/348414629041-284ed5bdd23471b8539ed5db2e6ae1a7-1511638148578/output/output.tar.gz to ./output.tar.gz
$ gzip -d output.tar.gz
$ tar xf output.tar
$ ls -l
total 1020
-rw-r--r-- 1 ec2-user ec2-user 495454 Nov 25 19:45 doc-topics.csv
-rw-rw-r-- 1 ec2-user ec2-user 522240 Nov 25 19:45 output.tar
-rw-r--r-- 1 ec2-user ec2-user  20564 Nov 25 19:45 topic-terms.csv
$
 
         
       topic-terms.csv 文件将收集通用主题编号 (第一列) 内的相关术语。以下是前 25 行:
 
        
        topic,term,weight
000,aw,0.0926182
000,week,0.0326755
000,announce,0.0268909
000,blog,0.0206818
000,happen,0.0143501
000,land,0.0140561
000,quick,0.0143148
000,stay,0.014145
000,tune,0.0140727
000,monday,0.0125666
001,cloud,0.0521465
001,quot,0.0292118
001,compute,0.0164334
001,aw,0.0245587
001,service,0.018017
001,web,0.0133253
001,video,0.00990734
001,security,0.00810732
001,enterprise,0.00626157
001,event,0.00566274
002,storage,0.0485621
002,datar,0.0279634
002,gateway,0.015391
002,s3,0.0218211
 
         
       随后,doc-topics.csv 文件将指示哪些文件引用了第一个文件中的主题。同样地,下面是前 25 行:
 
        
        docname,topic,proportion
calillona_brows.html,015,0.577179
calillona_brows.html,062,0.129035
calillona_brows.html,003,0.128233
calillona_brows.html,071,0.125666
calillona_brows.html,076,0.039886
amazon-rds-now-supports-sql-server-2012.html,003,0.851638
amazon-rds-now-supports-sql-server-2012.html,059,0.061293
amazon-rds-now-supports-sql-server-2012.html,032,0.050921
amazon-rds-now-supports-sql-server-2012.html,063,0.036147
amazon-rds-support-for-ssl-connections.html,048,0.373476
amazon-rds-support-for-ssl-connections.html,005,0.197734
amazon-rds-support-for-ssl-connections.html,003,0.148681
amazon-rds-support-for-ssl-connections.html,032,0.113638
amazon-rds-support-for-ssl-connections.html,041,0.100379
amazon-rds-support-for-ssl-connections.html,004,0.066092
zipkeys_simplif.html,037,1.0
cover_art_appli.html,093,1.0
reverse-dns-for-ec2s-elastic-ip-addresses.html,040,0.359862
reverse-dns-for-ec2s-elastic-ip-addresses.html,048,0.254676
reverse-dns-for-ec2s-elastic-ip-addresses.html,042,0.237326
reverse-dns-for-ec2s-elastic-ip-addresses.html,056,0.085849
reverse-dns-for-ec2s-elastic-ip-addresses.html,020,0.062287
coming-soon-oracle-database-11g-on-amazon-rds-1.html,063,0.368438
coming-soon-oracle-database-11g-on-amazon-rds-1.html,041,0.193081
 
         
       使用 Amazon Comprehend 构建应用程序
 大多数情况下,您将使用 Amazon Comprehend API 将自然语言处理添加到您自己的应用程序。下面是委托人交互式函数:
 
       DetectDominantLanguage – 检测文本的主导语言。其他一些函数需要您提供此信息,因此请先调用此函数。
 
       DetectEntities – 检测文本中的实体并以 JSON 形式返回这些实体。
 
       DetectKeyPhrases – 检测文本中的关键短语并以 JSON 形式返回这些短语。
 
       DetectSentiment – 检测文本中的情绪并返回 POSITIVE、NEGATIVE、NEUTRAL 或 MIXED。
 
       提供了这些函数的 4 个变体 (每个变体的前缀均为 批处理),它们可并行处理最多 25 个文档。您可使用它们构建高吞吐量的数据处理管道。
 
       下面是可用于创建和管理主题检测作业的函数:
 
       StartTopicsDetectionJob – 创建作业并开始运行它。
 
       ListTopicsDetectionJobs – 获取当前和最新作业的列表。
 
       DescribeTopicsDetectionJob – 获取有关单个作业的详细信息。
 
       现在提供
 Amazon Comprehend 现已推出,您可立即使用它开始构建应用程序!
 
       — Jeff;