LoginSignup
15
2

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-12-15

この記事は「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

15
2
0

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
  3. You can use dark theme
What you can do with signing up
15
2