Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Predicting categories of news articles
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
andmohiko
September 10, 2019
Technology
0
130
Predicting categories of news articles
機械学習(自然言語処理)を使ってニュース記事のカテゴリー分類に挑戦した話。
andmohiko
September 10, 2019
Tweet
Share
More Decks by andmohiko
See All by andmohiko
Mantine + React Hook Form + Zod でフォームをつくる
andmohiko
0
740
文章のベクトル化
andmohiko
0
440
kobachi presentation
andmohiko
0
210
project yamcha phase 1
andmohiko
1
120
Other Decks in Technology
See All in Technology
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
1
170
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
380
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
2k
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
210
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
610
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
240
量子クラウドサービスの裏側 〜Deep Dive into OQTOPUS〜
oqtopus
0
150
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.5k
AIエージェントに必要なのはデータではなく文脈だった/ai-agent-context-graph-mybest
jonnojun
1
240
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
190
ランサムウェア対策としてのpnpm導入のススメ
ishikawa_satoru
0
220
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.6k
Featured
See All Featured
How to build a perfect <img>
jonoalderson
1
4.9k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
99
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
460
Game over? The fight for quality and originality in the time of robots
wayneb77
1
120
Technical Leadership for Architectural Decision Making
baasie
2
250
My Coaching Mixtape
mlcsv
0
49
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
110
Rails Girls Zürich Keynote
gr2m
96
14k
Color Theory Basics | Prateek | Gurzu
gurzu
0
200
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Transcript
ニュース記事の カテゴリー分類 JX通信社 機械学習エンジニアインターン 伊藤智彦
ニュースアプリを作っているベンチャー企業でインターンしています。 今回はそのニュースアプリ内で機械学習を使っている機能の改修をしました。 実際にプロダクトで使われているので具体的な数字や、非公開な部分はふわっ と書いています。数式もなるべく避けているので人事のみなさんもぜひ読んでく ださい。 読んでみて良いなと思ったらスカウトください。 カジュアル面談したいです。あとご飯食べたいです。 よろしくお願いします 概要
• 目的 • 手法 • 学習結果と分析 • 原因と解決策 • 最終的な結果
• さいごに - 今後やりたいこと お品書き
目的
様々なメディアが毎日ネットに記事を投稿し、 ニュースアプリはそれらを適切なカテゴリーに自動で分類している。 既に動いてるモデルはニュース記事のタイトルからニュースのカテゴリーを分類 しているが、精度が低いためこれを改善したい。 つまり短文(30字前後)の多クラス分類問題を機械学習(自然言語処理)を使って 解きたい。 UX的には見ているタブとは関係のないジャンルの記事が流れてくることが特に 良くないので、今回はprecisionを重視していきたい。 目的
手法
既存のモデル • BoWに変換し、アルゴリズムにはNaive Bayesを採用している。 BoW: 学習データに出現する全単語にIDを振り、文章をどの単語が何回出現し たか(単語1が2回, 単語2が1回...という形)によって表現する手法 Naive Bayes:
ベイズの定理を元にしたアルゴリズム。出現する単語の組み合わ せによって確率を計算する。式を見たら挙動がわかるとてもシンプルな手法。以 降NBと表記する。 手法
NBが良さそうだが、結果を比較するために次の3つの手法を試した。 • NB • Random Forest • LSTM(ディープラーニング) 手法
学習結果と分析
Naive Bayes → 学習も早く、精度もそこそこ出る 特定のカテゴリーの精度がとても低い Random Forest → 全体的な精度がNBより低い
LSTM → 短文は文脈依存が薄いため今回は向いていなさそう 最初の結果
学習結果を分析すると特定のカテゴリーに弱い。 具体的には • 芸能ニュースやスポーツニュースの精度(F-measure)は高い • グルメの精度だけやたら低い • 政治と経済と国際ニュースが混ざり合う 結果の分析
原因と解決策
1. グルメの精度が低い問題 学習データの偏りからスムージングが悪影響を及ぼしている。 → 学習データを増やしつつ、スムージングの影響を小さくしたい。 2. 政治と経済と国際ニュースが混ざり合う問題 混ざり合ってる記事を見てみると「国際的な経済ニュース」など、実際に人 間が読んでもどのカテゴリーに分類すべきかわからない。 →
ユーザーからすると経済タブと国際タブのどちらにいても違和感はない ため、この問題は気にしなくても良い。 原因の分析
sklearnの内部のプログラムとNBの数式を行き来しながら分析しました。 簡単に言うと • スムージングが大きすぎるとそのカテゴリーの学習データ内に無い単語ほ どそのカテゴリーへの尤度が高くなる • 逆に小さすぎるとそのカテゴリーの学習データ内に無い単語が1つでも出 現すると一気に尤度が下がる 詳しい解説はqiitaに書きました。なるべく数式を出さないようにがんばったらわ かりにくくなりました→
https://qiita.com/andmohiko/items/7dcb8a4882835a0b0001 より深い原因の分析(数学の話)
1. まずは学習データの偏りが無くなるように少ないカテゴリーは増やし、多い カテゴリーは削る。 2. スムージングが大きすぎても小さすぎても予測結果が暴れ出すのでちょう ど良い値になるようにチューニングする。 3. 弱いカテゴリーには専用のモデルを作り、複数のモデルの予測結果の投 票によって最終的な予測結果を出力する。投票の重み付けもチューニング する。
解決策
最終的な結果
既存のモデルよりも十分に予測精度が改善(10%くらい改善)された。 プロダクトに投入する前に、最後のステップとして • あまりにも予測精度が低い記事はそもそも流さないことでprecisionをさらに 上げる • 危うい記事を削った結果、アプリ全体の記事の流量が減りすぎないかを検 証する PMからGoサインが出たので作成したモデルをFlaskを使ってAPI化し、Docker化 したものをAWSにデプロイしました。
最終的な結果
さいごに
• 初めて自分が作ったモデルがデプロイされてエモかった。 • 機械学習のモデル作成からプロダクトへの導入までの流れを学べて良 かった。 • 機械学習プロジェクトの難しさ、特に結果を確証できない・見通しが立てに くいことを身をもって体験した(最初の予定より大幅に時間がかかってしまっ た)。 •
数式とコードの行き来をできて良かった。 • 自分は数学的な原因を探っている時間が楽しいことがわかった。 学びと感想
• 自然言語処理が楽しいので引き続きやっていきたい • FlaskやDockerなどの技術ももっと勉強したい • フィードのお掃除をしたので今度はパーソナライズやレコメンドにも挑戦し たい 機械学習を使っているプロダクトを開発している企業はぜひ雇ってください。特 に上記の点に挑戦できたり、数学への強みを活かせるとうれしいです。英語も 得意なので論文も読みます。
最後まで読んでいただきありがとうございました!☺ 今後やりたいこと