更新日:2015/10/14

はじめに

レシピを対象とした研究・開発が近年さかんになってきています.そこでは,レシピの手順文書に対して形態素解析した結果を素材として用いることが多いですが,その準備には意外と手間がかかります.このような素材の準備は,研究・開発に依存することは少なく,共通化できる処理も多いと考えています.少しでも前準備の労力を減らし,本来の研究に打ち込める環境を提供するため,我々は本マニュアルを公開しました.これによって,レシピを対象とした研究・開発がますますさかんになっていくことを期待しています.
本マニュアルは,レシピの手順文書を入力として,単語分割結果や品詞判別結果,食材・道具などの判別結果を出力する方法を記したものです.
例えば,以下のような結果が得られます.
  • 入力
    糸蒟蒻を下茹でします。
  • 形態素解析結果
    糸/名詞/名詞-普通名詞-一般+/し 蒟蒻/名詞/名詞-普通名詞-一般+/こんにゃく を/助詞/助詞-格助詞+/を 下茹で/名詞/名詞-普通名詞-サ変可能+/したゆで し/動詞/動詞-非自立可能+サ行変格/し ま/助動詞/助動詞+助動詞-マス/ま す/語尾/語尾+助動詞-マス/す 。/補助記号/補助記号-句点+/。
  • 食材・道具などの判別結果
    糸/F-B 蒟蒻/F-I を/O 下茹で/Ac-B し/O ま/O す/O 。/O 
  • 最終的に得られる結果
    糸,名詞,名詞-普通名詞-一般+,し=蒟蒻,名詞,名詞-普通名詞-一般+,こんにゃく/F を,助詞,助詞-格助詞+,を 下茹で,名詞,名詞-普通名詞-サ変可能+,したゆで/Ac し,動詞,動詞-非自立可能+サ行変格,し ま,助動詞,助動詞+助動詞-マス,ま す,語尾,語尾+助動詞-マス,す 。,補助記号,補助記号-句点+,。

論文での説明

論文での説明例はこちら(.zip, EUC-JP版)からダウンロードできます.本ページに掲載されているマニュアルに従って処理した結果を,論文に掲載される際の説明文としてご利用ください.

注意事項

  • 以下の処理は,すべて文字コードUTF-8で行います.
  • サンプルプログラムは,入力されるファイルの改行コードがLF("\n")であることを前提として作られています.
    (必要に応じてサンプルプログラムを変更してください.)
  • 形態素解析の処理では,メモリが8GB以上必要です.

前準備

  • 形態素解析器KyTeaをこちらのページからダウンロードし,インストールしてください
  • 形態素解析用モデルをこちら(最新モデル(4.1GB))からダウンロードし,適当な場所に保存してください
  • レシピ用語認識器(食材や道具などを判別するもの)をこちら(.tar.gz)からダウンロードし,適当な場所に保存して,展開してください
  • Perlが入っていない場合はインストールしてください(レシピ用語認識等を行う際に必要)
  • Python2 or Python3が入っていない場合はインストールしてください(サンプルプログラムを利用する際に必要)(Python2とPython3に互換性はありませんが,それぞれに対応したサンプルプログラムを用意しています)
  • 解析したいレシピ手順文が記述されたファイルをUTF-8で作成してください(サンプル

手順

  • 解析したい手順文書がJIS X 0208 の文字集合(文字コードはUTF-8)によって構成されるようにします.また,実体参照や文字参照を通常の文字に変換します.
    サンプルプログラム(Python 2)展開する.
    サンプルプログラム(Python 3)展開する.
  • 以下のコードを実行して,形態素解析します.
    ここで使用するモデルの拡張子は".kbm"です.
    モデルの読み込みには時間がかかります.
    kytea -model [ダウンロードした形態素解析用モデル(.kbm)のパス] < [手順1で出力されたファイルのパス] > [出力先のパス]
                      
  • レシピ用語認識を行うための前準備として,手順2で得られたファイルから以下の書式に合うファイルを作成します.
    [表記] [表記] [表記] ...
    サンプルプログラム(Python 2)展開する.
    サンプルプログラム(Python 3)展開する.
  • 以下のコードを順に実行して,レシピ用語認識(以下,NERという)を行います.
    ここで使用するモデルの拡張子は".knm"です.
    誤って形態素解析のモデル(.kbm)を指定すると,すべてAc-Bになりますのでご注意ください.
    kytea -model [ダウンロードしたNERフォルダに入っているモデル(.knm)のパス] -out conf -nows -tagmax 0 -unktag /UNK [手順3で出力されたファイルのパス] > temp.Ciob2
    perl [NERフォルダ内の bin/NESearch.pl] temp.Ciob2 [出力先のパス]
                      
  • 整形したものを出力します.出力ファイルのデリミタ(区切り文字)は,読み込むための処理の順に以下のとおりです.
    " " --- 単語やレシピ用語の区切り
    "/" --- レシピ用語タグ区切り
    "=" --- レシピ用語(単語列)内の単語区切り
    "," --- 形態素情報区切り (形態素解析の "/" に相当)
    "+" --- 活用型の区切り(活用語の場合のみ後続要素あり)
    "-" --- 品詞細分類の要素の区切り
    サンプルプログラム(Python 2)展開する.
    サンプルプログラム(Python 3)展開する.

終止形付与について

終止形を復元した結果が必要な場合,以下の処理を行うことによって,終止形復元結果が得られます.
終止形復元結果の例を以下に示します.
糸/名詞/名詞-普通名詞-一般+/し/NA 蒟蒻/名詞/名詞-普通名詞-一般+/こんにゃく/NA を/助詞/助詞-格助詞+/を/NA 下茹で/名詞/名詞-普通名詞-サ変可能+/したゆで/NA し/動詞/動詞-非自立可能+サ行変格/し/する ま/助動詞/助動詞+助動詞-マス/ま/ます す/語尾/語尾+助動詞-マス/す/NA 。/補助記号/補助記号-句点+/。/NA
  • 終止形を復元するためのプログラム等が入ったファイルをこちら(.tar.gz)からダウンロードし,適当な場所に保存して,展開してください.
  • 活用語に対して,終止形を復元した結果を付与します.この処理では,bccwjconv.tar.gzの中に入っている"addbase.perl"と" base.list"を利用します.また,手順2で出力されたファイルを使用します.
    この処理は,作業ディレクトリを"base.list"が入っているディレクトリに変更して行う必要があります.
    cd ["base.list"が入っているディレクトリのパス]
    perl ["addbase.perl"のパス] < [手順2で出力されたファイルのパス] > [出力先のパス]
                      

参考文献

連絡先

  • 森 信介 (forest [at] i.kyoto-u.ac.jp)
  • 山肩 洋子 (yamakata [at] dl.kuis.kyoto-u.ac.jp)
  • 門脇 拓也 (kadowaki [at] dl.kuis.kyoto-u.ac.jp)
※[at]を@に置き換えてください.
※サンプルプログラムやリンク切れ,記載内容の不備に関するお問い合わせは,門脇までお願い致します.

更新履歴

  • 2015/10/14(最新の更新)
    • Python3のサンプルプログラム(normalizer_sample.py)を微修正
    • レシピツリー導出マニュアルへのリンクを追加
更新履歴をすべて展開