Nikkei Advent Calendar 2020の25日目の記事です。
こんな話もあるので、この記事は最後のおまけだと思っていただければ助かります。
日本におけるブログ形式のアドベントカレンダーはPerlコミュニティが発祥といわれており、2008年から始まった。本来のアドベントカレンダーは12月24日までだがブログ形式が25日までになっているのは、開始した @tokuhirom 氏のウッカリによるものとされている(要出典)
— 941 (@941) December 1, 2020
さて、筆者は2018年10月より米国にてビジネス開発(Business Development)という業務に関わっております。拠点はいわゆるシリコンバレーにありまして、米国および日本国外企業との連携、メディア関連の動向や技術的な調査を担当しております。米国に来る前はAPI開発や技術組織づくりなどをやっていました。
今回の話は、JournalismAIというメディア横断のプロジェクトに参加して、最終的にオープンソースのツールを公開したことについてです。2020年の6月から活動してましたが、このほど、プロジェクトが終了し、成果物を残すことができました。
12月8日には対外的な発表もありました。日経の米国オフィスにてインターンをしてくれているIssei Moriが発表しています。
今回のプロジェクトに使ったツールを以下で公開しております。
https://github.com/Nikkei/aijoproject
JournalismAIとは
JournalismAIは、イギリスのLSE(London School of Economics and Political Science)が事務局となり、世界のメディア企業に声をかけて実施されたプロジェクトです。人工知能(AI)をメディア企業でどうやって使っていくか、その事例やノウハウを集めたり、一緒に実験を行いました。Googleがメディア企業を支援する枠組み、Google News Initiativeもこのプロジェクトに関わっています。
主にはヨーロッパのメディア企業が参加しており、日本の人も知っていそうな企業だと、仏AFPや英ロイター、米ワシントン・ポストなどがあります。他にも香港やアルゼンチンのメディア、そして日本からは日経が参加しておりました。
JournalismAIにはチームが5つあり、それぞれ別のテーマがありました。日経はこのうちのTeam #1、「How might we leverage AI to understand, identify and mitigate newsroom biases」のチームに加わって活動しました。
このチームには、ノルウェーのSchibsted、アルゼンチンのLa Nacion、仏AFP、英ロイターなどの人が参加しています。
Newsroom biasとは
Newsroom biasは、直訳すると「編集局の偏り」ということになりますが、これは様々な角度で見ることができます。記事で取り上げるものと記事を取り上げる人の両方がありますし、バイアスの方向性もいくつかあります。例えば以下のようなものがあります。
取り上げるもののバイアスの例
- 記事に掲載する写真
- 記事の本文中で取り上げられた人
- 記事の本文中で取り上げたコメントの発言者
ニュースルームの中のバイアスの例
- 記者や編集者、管理職の多様性
バイアスの方向性の例
- ジェンダー(男女)
- 直近では、単純な男女以外にも配慮は必要になってきています
- 年齢
- 人種
取り上げる写真xジェンダーバイアス
今回、Team #1で取り組んだのはこうしたbiasに関わるものの中でも記事中で取り上げる写真とその写真中の男女比についてです。
参加しているメディアは言語的にバラバラ(英語、スペイン語、ドイツ語、日本語など)で、記事本文を自然言語処理する共通のツールを作るのは困難なところがありました。一方で画像については言語に依存しないため、共通で使うツールにしやすいところがありました。
どのように判定するか
技術的にどうやったかというと、GitHubで公開されているInsightFaceという画像系のライブラリを使っています。
https://github.com/deepinsight/insightface
顔の記事画像からの抽出
InsightFaceに含まれているRetinaFaceという顔を抽出するライブラリの精度は高く、ときどき変な抽出はありましたが、人手でレビューした際にそれほど誤検出のエラーはありませんでした。人間の顔でないものを人間の顔として検出してしまったのは全体の1%未満でした。

RetinaFaceのページより(https://github.com/deepinsight/insightface/tree/master/detection/RetinaFace)
抽出された顔画像から男女の判定
さらに、その後、このInsightFaceの中にある顔画像から男女判定をするGender-Ageを使っています。こちらはモデルのバリデーションデータセットでは96%の精度で、十分に大きくてピントが合っている画像であれば、実際のニュース記事の画像で90%前後の精度で男女判定できていました。
90%の比率は良いとも言えますし、悪いとも言えます。傾向としては、女性が男性とされるケースが比較的多くて、なかでも子供や老年の女性が誤判定されることが多いようでした。
下のチャートは人手のレビューで修正された画像のうちのエラーパターンの割合を表しています。53%は女性が間違って男性として判定されていたものです。

今回開発したツールでは、男性らしいか、女性らしいかを-2.0~+2.0の範囲で値を返してくれてその結果から男女を判定するようになっています。下のグラフは、予測通りあっていたか(紫)、間違っていた(黄色)をその値に基づいてマッピングしたチャートですが、黄色はAI的に自信がない中心部(値が0に近いところ)に集中してます。

比率の計算方法

比率の計算は画像中の男女比を合計した上で画像数で割っています。また画像については、記事の1枚目(もしくはソーシャルメディアなどでサムネイル画像として使われるもの)を使いました。これはこのプロジェクトの先行研究であるPew Researchセンターがやっていた集計方法を参考にしました。
https://www.journalism.org/2019/05/23/men-appear-twice-as-often-as-women-in-news-photos-on-facebook/
参加した8メディアで2020年11月9日から16日までの1週間に掲載された記事で比較しましたが、最大で女性の比率が36%のところもあれば、最小で18%のところもありました。
ジャンルによる差異
ニュース写真の男女比率は18%から36%までとメディアによって差がありましたが、記事のジャンル別に見てみると、そこでもある程度の差が見受けられます。

このチャートは、日経電子版の記事の2011年から2020年までの11月の男女比率を今回のツールを用いて計算した結果を使っていますが、くらしジャンルについては比較的女性比率が高く(色が濃い)なっています。
カナダのSimon Fraser Universityという大学でGender Gap Trackerというプロジェクトをやっていて、こちらは記事本文中のテキストデータから、引用されている人物の名称を取り出し、名称ベースで男女を判定して、そこから男女比をさぐるということをしています。
https://gendergaptracker.research.sfu.ca/apps/topsources
下は12月7日時点のデータを上記サイトから引用したもので、カナダのニュースサイトの比較データですが、政治は男性より、くらしは女性よりと似たような傾向は見て取れます。

ツールの実行環境
今回のプロジェクトは、基本的にPython+Jupyter notebookベースで作っていました。実行環境としては、Google ColabというGoogleがホストしてデータをGoogle Drive上に保存可能なプラットフォームを使いました。
月間の記事のデータを処理しようとすると、全部で7000枚以上あり、合計4時間以上かかる場合もありました。
どの処理が時間がかかるのかを、pythonのline_profilerというプロファイリングツールを使って計測してみたところ画像から人の顔を検出するRetinaFaceが一番重い処理であることがわかりました。実行環境にもよりますがだいたい全体の処理時間の50%〜75%ぐらいをRetinaFaceが使っていました。
そこで、Jupyterを実行する環境ごとの時間差を見てみました。ローカルはMacbook Pro15インチモデルです。下の通り、Google Colabのほうがローカルよりも断然速く、当然のことながら月額9.99ドルを払うGoogle Colab Proはさらに速く、ローカルの倍以上の速度で処理できていました。
環境 | RetinaFaceの処理時間(秒)/100回実行あたりの平均 |
---|---|
ローカル(2.9 Ghz Quad-Core Intel Core i7, 16 GB 2133 MHz LPDDR3) 試行1回目 | 2.82 |
ローカル(2.9 Ghz Quad-Core Intel Core i7, 16 GB 2133 MHz LPDDR3) 試行2回目 | 2.57 |
Google Colab 試行1回目 | 1.41 |
Google Colab 試行2回目 | 1.73 |
Google Colab Pro 試行1回目 | 1.35 |
Google Colab Pro 試行2回目 | 1.17 |
今回はまだ実験的な意味合いも強かったので、CSVで用意したデータを処理してCSVに書き出すような流れになっていますが、もっと処理速度を追求する場合は、データを細切れにしてサーバーレス的な環境に投げ込んで、BigQuery等に書き込んであとで集計するようにするパターンになるのかと思います。
終わりに
日本経済新聞社のエンジニア職は、電子版や法人向けのサービス・プロダクト開発、データ分析、AI・アルゴリズム開発、海外企業との連携など多岐に渡ります。また、メディア企業だからこそ豊富に持つコンテンツデータ、他社とのネットワークなど、多くの機会に恵まれています。
今回の一連の記事を読まれて関心持たれた方は、ぜひキャリア採用や新卒採用、インターンなどにご応募いただければと思います。カジュアル面談も実施しております。