自作キーボード沼 自由研究ノート

こんにちは!広報部のとくなり餃子大好き( id:tokunarigyozadaisuki )です。

クックパッドのSlackには無数のオープンチャンネルが存在していますが、最近盛り上がりを見せているのが「#keyboards」というチャンネル。先週末コミックマーケットが開催されていたためここ最近はその話でもちきりの様子でしたが、普段から大事な仕事道具であるキーボードにこだわりを持った社員が日々情報交換をしています。興味本位で社員のキーボードをのぞいでみると、ピカピカ光るものから、カチカチッと音がなるもの、アルファベットも数字も書いていないもの……その多彩さにびっくりします。 そこで、クックパッドエンジニアの最近のキーボード事情を調査してみました! 

なお、HHKBやRealforceはクックパッドでは当たり前だったので、紹介は割愛いたします。

クックパッドエンジニアのキーボード

@takai

f:id:tokunarigyozadaisuki:20180814150420j:plain

キーボード概要

名称:Keebio Fourier
スイッチ:Cherry MX 茶軸(45g)
レイアウト :40%スプリットキーボード 

なぜ今のキーボードにしたのか

自作するならスプリットキーボードで、かつコンパクトな感じに仕上げたいと思っていたところ、Keebio の Fourier を見つけて、「ミニマムでストイック、まさに自分のためのキーボードだ」と思いました。

気に入っているポイント

40%キーボードって、ほどよく不便で楽しいじゃないですか。数字キーが無いわけですから、使うにあたって工夫する必要があります。そこを自分好みにカスタマイズして使いこなしてると「俺すごい」という気持ちになれるんです。キーキャップのカラーリングもこだわりのポイントで、Signature Plastics社のGRANIT KEYSETにインスパイアされました。好みのレイアウトだと、キーキャップのセットが売っていなかったので、キーキャップ単位で購入したりと、そこは妥協せずに頑張りました。

@slightair

f:id:tokunarigyozadaisuki:20180814150437j:plain

キーボード概要

名称:Ergo42
スイッチ:Cherry MX 赤軸(45g)
レイアウト:7x4格子配列スプリットキーボード

なぜ今のキーボードにしたのか

少し前にスプリットキーボードに挑戦してみよう、でもキーが減るのはちょっと怖いなと思い、比較的キーが多いViterbi Keyboard(7x5格子配列)を作って使い始めたのですが、想像と違ってキーを余らせてしまっていました。 また同じキー配置で文字を打ちたいので、自宅と会社の間で持ち歩いていたのですが、面倒くさくなってきてもう一台作りたいなと考えていました。 そんなところに一行少ないだけでちょうどよく使えそうなErgo42の開発キットの販売がはじまったので飛びついてしまいました。国産なので注文してすぐ届きました。

気に入っているポイント

はんだ付けは大変ですが、キーキャップやキーマップなど、自分好みにいじることができるのが楽しいですね。特に、基板の底にLEDを配置して光らせるUnderglow(アンダーグロウ)が気に入っています。キーキャップの色は黒を基本に、特殊キーなどを青系にしていて、光の色もそれに合わせています。みんなから声かけられるようになったし、目を引く、やったぜ! という気持ちです。

@eisuke

f:id:tokunarigyozadaisuki:20180814150442j:plain

キーボード概要

名称:TMK Alps64
スイッチ:Alps SKCM SALMON
レイアウト:60%キーボード

なぜ今のキーボードにしたのか

ビンテージキーボードが好きで、以前はIBMマシンで使用されていたバックスプリング式キーボードを使っていました。60%くらいのコンパクトさで自分好みのキータッチのキーボードを作ろうと思い、CHERRY軸を触ってみたのですが自分にはしっくりこなかったので別のものを探していました。その中で、80〜90年代に生産された多くのキーボードに使用されていたAlps軸が気になりました。特にサーモン(ピンク)軸が気になったので、サーモン軸を使っている Apple Extended Keyboard をオークションで購入し、解体してキースイッチを取り出し自作してみました。

気に入っているポイント

タクティカルキーボードの少しだけカチッとくる、この独特で軽めな押し心地がいいですね。Alps軸の古代パーツ感も気に入っています。 

@ragi256

f:id:tokunarigyozadaisuki:20180814150453j:plain

キーボード概要

名称:Helix
スイッチ:Kailhロープロファイル 赤軸(45g)とKailhロープロファイル 茶軸(45g)の併用
レイアウト:6x5格子配列スプリットキーボード

なぜ今のキーボードにしたのか

昔から特殊な形状のキーボードが好きで、Dactylキーボードを作っているブログ記事を見たときに自分でもDactylを作ってみたいと思いました。しかし、はんだ付けもやったことがない自分には難しそうだったので、一旦難易度を下げて簡単なキーボードを作ることにしました。Helixに決めた理由は、以前から一度試してみたかったKailhのロープロファイルスイッチが使えるからです。

気に入っているポイント

親指を使うキーだけ押し心地を変えたかったので、親指周りだけを茶軸にして他は赤軸にしました。キーキャップは、デフォルトの刻印セットに加えて無地の白と黒を見た目で覚えやすいように配置しています。スプリットキーボードなので、椅子の肘掛けに肘先を置いて使えるのもいいですね。

@uzzu

f:id:tokunarigyozadaisuki:20180814171034p:plain

キーボード概要

名称:NIZ keyboard Plum 75 EC Keyboard
スイッチ:静電容量無接点方式(35g)
レイアウト:75%キーボード

なぜ今のキーボードにしたのか

社会人になってから、主にRealforce 86Uを8年くらい使っていました。特に困ってもいなかったのですが気分転換をしたくなり、Realforceの打鍵感が好きだったのでそこはあまり変わらず、それでいて、いじりやすくて不要なキーが無いコンパクトなものを探していて、NIZ keyboardにしました。他の皆さんのキーボードとは違い、組まれた状態で売られているので自作とは言えないですね……。

気に入っているポイント

75%である事(ファンクションキーは欲しいけど十字キーとハードウェアキーと操作キーはいらない)、さらに右側の特殊キーを十字キーに変えられるというのが、まさに自分の需要に合っていて気に入っています。加えて、静電容量無接点スイッチなのにCherry MX互換のキーキャップが採用されているので、他の自作キーボードと同様にキーキャップも変えられますし、バネを付けることでキーの重さが変えられるんです。Realforceの偏荷重モデルの重さを参考にしつつ、気になる所の重さを調整して自己最適化しています。今後、キーキャップは変更していきたいと思っています。

@ayemos

f:id:tokunarigyozadaisuki:20180814150747j:plain

キーボード概要

名称:WASD Keyboard
スイッチ:Cherry MX 青軸(50g)
レイアウト:60%キーボード

なぜ今のキーボードにしたのか

大学生の時HHKBを使っていたのですが、ErgoDoxで組まれた自作キーボードを見たとき、自分好みのキーキャップに変えられるものがほしいと思いました。

気に入っているポイント

深夜に酔った勢いで作ったので気に入ってるとかこだわりとかはないですね。漢字を使ったキーキャップデザインを自作しました。

最後に

いかがでしたでしょうか。以前はHHKBシリーズを使っていて、そこから自作キーボードの門を叩いたという社員が多いように感じました。自分にとって最適なキーボードを求めて細かいところから自作する人、見た目の可愛さを求めて工夫する人と、こだわりは様々。インタビューしていてとても楽しかったです。徐々に詳しくなってきましたよ! Gherkinってキーボードをつくってみたいと思っています。

今回紹介しきれなかった社員の自作キーボードについてはまた次回。お楽しみに! 

リリース間近の新規事業「クックパッドマート」の立ち上げの話

こんにちは、買物事業部のデザイナー兼エンジニアの長野です。

現在買物事業部では、クックパッドマートという新規サービスの開発を進めています。この夏にいよいよリリースを予定しており、先日 プレスリリース を発表しました。

クックパッドマートは、今年の1月に私を含めて3名の小さなチームでサービスづくりを開始しました(8/13現在:10名)。チーム発足から半年をかけて様々な検証を行い、サービスを形にしてきたので、本記事ではそのプロセスの一部を下記の流れでご紹介したいと思います。

  1. クックパッドマートとは
  2. サービスが解決したい課題
  3. サービスが提供する価値
  4. 価値仮説に至るまでのプロセス

1. クックパッドマートとは

クックパッドマートは、料理が楽しみになるような食材を、スマホアプリから簡単に注文することができる、生鮮食品のECサービスです。

地域の精肉店や鮮魚店、野菜農家、ベーカリーなどの「こだわり食材」をアプリでまとめて注文できます。 「焼きたてパン」や「朝採れ野菜」などの新鮮な食材を、販売店から集荷した当日に受け取ることができ、1品からでも送料は無料。毎回必要な分だけを手軽に購入することができます。

商品の受け取りは、地域の様々な店舗・施設等に設置された「受け取り場所」の中から好きな場所を選び、好きな時間に受け取ることが可能です。そのため、日中忙しくて買い物をする時間がない方でも、新鮮なこだわり食材を手軽に入手することができるサービスです。

ティザーサイトはこちら

2. サービスが解決したい課題

クックパッドマートは、私たちが普段の買い物に抱える下記のような課題を解決しようとしています。

おいしい食材を新鮮な状態で手に入れることの難しさ

世の中の大半の人は普段の食材はスーパーで購入することが多いと思います。何でも揃うスーパーはとても便利ですが、一方で、スーパーの品揃え次第で食生活が決まってしまうのも事実です。 街にはこだわりを持って厳選された食材を扱う専門店もありますが、多くの人がその存在を知らない、もしくは知っていてもそれらの店舗を回る手間や時間をかけられない、というのが実情だと思います。

まとめ買いせざるを得ない環境と仕組み

仕事をしていたり忙しい人ほど、普段から買い物にかけられる時間は少なく、週末に1週間分をまとめ買いする人も多いのではないでしょうか。 また、ECサービスを利用する場合も、配送コストをカバーするための「最低注文金額」が設定されていることがほとんどです。 そのため、たとえ新鮮な状態で購入したとしても、結果的に家庭の冷蔵庫で鮮度を落としてしまうのが現実です。

3. サービスが提供する価値

クックパッドマートは、これらの課題を解決するため、以下の3つの軸で価値を実現しようとしています。

提供する3つの価値
クックパッドマートが提供する3つの価値

品質が良いこと

おいしい食材は食卓を豊かにし、毎日の楽しみを増やすことができるというのは、あまり疑いようがないのではないでしょうか。 クックパッドマートは、こだわりを持っておいしい食材を届けたいと考えている販売店や生産者の方にご協力をいただき、自信を持っておすすめできる食材だけを商品として扱います。 また、おいしいものをおいしいうちに食べることも大切です。出荷当日に配送し、数日で使いきれる量だけを注文できるサービスとすることで、それを実現しようとしています。

調達コストが低いこと

クックパッドマートはアプリで手軽に注文でき、1品でも送料は無料。受け取りは自宅ではなく、近所の配送拠点を選択する形をとります。 使いきれる量の食材を、いつもの帰り道で好きな時間に受け取れることで、食材の調達にかかるコスト(時間や手間)を減らします。

調理コストが低いこと

献立を考えながら買い物をするのは、時間もかかり、毎日のこととなればストレスを感じる人も多いです。クックパッドマートは、実際の調理例を見ながら食材を注文でき、献立決めと買い物が一度に完結する体験を提供します。 また、新鮮な食材はシンプルな調理だけで十分においしいので、良い食材が手に入れば結果的に調理は楽になるとも考えています。

4. 価値仮説に至るまでのプロセス

上記の「サービスが提供する価値」の仮説に至るまでに繰り返してきた様々な検証のプロセスをご紹介します。

スプレッドシートによる買物代行テスト

チーム発足当初に描いていたサービスイメージは、買い物の手間やストレスを減らすことを目的とした、シンプルな買物代行サービスでした。 そこで、普段の買い物を誰かに代行してもらえることにどれだけの価値を感じられるのか、またそれを実現するにはどのような課題があるのかを検証するため、まずは実際にチームメンバーで社員の普段の買い物を代行するテストを実施することから、プロジェクトを始めました。

最初のテストで用意したシステムはごくシンプルです。Googleスプレッドシートで作った発注書と、全ての注文をまとめた買い出しリストの2つで、実装期間は約3日ほど。注文したい人は、発注書のテンプレートをコピーし、欲しい食材の注文数を記入後、チームのメーリングリストに共有する、というものでした。

スプレッドシートの発注書と買い出しリスト
実際に使用したスプレッドシートの発注書と買い出しリスト

目的の価値検証ができる最も簡単な方法を選んだことで、チーム発足後わずか2週間で最初のテストを実施することができました。

結果どうだったか

初日だけで20名以上の社員から注文が入り、レジ袋20袋以上の量の食材をチームメンバー3人で買い出しに行きました。

このようなテストを1回実施してみただけでも、本当に山ほどの課題とサービス改善のヒントが得られました。その一部を以下に紹介します。(実際はこの形式のテストを数回実施しました)

  • 普段買っているスーパーの商品と同等のものを届けても、あまり有り難みを感じてもらえない
  • 1:1の買い物代行はスケールが難しい上に、コストが見合わなそう
  • 複数店舗での買い出しと、それらの店舗を巡る配送を分ける仕組みは良さそう
  • まとめて買い出した後の個別仕分けは恐ろしく大変で効率化が必須
  • 注文時に量感がわからず、持ち帰れないほどの量を頼んでしまう人がいる
  • 鮮魚はその日のオススメをおまかせで選び、食べ方まで提案したところ、とても評判が良かった
  • おいしい!と実感できた人から、自然発生的にレビューが届いた(チームのSlackチャンネルに写真と感想が寄せられた)

買い出しテスト後の仕分けの様子
最初の買い出し後の仕分けの様子(カオスです。。。)

このテストを経て、

  • おいしさに自信を持っておすすめできる商品だけを届ける
  • 1:1の買い物代行ではなく、1:Nのルート配送の仕組みを構築する
  • おいしい食べ方の提案まで含めた、買っただけで終わらない買い物体験を作る

といったサービスのコンセプトが明確になりました。

プロトタイプアプリによるテスト

上記のスプレッドシートによるテストは単発で行ったため、使う社員も少しイベントごとのような意識になってしまうという課題がありました。そこで、

  • 定常的に注文を受け付けられる仕組みの構築
  • 習慣的に使ってもらうための課題の洗い出し

を次の検証のステップとしました。

習慣的に利用してもらうために、スプレッドシートを手動で管理する形式を卒業し、簡単なWebアプリケーションを構築しました。この時も、機能は最低限に絞り、デザインも凝り過ぎずに、最短でテストを開始できる方法を意識して開発を進めました。アプリケーションの実装は約1週間ほど、コンテンツの準備などを含めるとリリースまで2週間ほどの期間でテストを開始しました。

Webアプリケーションの画面
実際のWebアプリケーションの画面

結果どうだったか

このタイミングから、社員はいつでもクックパッドマートで食材を注文できるようになり、毎週火・木の2回、注文された食材をオフィスに配送するテストが今現在も続けられています。

日常的に配送が行われることで、利用する社員も普段の買い物の手段の一つとしてクックパッドマートを使ってくれるようになりました。初回注文からのリピート率は約7割で、ほぼ毎回注文をしてくれるヘビーユーザーも出てきています。日常使いするほど、アンケートで厳しめのご意見をもらえることも多く、サービス改善に必要なフィードバックを常に得られる状況を作ることができました。

また、定常的に配送オペレーションを回すことで、配送の度にオペレーション上の新たな課題が見つかり、日々改善が進められています。社内テストを繰り返すことによって磨き上げが進んだオペレーションの例をいくつかご紹介します。

  • チームメンバー自ら買い出しに出向いていたものが、徐々に社外に委託することができるようになり、一部では配送員が直接店舗から商品を受け取る仕組みもできてきた
  • 商品に貼り付けるラベルに記載する情報の改善により、仕分けミスや受け取り間違いが起こりにくいシステム構築が進んだ
  • 当初ユーザーの不安要素に多く上がった保冷の問題も、配送時に常に温度計測を行い、検証を繰り返すことにより、食材に適した温度を維持しての配送が実現できてきた

チームMTGの様子
オペレーション改善を行うチームの配送振り返りMTGの様子

配送オペレーションのように複雑性の高いものは、トライを繰り返せる環境が常にあることが改善スピードに直結します。常時社員から注文が入る状態を作れていることで、配送の仕組みもどんどんブラッシュアップされ、サービス全体としての品質向上を進めることができています。

社外ユーザーテスト

上記の社内テストを日常的に実施するのと並行して、社外のターゲットユーザー層の方にご協力いただくユーザーテストも繰り返し実施してきました。 目的は、社員としてのバイアスが無い、より一般的なユーザーの率直な反応をみることです。

ユーザーテストは、毎回下記のような形式で実施しています。

  • ターゲットに近いユーザーのリクルーティング
  • 社内テストで運用中のプロトタイプアプリを使ってもらう
  • 参加できるチームメンバー全員、別室でユーザーテストの様子を観察する(参加できなかったメンバーは録画でキャッチアップする)
  • チーム全員で分析・振り返りをする

インタビュー観察部屋の様子
インタビュー観察部屋の様子

インタビュー後の分析の様子
インタビュー後の分析の様子

結果どうだったか

社内テストで使っているシステムと同じものを見せた場合でも、前提知識やバックグラウンドが異なる社外ユーザーからは、やはり社員とは異なる反応がたくさん得られました。その例をいくつかご紹介すると、

  • オフィス配送のイメージが持てない環境にいるユーザーも多い

    • 比較的近距離に住む社員が多いクックパッドに比べ、通勤時間が長く、持ち帰りがより現実的でない
    • 勤務先がオフィスビルとは限らず、小規模な店舗勤務など、配送拠点になるイメージが持てない
    • 会社の雰囲気的に買い物をしている姿を他の人に見られたくないという感覚の人も多い
  • 商品の品質(おいしさ)がアプリ上では判断できない

    • クックパッド社員は背景知識やクチコミにより初回注文のハードルがそこまで高くなかったが、一般ユーザーがサービスの品質を信頼して初めて注文するハードルはその何倍も高そう

このような結果はメンバー全員で受け止め、オフィスを配送先のメインとして考えていた方針を転換したり、おいしさを伝えるための方法をアプリ内に留まらずに広くアイデア出しをして検討したりと、プロジェクト全体の方向性修正に役立てています。

モバイルアプリへの移行

このように様々な検証を経て、徐々に社外リリースの方向性や価値仮説が定まってきたところで、これまでの知見を盛り込んだリリース版iOSアプリの開発を開始しました。

これまでのプロトタイプアプリのコードやデザインは捨てて、システム設計からすべてリニューアルする形式で開発を進めています。テストと改善をスピード感を持って繰り返してきたプロトタイプアプリは、どうしても不要なコードや現在の要件に合わない設計が残っているので、リリース要件が固まったこのタイミングで刷新する判断をしました。

今現在は社内テストも全てリリース版のiOSアプリに移行しており、社外リリースに向けた磨き込みを進めています。

まとめ

このように、ミニマムなテストで価値検証を繰り返すプロセスを愚直に続け、ようやく社外にリリースできる形のサービスとしてまとまってきたのが今です。

サービスの登場人物が多く(注文ユーザー・販売店・配送員・受け取り拠点)、食材というリアルなモノが介在する複雑性の高いサービスなので、実際にテストを回しながら品質を上げていくプロセスの有用性を強く実感しています。 またこのようなプロセスは、インターネット上にとどまらない買い物体験全体をデザインしている感覚が強く、サービス開発者としてとても刺激的で面白いです。

社外リリース後も、まだまだ価値検証と改善のプロセスは続きます。もしあなたの街にクックパッドマートの受け取り場所ができたら、ぜひ利用して、フィードバックをください。(東京都渋谷区・目黒区・世田谷区の一部エリアから順次リリース予定)

また、この記事を通して、クックパッドマートのサービス開発にご興味を持っていただけた方がいらっしゃいましたら、ぜひ一緒にサービスを作りましょう! エンジニア・デザイナーはもちろん、様々な職種で、一緒にサービスを作り上げる仲間を募集しています(募集要項: エンジニアオープンポジション)。ご応募おまちしております。

機械学習を用いてユーザーのご意見分類業務を効率化した話

こんにちは。研究開発部の @vanhuyz です。機械学習・自然言語処理を中心に研究開発しています。 今回は機械学習を活用してユーザーからのご意見を 81 のカテゴリーに自動分類し、ユーザーサポートスタッフによる手動分類の工数を半分にできた話を紹介したいと思います。

背景

クックパッドは現在約 5,500 万人の国内月間ユーザーがあり、日々ユーザーからたくさんのご意見やご要望を頂いています。創業してからユーザーの声を大事に扱う文化があり、どのご意見も一度目を通すようにユーザーサポートスタッフが努力しています。ご意見はスタッフによってさらに分類され、必要に応じてディレクターやエンジニアに振り分けられています。

例えば、こんな感じのご意見が来ています。「このレシピは簡単なので、子供とやってみました。楽しかったです」や「機種変更して、ログイン出来ません」や「もっと具体的な内容でも検索できるようにしてほしいです。例えば、冷蔵庫の余りもので作りたいときに何種類かの食材でも検索できると助かります。」などです。

現在、ご意見に対して 100 以上のカテゴリーが登録されています。例えば、ポジティブ・ネガティブ・検索関連・ログイン関連・つくれぽ・不具合などです。

f:id:vanhuyz:20180808154458p:plain

ユーザーサポートスタッフが社内システムを使い、ご意見を読んでカテゴリーリストから適切なカテゴリーを選んだ上で、システムが Slack の適切なチャネルに転送してくれます。これにより、関係するディレクター・エンジニアはご意見を読むことができ、すぐその場で議論します。 ただし、ご意見の数が多く、カテゴリーも多いため、毎日の分類作業が大変で、ボトルネックとなっていました。そこで、自動分類の仕組みを導入したいと考えました。

ご意見分類におけるチャレンジ

ご意見分類をパッと見ると簡単そうかもしれませんが、実はそうではありません。

  • まず、カテゴリー数が多いです。現在は 100 カテゴリー以上があり、今後もどんどん増えていきます (open set problem)。

  • 次に、1つのご意見が複数カテゴリーに所属することがあります (multi-label problem)。例えば、「つくれぽを投稿するのは楽しいし、もらえるのも嬉しいですね。」というご意見は「ポジティブ」と「つくれぽ」に入っています。

  • また、蓄積されたデータは不均衡 (imbalanced data) です。汎用的なカテゴリー(例えば、ポジティブなご意見・不具合報告)のご意見が非常に多いのに対し、最近リリースしたばかりのサービス(Amazon Echo Skill, storeTV など)のご意見はまだ多くはありません。また、クローズされたサービスも多数存在し、それらに関するカテゴリーはいらなくなります。

取り組みについて

以上の3つのチャレンジに向けて、どのように解決したのかを簡単に説明します。今回は Google の Rules of Machine Learning を参考にしながらプロジェクトを進めました。43 ルールもありますが、その中で以下の 3 つを気にして進めました。

1. Don’t be afraid to launch a product without machine learning.
(機械学習を使わないことを恐れるな!)

辞書ベースの手法を試しました。例えば、「探、調べ、検索、キーワード」という単語が含まれるご意見は「検索関連」と判断されます。この方法だと、かなり高い精度が得られますが、再現率が低いです。そして、100 以上のカテゴリーの一つずつに辞書を作るのがあまり現実的ではないので、他の方法を試すことになりました。

2. Choose machine learning over a complex heuristic.
(複雑なルールになってきたら機械学習を選択!)

multi-label problem 対応で、1つのカテゴリーに相応する1つのバイナリ分類器を作りました。例えば、「ポジティブ」カテゴリーは ポジティブ-or-not 分類器になります。最終的にデータが少なすぎるカテゴリーを除いて合計 81 の分類器を作成しました。将来もしカテゴリーが増えたら、そのカテゴリーに相応する分類器を作れば良いので、open set problem も対処できます。 imbalanced data problem (負例が正例より圧倒的に多い)に関しては、正例はそのままにし、負例は正例と同数になるように無作為に選びました。

f:id:vanhuyz:20180808154522p:plain

3. Keep the first model simple and get the infrastructure right.
(シンプルなモデルを保ち、インフラを適切に保つ)

今回はサポートベクターマシン (SVM) を採用し、scikit-learn で実装しました。F1 Score を 85% 以上になるまでチューニングしました。このぐらいの精度でも十分なので、早い段階でインフラを整備し、本番環境に導入しました。もちろん100% の性能を達成することは難しいため、完全に自動分類で手作業をなくすことではなく、分類業務へサポートという形で導入しています。

以下は導入後の管理画面のイメージで、結果的にご意見サジェストという形で導入しています。

f:id:vanhuyz:20180808154629p:plain

導入前はスタッフが 100 以上のカテゴリーの中から探さないといけないのに対し、導入後は数少ない「もしかしてカテゴリー」の中だけ選択すれば良いので、非常に楽になりました。(「もしかしてカテゴリー」になかった場合は、従来通り、全カテゴリーの中から探すことです。)実際に計測したら工数を半分まで減らすことができたという結果になりました。 また、分類するスタッフに聞いたところ、昔はメンバーによって判断のばらつきがありましたが、今は直感的に分類精度が上がったという話もありました。

また、学習モデルの精度を上げるために、再学習の仕組みを導入しました。選択されていない「もしかしてカテゴリー」は学習の負例となり、Rundeck/Jenkins で毎週定期的に training コンテナを起動し、モデルを再学習しています。新しいモデルができたら、inference コンテナがそのモデルに切り替えるように設定します。仕組みは以下のイメージです。

f:id:vanhuyz:20180808154645p:plain

これによって、状況が変わっても、モデルを劣化なく長期的に使うことができます。これからしばらく運用し、いつか完全に自動分類できるかもしれません。

最後に

今回は機械学習を用いてご意見分類業務を効率化した話を紹介しました。 クックパッドでは機械学習を活用したくさんの問題を解決しています。 このエントリを読んでご興味をお持ちいただけた方は、ぜひとも採用ページからご応募ください。

/* */ @import "/css/theme/report/report.css"; /* */ /* */ body{ background-image: url('https://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527163350.png'); background-repeat: repeat-x; background-color:transparent; background-attachment: scroll; background-position: left top;} /* */ body{ border-top: 3px solid orange; color: #3c3c3c; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; line-height: 1.8; font-size: 16px; } a { text-decoration: underline; color: #693e1c; } a:hover { color: #80400e; text-decoration: underline; } .entry-title a{ color: rgb(176, 108, 28); cursor: auto; display: inline; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; font-size: 30px; font-weight: bold; height: auto; line-height: 40.5px; text-decoration: underline solid rgb(176, 108, 28); width: auto; line-height: 1.35; } .date a { color: #9b8b6c; font-size: 14px; text-decoration: none; font-weight: normal; } .urllist-title-link { font-size: 14px; } /* Recent Entries */ .recent-entries a{ color: #693e1c; } .recent-entries a:visited { color: #4d2200; text-decoration: none; } .hatena-module-recent-entries li { padding-bottom: 8px; border-bottom-width: 0px; } /*Widget*/ .hatena-module-body li { list-style-type: circle; } .hatena-module-body a{ text-decoration: none; } .hatena-module-body a:hover{ text-decoration: underline; } /* Widget name */ .hatena-module-title, .hatena-module-title a{ color: #b06c1c; margin-top: 20px; margin-bottom: 7px; } /* work frame*/ #container { width: 970px; text-align: center; margin: 0 auto; background: transparent; padding: 0 30px; } #wrapper { float: left; overflow: hidden; width: 660px; } #box2 { width: 240px; float: right; font-size: 14px; word-wrap: break-word; } /*#blog-title-inner{*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-position: left 0px;*/ /*}*/ /*.header-image-only #blog-title-inner {*/ /*background-repeat: no-repeat;*/ /*position: relative;*/ /*height: 200px;*/ /*display: none;*/ /*}*/ /*#blog-title {*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-image: url('https://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527172848.png');*/ /*background-repeat: no-repeat;*/ /*background-position: left 0px;*/ /*}*/