在AWS上的Elasticsearch服务中,无需复杂的操作即可准备形态素分析
这篇文章是2015年Elasticsearch降临日历的第10天的文章。
弹性搜索服务是什么?
这是AWS为Elasticsearch提供的专门服务。
亚马逊 Elasticsearch 服务
弹性搜索(Elasticsearch)的配置和插件设置不够灵活,但从运维的繁琐中解脱出来,因此强烈推荐使用。
如果没有便捷使用Elasticsearch的环境,请前往仪表盘创建一个域名。
亚马逊 Elasticsearch 服务仪表板
配置集群
将Node配置中的实例类型设置为t2.micro.elasticsearch以享受免费配额的优惠。同时,请将存储配置中的存储类型设置为EBS。
设置访问策略
请自由地设置策略,你可以将特定IP的访问限制在我所使用的代理服务器上。
如果允许公开访问,请将域名访问策略设置为”允许公开访问该域名”。
请按适当的方式进行操作。完成制作大约需要4页,等待几分钟后,域名将在仪表盘上创建。
当您从仪表板转到创建的域时,您将进入下面的图像页面。
如果点击箭头上的链接,它将成为 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方面也非常简单。
我暗暗想着,以后可能要更加努力地去做那边的事情。