1 カップの小麦粉、2 個のレモンの皮、1 カップの詰められたブラウン シュガーなど、レシピの材料を量、測定、アイテム、説明に解析する必要があります。これを行う最良の方法は何でしょうか? 私はプロジェクトに python を使用することに興味があるので、nltk を使用することが最善の策であると想定していますが、他の言語にも対応しています。
5 に答える
私は実際に自分のウェブサイトでこれを行っています。これは現在、他の人が使用できるオープンソース プロジェクトの一部です。
私は自分のテクニックについてブログ記事を書きました。
これは数年後だと思いますが、私は自分で似たようなことをしようと考えていて、これに出くわしたので、他の人に役立つ場合に備えて刺すかもしれないと思いました
無料のテストを解析したいと言っても、ほとんどのレシピのレシピ リストはかなり標準的な形式になっています。各材料は別の行にあり、正確な文の構造がそれほど重要になることはめったにありません。語彙の範囲も比較的狭いです。
1 つの方法は、各行をチェックして、名詞である可能性のある単語と量を表す単語/記号を確認することです。WordNet は、単語が名詞であるかどうかを確認するのに役立つと思いますが、私自身は使用したことがありません。別の方法として、 http://en.wikibooks.org/wiki/Cookbook:Ingredientsを単語リストとして使用することもできますが、これがどれほど包括的なものかは正確にはわかりません。
他の部分は量を認識することです。これらはいくつかの異なる形式で提供されますが、おそらくキーワードのリストを作成できるほどの数ではありません. 特に、適切なエラー報告があることを確認してください。プログラムが行を完全に解析できない場合は、その行の内容と、認識した/認識しなかった内容を報告して、それに応じてキーワード リストを調整できるようにします。
とにかく、これが機能することを保証するものではありません (そして、100% 信頼できるわけではないことはほぼ確実です)。
これは不完全な答えですが、ご存知のように、自明ではないフリーテキストパーサーを作成しようとしています:)
料理に特化した知識を使ってごまかすいくつかの方法:
- 「形容詞」と「動詞」の単語のリストを作成し、それらに対してフィルター処理します
- 測定単位は、{L.、c、cup、t、dash} などの単語や略語を使用して、閉じたセットを形成します。
- 指示 - 切る、さいの目に切る、調理する、皮をむく。この後に来るものはほぼ確実に食材
- 主に名詞を探していることを思い出してください。非名詞のラベル付きリスト (たとえば、WordNet から) を取得して、それらに対してフィルター処理を行うことができます。
もっと野心的な人は、NLTK Bookのパーサーに関する章を参照してください。
幸運を!これは、ほとんど実行可能なプロジェクトのように思えます!
あなたの入力が何であるかをより具体的に教えてもらえますか? 次のような入力がある場合:
1 cup flour
2 lemon peels
1 cup packed brown sugar
NLP をまったく使用せずに解析するのはそれほど難しくありません。