LoginSignup
2

posted at

updated at

言語処理100本ノックにElixirでチャレンジ! ~ 30. 形態素解析結果の読み込み ~ 準備編

この記事は「Elixir Advent Calendar 2022」4日目の記事です
東京にいるけどfukuokaexのYOSUKEです。

以前、言語処理100本ノックをElixirでやってみるを途中までやってまして、
言語処理100本ノックにElixirでチャレンジ! 1−4まで
言語処理100本ノックにElixirでチャレンジ! 5
で、実は記事にはしてないけど第3章までは終わってたので、今回久々に第4章から始めてみよう。

ちなみに、私はこの領域はからっきしなので、最近ElixirコミュニティでML系の記事がいっぱい上がってるので勉強させてもらおうっと。

第4章: 形態素解析

30. 形態素解析結果の読み込み

形態素解析結果(neko.txt.mecab)を読み込むプログラムを実装せよ.ただし,各形態素は表層形(surface),基本形(base),品詞(pos),品詞細分類1(pos1)をキーとするマッピング型に格納し,1文を形態素(マッピング型)のリストとして表現せよ.第4章の残りの問題では,ここで作ったプログラムを活用せよ.

まぁ、よくわからんけど、

夏目漱石の小説『吾輩は猫である』の文章(neko.txt)をMeCabを使って形態素解析し,その結果をneko.txt.mecabというファイルに保存せよ.このファイルを用いて,以下の問に対応するプログラムを実装せよ.
と書かれてたので、早速、こちらの準備をしようかなと。今回の記事は準備までで終わりそう。

まずは、Mecabをインストールするところから。という事で私はmac環境なので brew install でインストールしました。

$ brew install mecab mecab-ipadic

で、こんな有名なツールなら誰かモジュール作ってるだろう?と検索したら早速見つかったので、それを実装してみます。

まずはmix プロジェクトを作成します。

mix new handred_knok 

早速モジュールを追加してみます。

  defp deps do
    [
      {:mecab, "~> 1.0"}
    ]
  end

早速試しに動かしてみます。

 Mecab.parse("今日は晴れです")
[
  %{
    "conjugation" => "",
    "conjugation_form" => "",
    "lexical_form" => "今日",
    "part_of_speech" => "名詞",
    "part_of_speech_subcategory1" => "副詞可能",
    "part_of_speech_subcategory2" => "",
    "part_of_speech_subcategory3" => "",
    "pronunciation" => "キョー",
    "surface_form" => "今日",
    "yomi" => "キョウ"
  },
  %{
    "conjugation" => "",
    "conjugation_form" => "",
    "lexical_form" => "は",
    "part_of_speech" => "助詞",
    "part_of_speech_subcategory1" => "係助詞",
    "part_of_speech_subcategory2" => "",
    "part_of_speech_subcategory3" => "",
    "pronunciation" => "ワ",
    "surface_form" => "は",
    "yomi" => "ハ"
  },
  %{
    "conjugation" => "",
    "conjugation_form" => "",
    "lexical_form" => "晴れ",
    "part_of_speech" => "名詞",
    "part_of_speech_subcategory1" => "一般",
    "part_of_speech_subcategory2" => "",
    "part_of_speech_subcategory3" => "",
    "pronunciation" => "ハレ",
    "surface_form" => "晴れ",
    "yomi" => "ハレ"
  },
  %{
    "conjugation" => "基本形",
    "conjugation_form" => "特殊・デス",
    "lexical_form" => "です",
    "part_of_speech" => "助動詞",
    "part_of_speech_subcategory1" => "",
    "part_of_speech_subcategory2" => "",
    "part_of_speech_subcategory3" => "",
    "pronunciation" => "デス",
    "surface_form" => "です",
    "yomi" => "デス" 
  },
  %{
    "conjugation" => "",
    "conjugation_form" => "",
    "lexical_form" => "",
    "part_of_speech" => "",
    "part_of_speech_subcategory1" => "",
    "part_of_speech_subcategory2" => "",
    "part_of_speech_subcategory3" => "",
    "pronunciation" => "",
    "surface_form" => "EOS",
    "yomi" => ""
  }
]

お、なんか良さげ。

という事で、この続きは長くなるので次回にします。

簡単Elixirシリーズじゃ無いけど、基本的に小ネタの記事はサクッとがコンセプトで書いていきます。w

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2