在AWS上的Elasticsearch服务中,无需复杂的操作即可准备形态素分析

这篇文章是2015年Elasticsearch降临日历的第10天的文章。

弹性搜索服务是什么?

这是AWS为Elasticsearch提供的专门服务。

亚马逊 Elasticsearch 服务

弹性搜索(Elasticsearch)的配置和插件设置不够灵活,但从运维的繁琐中解脱出来,因此强烈推荐使用。

如果没有便捷使用Elasticsearch的环境,请前往仪表盘创建一个域名。

亚马逊 Elasticsearch 服务仪表板

Screen_Shot_2015-12-10_at_8_18_50_PM.png

配置集群

将Node配置中的实例类型设置为t2.micro.elasticsearch以享受免费配额的优惠。同时,请将存储配置中的存储类型设置为EBS。

设置访问策略

请自由地设置策略,你可以将特定IP的访问限制在我所使用的代理服务器上。
如果允许公开访问,请将域名访问策略设置为”允许公开访问该域名”。

请按适当的方式进行操作。完成制作大约需要4页,等待几分钟后,域名将在仪表盘上创建。

当您从仪表板转到创建的域时,您将进入下面的图像页面。

Screen_Shot_2015-12-10_at_8_23_59_PM.png

如果点击箭头上的链接,它将成为 Elasticsearch 的终端节点。如果尝试点击并返回以下JSON,则表示正常。

{
  "status" : 200,
  "name" : "Vivisector",
  "cluster_name" : "123456789012:hogehoge",
  "version" : {
    "number" : "1.5.2",
    "build_hash" : "62ff9868b4c8a0c45860bebb259e21980778ab1c",
    "build_timestamp" : "2015-04-27T09:21:06Z",
    "build_snapshot" : false,
    "lucene_version" : "4.10.4"
  },
  "tagline" : "You Know, for Search"
}

方法分析

如果在Elasticsearch中进行日语的形态分析,使用Kuromoji插件来进行词句解析。
从Elasticsearch的v2版本开始,Kuromoji插件将会默认集成在内,但是在v2版本之前,需要手动安装该插件。

然而,在Elasticsearch Service (v1.5.2)中,默认已经准备好了。太神奇了。(虽然手动安装也很简单)

手动安装的情况下

$ bin/plugin --install elasticsearch/elasticsearch-analysis-kuromoji/2.5.0
$ echo 'index.analysis.analyzer.default.type: custom' >> config/elasticsearch.yml
$ echo 'index.analysis.analyzer.default.tokenizer: kuromoji_tokenizer' >> config/elasticsearch.yml

使用analyze进行分析

$ curl -XGET "localhost:9200/_analyze?analyzer=kuromoji&pretty" -d "こんにちわ、世界" 
{
  "tokens" : [ {
    "token" : "こんにちわ",
    "start_offset" : 0,
    "end_offset" : 5,
    "type" : "word",
    "position" : 1
  }, {
    "token" : "世界",
    "start_offset" : 6,
    "end_offset" : 8,
    "type" : "word",
    "position" : 2
  } ]
}

如果发送一个请求,”analyze?analyzer=kuromoji” -d “こんにちは、世界”,它就会解析给你。它非常方便地将日语分解开来,但是最好也能够提供词性信息。嗯,让我们假设这是无可避免的。

附赠:如需进行词性分解,请

如果你想在某个端点上进行形态分析来进行词性解析,那么可以使用 elasticsearch-extended-analyze。

只需安装,即可像下面这样使用(根据示例)。

curl -XPOST 'localhost:9200/_extended_analyze?pretty' -d '
{
  "tokenizer" : "kuromoji_tokenizer",
  "filters" : ["kuromoji_baseform"],
  "text" : "寿司が美味しかった",
  "use_short_attr" : true,
  "attributes" : ["BaseFormAttribute", "PartOfSpearchAttribute", "ReadingAttribute"]
}'

附赠:如果需要除Elasticsearch之外的其他形态素分析服务器

如果不想用Elasticsearch,你可以考虑一种使用Go语言编写的形态解析服务器应用。

你好,Kagome日本语形态分析器。

Kagome可以进行基于Kuromoji的词法分析。对于正在学习Go并希望进行词法分析的人来说,这是一个推荐的工具。

尽管使用感非常不错,但由于字典加载会耗费大量内存,建议将字典作为共享内存加载。

最后

我觉得Elasticsearch的文章主要是关于日志分析的,但是如果我们从不同的角度思考,会发现它有很多其他的应用机会。

另外,由于可以自己创建插件,因此不仅限于应用程序逻辑,将逻辑包含在Elasticsearch方面也非常简单。

我暗暗想着,以后可能要更加努力地去做那边的事情。

广告
将在 10 秒后关闭
bannerAds