FORCIA CUBEフォルシアの情報を多面的に発信するブログ

自然言語処理技術で商品データをクレンジング サマーインターンメンターが語るインターン生の取り組み【後編】

2018.11.15

新卒採用 インターンシップ エンジニア 採用

 技術本部の光山です。今夏、フォルシアでは初の試みとなるサマーインターンシップを開催しました。メンターから見たサマーインターンの振り返りとして、インターン生の具体的な取り組みを、前編・後編の全2回でご紹介しています。前回の記事は「検索高速化コース」について、今回は後編として「データクレンジングコース」について振り返ってみたいと思います。

 前回の記事はこちら

  • 検索高速化コース(第1ターム・第3ターム)

 ECサイトのオンラインのSQLを徹底的にチューニングするコースです。

  • データクレンジングコース(第2ターム・第3ターム)

 「検索改善のための、ECサイト用データのクレンジング」に取り組むコースです。

データクレンジングコース

データクレンジングはなぜ重要か

 ECサイトの各重要機能(検索、推薦)や業務 (分析) の品質には、データの質が強く関係します。データの質が低い例として、下記が挙げられます。

  • 例1:数字に全角と半角が混在している
  • 例2:火に強い手袋が「耐火手袋」と表記されている場合もあれば、「燃えにくい手袋」と表記されている場合もある

 こうしたデータに対しては、データクレンジングを行うことが重要になります。データクレンジングとは「クレンジング」の名が示す通り、データを"きれいにする"ことです。

 具体的には、

  • ノイズの除去
  • 誤表記の修正
  • 本質的でない違い (異なる同義語が使われているなど) の吸収
  • 情報の付加

などを行います。

 実際に、データ分析エンジニアは8割の時間をデータの整備に費やしている、との調査もあるほどです。データクレンジングの重要性は増すばかりと言えるでしょう。

課題の概要

 データクレンジングコースは、インターンシップ全3ターム中2タームで開催されました。具体的な課題は2回それぞれで異なります。本記事では、最初のタームで出した課題を中心にご紹介します。

 今回は、手袋、台車、ドライバーなど、ものづくりの現場で必要とされる多様な商品(消耗品や機械類)を扱っている商社様の商品マスタを対象としました。商品マスタには、商品の名称があり、その商品は一つのカテゴリに属しています。商品名には入力のルールが無いため、様々なパターンで入稿されます。

 例えば、「台車」というカテゴリ一つをとっても、同一カテゴリの商品名には色々なパターンのものが存在します。

  • 「商品の種類(カテゴリ)」+「商品のスペック」
     例:樹脂台車 省音G車輪 600X390 ブルー
  • 「商品の種類(カテゴリ)」のみで「台車」というワード自体は登場しない
     例:フラットキャリー
  • そもそも台車本体ではない商品が「台車」カテゴリに含まれている
     例:台車用ブレーキ

 この商品マスタを、ECサイトでの検索にそのまま使用した場合を考えてみましょう。仮に「台車」というキーワードで検索した場合、ユーザが求めているのは台車本体である可能性が高いと考えられます。しかしながら、「フラットキャリー」は、台車本体ではあるものの商品名に「台車」という文字列を含んでいないため、検索にはヒットしない(あるいは下位表示される)可能性があります。一方「台車用ブレーキ」は、商品名に「台車」という文字列を含んでいるため、台車本体では無いにも関わらず、検索に上位表示されてしまう可能性があります。

 このような背景を踏まえ、「商品名から商品の種類を表す代表的な単語を抽出する」という課題にチャレンジしてもらいました。

 具体的には、

  • 「台車ブレーキ」から「ブレーキ」
  • 「クリアファイル 青」から「クリアファイル」
  • 「No.700 黄緑 工業用マーカー」から「マーカー」

を、それぞれ抽出するといったイメージです。もし商品の種類を表す単語を抽出することができれば、その単語をキーワード検索対象とすることで、よりユーザの求めている商品を上位に表示させることができるようになるはずです。

インターン生の取り組み

DSC01957-thumb-600xauto-2799.jpg

 インターンシップ期間中、解決法についてはこちらからは何も提示しませんでしたので、インターン生もかなり苦労されたと思います。最終的には「TF-IDFという指標を用いて代表語を抽出する」というアイデアに辿り着いて、実装を進められていました。その取り組みについて、以下に簡単にご紹介します。

 TF-IDFとは、文書中の単語の特徴量を測る指標であり、自然言語処理の基本的な指標の一つです。単語の出現頻度(TF)と単語の逆文書頻度(IDF・希少性)の2つの指標から成ります。このとき、例えば、「クリアファイル 青」「クリアファイル 赤」「クリアファイル 黃」という商品名が登録されていた場合のTF-IDF値を考えてみましょう。「青」「赤」「黃」という単語は登場頻度が低いため希少性が高く、結果的にTF-IDF値は高くなるでしょう。一方、「クリアファイル」は全ての商品に共通しているため、TF-IDF値は低く出るはずです。このことから、「単語の TF-IDF値が大きくない単語が代表語なのではないか」との仮説を立てました(厳密には、今回のタスクに対してはIDF値の方のみを見ていました)。

 今回はカテゴリを「文房具」に絞って、品番順上位100件の商品について、この手法を適用されていました。そもそも代表語を商品名中に含んでいない商品を除外した59件中、およそ90%の商品について、正しく代表語を抽出することに成功していました。以下に結果の一部を掲載します。

  • 「スマートマーカー追加用 電子ペン」→電子ペン
  • 「タイムカード カルコロ用 」→タイムカード
  • 「ハーパーハウス レミニッセンス カケルアルバム<ハガキ> レッド」→カケルアルバム

 インターンシップの時間の都合上、100件の商品に対してしか結果の評価ができなかったものの、非常に高精度の結果を出されていました。特に、複雑な機械学習の手法に安易に走らず、基本的な指標を、その意味をしっかりと考えながら使用している点が、個人的にとても良いなと思いました。他の商品についても同様の手法で代表語を抽出できる可能性があります。

 別のタームのインターン生には、「商品の説明文のタグ付」というかなり高難易度の課題に取り組んでもらいました。正にハイレベル学生と呼ぶにふさわしく、手法の選定から実装、結果の評価・考察までをたった5日間で全てこなしていました。最終発表会の会場がざわつくほど、実装スピードと結果の精度は素晴らしいものでした。

最後に

インターンシップに参加してくださった皆さんへ

 私がメンターを担当した2コース以外にも、Rust検索エンジン開発コース、Alexa Skill開発コース、Google Hotel Ads配信最適化コース、データ分析コース、UI/UXコースに、合計12名の大学生・大学院生の方々が参加してくださいました。
 参加してくださった皆さん全員に共通していたことは、

  • 実装や分析スピードの速さ(実装が速い分、高速にPDCAを回すことができる)
  • 謙虚に学ぶ姿勢
  • 半ば無茶ぶりの課題に対して(泥臭くても)確実に何らかの結果を出す執念

だと思います。

 最終成果発表会は毎回大盛り上がりで、私を含め社員一同大変刺激になりました。本当にありがとうございました。今回学んでいただいたことが、皆さんの今後の研究や仕事に少しでも活きれば、とても嬉しく思います。

就活生の皆さんへ

 フォルシアは長年培ってきた高速検索技術はもちろんのこと、自然言語処理やUI/UX改善など、顧客に価値を提供できるのであれば、新しい技術やアプローチを積極的に取り入れていく会社です。検索技術に興味のある方、世の中をあっと言わせるすごい技術やサービスを作りたい方、ぜひ一緒にExcitingな仕事をしましょう!

この記事を書いた人

光山倫央

2013年新卒入社、エンジニア。
MRO(企業向けの消耗品)業界向けの検索サービス開発を担当。
最近では、新規事業開発にも携わり、新たな技術の創出を目指す。