形態素解析エンジンを使って魚の情報を構造化する
こんにちは! フーディソン エンジニアチームのtaka(@terumapy)です。
最近、住所データの複雑さについてTwitterで話題になっていましたね。住所には、異なる形式や表現で書かれた情報を一定の形式に整理することが難しいという問題があります。
実は、生鮮流通の分野においても同様の問題が起こっています。私達フーディソンがテクノロジーの力でどのようにこの問題と向き合ってきたのかについて、水産物の特性と併せて簡単にご紹介できればと思います。
水産物情報の特性
生鮮流通、特に水産物の特徴として、「データが構造化されにくい」というものがあります。ここでいう構造化とは、データを特定の形式やモデルに従って整理・整形することを指します。
例えば、服の商品データの構造化であれば、服の種類(セーター・ジーンズetc)や色、サイズ(S・M・L)など、その商品がどのような要素からなるのかが明確な規格に則って定義された上で記録・伝達されていきます。
しかし、水産物のデータではそうもいかない場合があります。服などの工業製品と比較して規格に乏しく、そもそも流通の中で特定の形式に沿ってデータが作られ伝達されていくケースがあまり多くありません。一度構造化されたデータが作られたとしても、流通の過程で構造が変わったり、失われたりします。
そのような条件の中でも、大量の水産物情報を効率的に処理するために、商品名をはじめとしたテキストから構造化されたデータを作るという手段があります。例えば、「長崎・壱岐産 活〆神経抜イサキ (釣物)」のような商品名なら、以下のようなイメージで構造化できます(実際にはもっと多くの情報が構造化されます。変数名なども仮のものです)。
水産物情報を構造化すると何が嬉しいのか
このように構造化された水産物情報を、フーディソンでは以下のように活用しています。
商品を検索しやすくする
魚種やサイズ、産地、温度帯、部位、締め方、漁法、水産物ブランドなどさまざまな要素から魚ポチ上で商品を検索することができます。普通のECサイトではあたり前に感じるかもしれませんが、構造化されていないことの多い水産物のデータを細やかに検索できることは、フーディソンの強みの一つです。
商品情報を効率的に作成・伝達する
構造化された商品データから、追加情報を自動的に一部生成することができます。
例えば、魚ポチの商品コメント。特に水産物は多様で、中にはとげに毒を持った魚や調理に工夫を要するものなど、お客様に注意を促す必要があるものが含まれます。
本来、これを一つ一つ人力でもれなく作成・確認するには膨大な労力がかかります。しかし、フーディソンでは水産物情報の構造化に関する技術とノウハウを活かしてこれをほぼ自動で行っています。
(以下画像の※マークのコメントも自動で作成されています)
出荷業務を効率化する
フーディソンは多種多様な商品を販売・配送していますが、その梱包出荷オペレーションにも、水産物情報を構造化する技術とノウハウが活かされています。商品を出荷する際、個々の特徴によって氷のあてかたや梱包方法を変えるなど、さまざまな制約が発生します。
従来は長年の経験と勘で全ての条件を判断していきましたが、フーディソンでは構造化された水産物情報をもとに出荷帳票などの表示を自動で切り替えることで、大量の商品を高い品質のまま梱包・出荷できるオペレーションを支えています。
現在、自動計量器などの効率化に向けた設備投資が進められており、構造化データと組み合わせて更なるオペレーションの進化を推進しています。
水産物情報構造化への挑戦:商品名から魚種を当てよう
このように水産物の情報を構造化することで、生鮮流通の効率化につなげられることが少しお伝えできたかと思います。実はこれ、簡単ではありませんでした。締め方や部位に限らず、最も基本的かつ重要な要素である、そのデータがどの魚種なのかを判定することだけでも、さまざまな工夫が必要になりました。
例えば、「マサバ」という文字が商品名に含まれていれば、真鯖という魚種の商品であると判定する単純なパターンマッチでも一見実現できそうです。ただこれでは「マダイ」と「アマダイ」が同じ魚種だと判定されてしまいます。また、人によって「真鯛」を「マダイ」「まだい」と書くなど、表記の揺れも発生します。
このような状況の中でも正しく魚種を判定するために、形態素解析エンジンを用いるアプローチがあります。形態素解析エンジンとは、テキストを形態素(意味を持つ言葉の最小の単位)に分解してくれるものです。MeCab(めかぶ)やChaSen(ちゃせん)などがその代表例として知られています。形態素解析エンジンは、「辞書」と呼ばれる単語やフレーズの集合をもとに、テキストを分解してくれます。フーディソンでは、自社で独自に作成・蓄積した水産物辞書と形態素解析エンジンを活用して、各商品がどの魚種に紐づくものなのかを正しく判定できるようにしています。
これにより、例えば「活〆血抜天然マダイ 中(定置)」「香川産 真鯛セミドレス」のような表記ゆれがあっても、同じマダイという魚種であると判定できます。他にも、「長崎県産シブダイ」のように「ブダイ」と「シブダイ」と名前が一部重複するパターンでも、あらかじめ「シブダイ」を水産物辞書に登録しておくことで、適切に魚種を紐づけることができるわけです。
「なんだ簡単じゃん!」と思われるかもしれませんが、これだけでは根本的な解決に至らないパターンがありました。その中の主だったものを見てみましょう。
1. 辞書の拡充が足りなくて正しく魚種を判定できない
辞書に入っていないパターンが現れたとき、魚種の紐づけに失敗することがあります。ハワイチビキ、ナガサキフエダイ、アジアコショウダイなどさまざまな魚種を取り扱う弊社では、継続的な辞書の拡充を続けて対応してきました。
2. 魚種が一意ではない(白いか問題)
水産物には、名前が同じでも指している魚種が異なる場合があります。私はこれを白いか問題と呼んでいます。「シロイカ」が指すイカが、獲れる地域や呼ぶ人によって異なるイカになってしまうことがあるのです。これについては各種法令に基づき、社内で命名ルールを整理しながら対応してきました。
3. 魚種でないものを魚種としてみなしてしまう
何も工夫しないと、「〜〜のアラ」(魚の頭やカマ)という商品が「アラ」という魚種に紐づけられてしまう場合がありました。本当はその種ではないものなのにそう判定されてしまうケースは水産物だけでなく青果や肉でも見られ、「バナナピーマン」がバナナと判定されてしまうなど、対処するにはいろいろな工夫が必要となるケースがあります。
一緒に世界を変えよう
これまで見てきた水産物以外にも、フーディソンはさまざまな商品を扱ってきました。この中で蓄積されたノウハウとテクノロジーを活かして、多くの課題に向き合い続けています。生鮮流通に新しい循環をもたらすことをビジョンに掲げる私達フーディソンは、ここからさらに進化を続けていきます。「(テクノロジーの力で)世界の食品流通を変えてみたい!」「この分野で世界一面白いことがやりたい!」そんな方と一緒に働きたいです。一度私とお話しませんか。