テキスト分析の研究・分析の知見をB2C向けサービスのアルゴリズム開発に活かす
データサイエンティストとしては、ここまで一貫してテキスト分析に関する研究・分析を中心にキャリアを積んできました。大学院で自然言語処理を学んだあと、新卒でNTTデータに入社して、研究開発部門で情報検索やテキストマイニングなどテキスト分析関連の研究開発を長くやっていたんです。
その後、友人と2人で3年間スタートアップの立ち上げをチャレンジした後、2014年にユーザーベースに入社しました。ユーザーベースでは最初の2年半をSPEEDA事業部で、次にFORCAS事業部に移って執行役員Chief AI Officerを務めたあと、現在はNewsPicksのアルゴリズムチームに参画しています。
私は以前からSNSなどソーシャルなサービスに興味があって、B2CのサービスであるNewsPicks事業に携わってみたいと考えていました。数年前、社内で行われた新規事業開発のコンテストで自分たちのチームが優勝し、「マイニュース」の朝刊・夕刊機能のアルゴリズムを開発したこともあります。そうした背景もあって、1年前から実際にニュース記事の推薦アルゴリズムの開発に携わるようになりました。
大きな決め手となったのは、ユーザベースの面接で出会った人たちの印象でした。ユーザベースの共同創業者である稲垣さん(稲垣 裕介)や梅田さん(梅田 優祐)の人柄に惹かれ、彼らと一緒に働きたいと思ったんです。
もう1つ、技術的な観点からの興味もありました。ユーザベースは経済ニュースをはじめ、企業の特色や説明文、有価証券報告書など、硬めの表現が用いられるテキストデータを保有しているので、表記揺れや口語表現の解析が必要となるTwitterや口コミサイトのようなテキストと比較して、意味解析や情報抽出といった自分が取り組みたい分析に集中できると感じたんです。
また、私が転職しようとしていた当時は、データサイエンティストの転職受け入れ先はソーシャルゲームのログデータの解析職が主流でしたが、自然言語処理を専門としていた私としては、ユーザベースであれば自分の経験を活かせるなと思いました。
推薦アルゴリズムを最適化し、ユーザーにとって「価値ある情報」を届ける仕事
ひと言でいうと、 NewsPicks に関するアルゴリズム開発全般で、5~6名のチームで開発を進めています。NewsPicksでは、アプリを立ち上げたときニュース記事やコメントをどういう順番で表示するか、また検索結果をどんな順番で表示するかなど、ユーザーに最適な情報を提供するためのパーソナライズが求められるシーンが多くあります。
半年ほど前、NewsPicksではアプリを大きくリニューアルしました。たくさんあったタブを1つにまとめ、記事がワンフィードで表示されるようになったため、記事の表示順が極めて重要になりました。
ひとくくりに「経済情報」といっても、記事のジャンルは細かく分かれています。ユーザー1人ひとりの興味に沿って、その人にとってより価値の高い記事が上位に表示されるように最適化することが大切なんです。
アルゴリズム開発は、今あるデータを分析・観察するところから始まります。ユーザーが記事をタップしたり、ピックやコメントをしたり、コメントにいいねをしたり。そういったデータを分析して、推薦アルゴリズムの精度を向上するためにはどういうアルゴリズムにすればいいかを検討します。
そこで検討、実装されたアルゴリズムは、本番の環境にリリースする前に必ずテストをします。例えばA/Bテストとして、テストしたい機能を開放したユーザー群と、開放していないユーザー群とに分け、両者を比較することで実際にタップ率が上がったかどうかを測定します。こうしたテストを経て、実際に効果がありそうだと判断されたら、全ユーザーにそのアルゴリズムを適用するという流れです。
もちろんです。NewsPicksではAWSを使用していますが、クラウド関連で不明な点があれば詳しいメンバーがいるチームと連携しますし、 スマホアプリの画面に記事やコメントをどういう順番でどのように表示するか? というときには、デザイナーやフロントの開発をしているエンジニアとやり取りすることもあります。
ビジネスサイドとの連携も大切です。アルゴリズムチームが特に重視しているのが、編成チームとコミュニティチームとの連携です。
編成チームでは、フィードの上位に表示する記事や、「重要ニュース」という項目に掲載する記事を選んでいます。どんな記事を重要な記事として上位に掲載したいか、ユーザーに読んで欲しいのはどの記事なのか、編成チームとやり取りして記事の表示順を検討していきます。
コミュニティチームは、NewsPicksのコミュニティを盛り上げるための企画などに取り組んでいます。NewsPicksがほかのニュースメディアと異なるのは、SNSなどソーシャルな要素を持っているところです。コミュニティチームとはコメントの表示順位をどうするかなど議論し、アルゴリズムを開発しています。
私は主に、開発の上流工程の部分を担当しています。具体的にいうと、まずどんな記事がタップされ、ピックやコメントがされているのかを分析します。そこからアルゴリズムの改善案を考え、それを実装して精度評価の実験をし、アルゴリズムを決定するところまでをやるのが私の役割ですね。
その後、他のメンバーが本番のシステムにコードを実装してA/Bテストを行い、リリースにつなげていきます。
リアルなユーザー行動データと向き合い、ゼロべースで思考する
大きく2つあります。1つ目は、ユーザーの行動データ、アクションの種類が豊富な点です。例えば記事ひとつに対するユーザーの行為には、「記事をタップして読む」「記事をピックする」「記事に対してコメントする」などが挙げられます。それに加えて、「コメントに対していいねする」「ユーザーをフォローする」ということもできます。
記事とユーザーの間のアクション、ユーザー同士でのアクションなど、さまざまな種類のアクションがある中で、そのデータを使ってより価値のある記事を最適化して届けるために、推薦アルゴリズムをブラッシュアップしていくのが、ものすごくおもしろいですね。
2つ目は、ソーシャルなデータの扱い方です。NewsPicksでは誰かのコメントに「いいね」をしたり、他のユーザーをフォローしたりといったソーシャルな側面を考慮しながら推薦アルゴリズムを検討する必要があります。
推薦アルゴリズムを考えるだけなら、世の中にある論文を参考にすることができます。しかし、そこにソーシャルな要素を取り入れたものについては、あまり論文がありません。ソーシャルなデータをもとに、どういうアルゴリズムにすればいいかは、論文だけでなく自分でデータを眺めてゼロベースで考えることが必要なんです。
簡単にはいきませんが、他のさまざまな種類のデータをかけ合わせて工夫することで、精度をより向上させることができるおもしろさがありますね。
私が一番大事にしているポイントは、ユーザーの気持ちになることです。ユーザーがどう思いながら行動しているのか、深く洞察することが重要だと考えています。これまでユーザベースではSPEEDA、FORCASの事業に携わってきましたが、それらはB2B向けのサービスで、ソーシャルな側面は強くありません。一方、B2C向けでソーシャルなサービスであるNewsPicksは、ユーザー視点で捉えることがより重要です。
ユーザーはどんなときに記事をタップするのか、どんな記事ならコメントを書きたくなるのか、どんなコメントに「いいね」をしたくなるのか。自分でも実際にアプリを使用しながら考えるんです。「ここに表示されているこの記事は、もっと目立つところに表示させたほうがいいのではないか」といったUI/UXの視点からアルゴリズムを深く考えていくことが大切だと思っています。
2〜3週間前に、ビジネスサイド、アルゴリズムチームを含む開発サイド各々が集い、ディスカッションの機会を設けました。良いコメントとはどんなものか、どうすればそのコメントをサービスの価値向上につなげられるか、何時間にもわたって議論したんです。
NewsPicksは B2C のサービスということもあり、開発に携わる人の多くがUI/UXに興味を持って取り組んでいるので、こうした議論も活発に行われています。
1つ目の課題は、テストのサイクルの速度です。前述したように、アルゴリズムの改善案を全体にリリースする前には、A/Bテストをして効果を検証しています。アルゴリズムのコードを実装してテストをし、結果を分析するまでのサイクルを、なるべく早く回したいというのが課題です。2021年の第2四半期では、さまざまな仕組みやコードを整えることでスピードを上げることを、重点課題として取り組んでいます。
2つ目の課題は、オフライン評価の精度をオンライン評価の精度に近づけたいというものです。
上流でアルゴリズム開発する際は、これまでに蓄積しているユーザーの行動ログを使ってテストをします。A/Bテストのように実際のデータを使ったテストをオンライン評価、これまでに蓄積されたログを使ったテストをオフライン評価といいますが、オフライン評価の段階でオンライン評価に近い評価ができればと考えているんです。
例えば現状のNewsPicksのアルゴリズムは、ピック数が多い記事を優先して上位に上げる傾向があります。そうすると、タップされる記事も必然的にピック数が多いものになっていくんです。でもピック数が少なくても、ある人にとっては価値が高い、役に立つ記事だってありますよね。
パーソナライズの推薦アルゴリズムの精度を改善する中で、ピック数が少ない記事をタップしてくれるかどうかは、現状では実際のデータを使ったオンライン評価でなければ分かりにくいんです。
これをオフライン評価でもある程度評価できるようにするためには、今までの行動ログのうち、どのデータをどう加工すればいいか、データをどう絞り込めば本番に近い評価が得られるか、評価方法を変えてさまざまな検討を行っています。
NewsPicksの価値を最大化させるための次なるチャレンジ
大学院で自然言語処理や機械学習を学び、新卒でNewsPicksに入社して1〜2年経過したばかりの若いメンバーが多いですね。技術をどんどん吸収してスキルアップしていきますし、若さゆえの新しい視点に触れることも多く、私自身とても刺激を受けています。
仕事の経験が長くなればなるほど、取りかかる前から「これはうまくいかないんじゃないか」と躊躇してしまうことって増えますよね。若い人たちはやったことがないからこそ、チャレンジしようとするんです。ユーザベースには「迷ったら挑戦する道を選ぶ」というバリューがありますが、今のチームにはそうしたカルチャーがありますね。
一方で、シニアのメンバーが少ないので、今後はそういったメンバーを増やしたいと考えています。
現在は推薦アルゴリズムの精度向上に注力していますが、他にもやりたいことは山ほどあります。次に取り組みたいのは、コメントの推薦精度を上げることですね。アプリのフィードには、記事だけでなく、例えば「WEEKLY OCHIAI」のような動画の紹介やコメントも表示されます。でもコメントの推薦機能は、最初に実装したアルゴリズムの改善までは着手できていないんです。
NewsPicksは、経済ニュースにおける「発見」と「理解」の欲求を満たすサービスです。このうち「発見」の欲求は、「自分が興味あるニュースに出会いたい」というもの。「理解」の欲求は、「ニュースに対しての理解を深めたい」という欲求です。
ニュースに対する理解を深めるときにポイントとなるのが、ニュースに対するユーザーのコメントです。記事はもちろん大切ですが、コメントはNewsPicksならではの「命」のようなもの。個人的にはコメントこそNewsPicksの最大の価値だと思っています。ユーザーにとって役に立つコメントを届けていけるよう、コメントの推薦精度を上げていきたいというのが次の大きなチャレンジですね。
toC × ソーシャルのデータで、推薦アルゴリズムのスキルを深める
推薦アルゴリズムには、コンテンツベースや協調フィルタリングなど、さまざまな種類があります。NewsPicksには記事というコンテンツはもちろん、SNSの側面もあるので、推薦アルゴリズムに関する多様なスキルが得られるのではないでしょうか。
データサイエンティストの大きなキャリアとして、最近では機械学習エンジニアとデータエンジニア、2つの道が語られます。
機械学習エンジニアは、推薦アルゴリズムをはじめとする機械学習アルゴリズムの実装や、ブラッシュアップをするエンジニア。データエンジニアは、アルゴリズムの実装、A/Bテスト、ユーザー行動ログの分析などに必要な大規模データの処理基盤を、クラウドのプラットフォーム上に構築します。NewsPicksのアルゴリズムチームでは、この両方のスキルを向上させることができます。
NewsPicks自体はもう何年も前からあるサービスですが、推薦アルゴリズムの部分は先ほども言ったように、半年前にリリースされたばかりです。AWSの最新機能を使って実装されていますが、アーキテクチャを大きく変更するといったこともやりやすいんですね。そういう意味で、データエンジニアとしてキャリアを考えてる人にとっても、スキルアップしやすい環境なんだと思います。
2つあります。前述したように、NewsPicks にはさまざまな種類のデータがあるので、既存の論文を参考に実装してもスムーズにいかない場合が多いんです。そんなとき、自分の頭でゼロベースで考える力が必要になってきます。目の前にあるリアルなデータをもとにアルゴリズムを考えられる人。そんな人がこのチームのカルチャーにフィットするのではないかと思います。
もう1つは、ユーザー視点でものごとを考えられる力を持った人です。ビジネスサイドにはそうした視点を持つ人はたくさんいますが、サービス自体に興味を持ち、ユーザー目線で考えることがエンジニアにも求められます。
SNSの側面を持ったNewsPicksは、ユーザーが価値を生み出す希有なサービスです。今後もより多くのユーザーに使っていただけるサービスだと確信していますし、技術的にもさまざまなチャレンジをすることができます。そういったことに興味がある人と一緒に、サービスを作っていきたいですね。