AmazonLinux2にelasticsearch7と日本語の形態素解析器「Sudachi」プラグインをインストール

こんにちは、オープンソースコンサルタント、データサイエンティストでお馴染みの内です。今回は数あるオープンソースの形態素解析器の中から、わりと新しく出た「Sudachi」を試して見たいと思います

「Sudachi」はERPパッケージで有名なワークスアプリケーションズさんのAI研究機関であるワークス徳島人工知能NLP研究所が開発し、オープンソースとして公開している形態素解析器です。研究所が徳島にあるから徳島特産のすだち由来の名前なんですね。

sudachiにも3種類あり、

  • Java版Sudachi
  • Python版SudachiPy
  • ElasticSearchプラグインのelasticsearch-sudachi

 

今回はelasticsearchの現時点で最新の7.8とElasticSearchプラグインのelasticsearch-sudachiを
インストールして形態素解析を実践してみたいと思います。

以下の文章をinputとして、単語ごとに分割されて、それぞれの品詞や原型が表示されるのがゴールです。

株式会社ギークフィードは、Asteriskなどのオープンソースを活用したシステム開発や、Web系のシステム開発を中心に展開しています。さらに、自社サービス「YouWire」という通話録音サービスの展開も行っています。今期から自社開発の音声認識エンジン提供を始めとしたディープラーニングの事業も立ち上げました。興味のあるギークは採用応募お待ちしております

前提

・elasticsearchはメモリ使うので、t3a.mediumで用意
・AmazonLinux2のインスタンス作成直後から行う
・elasticsearchのクラスター構成はしない

AmazonLinux2の初期設定

まずはタイムゾーンの設定やswapの作成等を。

以下 cat /etc/os-release の結果です。

ElasticSearch環境構築

javaのインストール

elasticsearchのインストール

elasticsearchのGPGキーをインストール

elasticsearchのリポジトリ設定

以下ファイルを作成&編集します。

elasticsearchのインストール

elasticsearchの起動と自動起動

とりあえずelasticsearchの情報取得

elasticsearch-sudachiのインストール

sudachiのzipファイルanalysis-sudachi-elasticsearchをダウンロード

こちらより、インストールしたelasticsearchと同じバージョンのelastic-searchのzipをダウンロードします。
https://github.com/WorksApplications/elasticsearch-sudachi/releases

今回はElasticsearch 7.8.0をインストールしたので、for Elasticsearch 7.8.0
と説明書きしてあるanalysis-sudachi-7.8.0-2.0.2.zipをダウンロードします。

analysis-sudachi-elasticsearchをインスト-ル

file://のパスは適宜ダウンロードした場所に置き換えてください。

インストールされたかの確認

elasticsearch-sudachiの設定

辞書のダウンロードとコピー

形態素解析器においては、辞書が更新されて新しい単語に対応しているかが重要になりますが、
Sudachiは辞書が頻繁に更新されるようで、これは大きなメリットですね。

Sudachiの辞書のリポジトリはこちら。

https://github.com/WorksApplications/SudachiDict

ディレクトリ
/etc/elasticsearch/sudachi/
を作成し、そこにsystem_core.dicという名前で辞書を配置します。

以下ダウンロード、解凍、ディレクトリ作成、リネーム

ちなみに、7.8の組み合わせでは、辞書の場所や名前を上記から変更した場合に
設定ファイルで辞書の場所を指定しても読み込まれなかった。

elasticsearch-sudachiのgithubのREADME.mdのINSTALLATIONセクションをよく読むと、

と書いてある通り、Elasticsearch7.6以降のバージョンでは辞書の場所と名前がどうやら固定になっているようです。

sudachiの設定ファイルダウンロードと配置

雛形は以下にある。
https://github.com/WorksApplications/Sudachi/blob/develop/src/main/resources/sudachi.json

中身はこちら

動作確認

動作確認にindexを登録

sudachi_testインデックスのmappingsに上記sudachi_analyzerのsettingsを登録

解析用サンプル文書を用意

実行結果

結果、品詞ごとに分割されて表示されました。

いくつかの分割結果を眺めてみます。

「オープンソースを活用た」の「し」が以下です。

baseFormで形態素である「し」の基本形が「する」であると解析されてます。
normalizedFormで、ひらがな、カタカナ、漢字での正規化した表示が表示されてます。
「刷る」や「擦る」じゃなく「為る」と正しく意味合いが解釈されてます。
partOfSpeechで品詞の分類が表示されてます。

次に「システム開発」は、「システム」「開発」と2つにわけられるのではなく「システム開発」と1ワードとして
認識されてます、これは、indexへのmappings登録時にtokenizerの指定で”sudachi_split”: “C”,
という、細かく分割しない指定しているからです。Bは中ぐらいに分割する、Aは細かくわける指定になります。

めちゃくちゃ長いので一部省略して解析結果全部を貼っておきます。

今回はsudachiをデフォルトの設定で使用しましたが、sudachiやその他elasticsearchの日本語対応プラグインには
様々なフィルターが用意されておりますのでそちらもお試し頂ければと思います。

elasticsearch-sudachiをelasticsearch7.8上で動かす手順ポイント

  • elasticsearchのバージョンとelasticsearch-sudachiのバージョンを合わせましょう
  • 辞書の配置場所と名前に注意
  • 様々なフィルタがあるから試してみてね

この記事が気に入ったら
いいね ! しよう

Twitter で
The following two tabs change content below.
内信史
内信史
代表取締役
意識高い系IT企業経営者、エンジニア、コンサルタントだがMacは使いこなせない。 ギークフィードファウンダー、代表取締役、中小企業診断士、 オープンソースコンサルタント、コンタクトセンターシステムコンサルタント、データサイエンティスト エンジニアとして今でもよく触るものはElasitcSearch/Amazon OpenSearch、AWS、Linux、c++ 中小企業診断士としては、会社地元台東区の中小企業向けにホームページやSNSを利用したマーケティングプロモーション支援を実施。

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ