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
andmohiko
September 10, 2019
Technology
0
120
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
720
文章のベクトル化
andmohiko
0
420
kobachi presentation
andmohiko
0
200
project yamcha phase 1
andmohiko
1
110
Other Decks in Technology
See All in Technology
GC25 Recap+: Advancing Go Garbage Collection with Green Tea
logica0419
1
410
PLaMo2シリーズのvLLM実装 / PFN LLM セミナー
pfn
PRO
2
990
OpenAI gpt-oss ファインチューニング入門
kmotohas
2
1k
AWSにおけるTrend Vision Oneの効果について
shimak
0
130
GopherCon Tour 概略
logica0419
2
190
コンテキストエンジニアリングとは? 考え方と応用方法
findy_eventslides
4
900
AI ReadyなData PlatformとしてのAutonomous Databaseアップデート
oracle4engineer
PRO
0
190
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
9k
Large Vision Language Modelを用いた 文書画像データ化作業自動化の検証、運用 / shibuya_AI
sansan_randd
0
110
神回のメカニズムと再現方法/Mechanisms and Playbook for Kamikai scrumat2025
moriyuya
4
550
LLMアプリケーション開発におけるセキュリティリスクと対策 / LLM Application Security
flatt_security
7
1.9k
Flaky Testへの現実解をGoのプロポーザルから考える | Go Conference 2025
upamune
1
420
Featured
See All Featured
Designing for Performance
lara
610
69k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Code Reviewing Like a Champion
maltzj
525
40k
Unsuck your backbone
ammeep
671
58k
RailsConf 2023
tenderlove
30
1.2k
The Language of Interfaces
destraynor
162
25k
A better future with KSS
kneath
239
17k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Typedesign – Prime Four
hannesfritz
42
2.8k
How to Ace a Technical Interview
jacobian
280
24k
Faster Mobile Websites
deanohume
310
31k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
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などの技術ももっと勉強したい • フィードのお掃除をしたので今度はパーソナライズやレコメンドにも挑戦し たい 機械学習を使っているプロダクトを開発している企業はぜひ雇ってください。特 に上記の点に挑戦できたり、数学への強みを活かせるとうれしいです。英語も 得意なので論文も読みます。
最後まで読んでいただきありがとうございました!☺ 今後やりたいこと