Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
文章のベクトル化と 類似判定 JX通信社 機械学習エンジニアインターン @andmohiko
Slide 2
Slide 2 text
ニュースアプリを作っているベンチャー企業でインターン しています。 ニュースアプリでは、例えば速報で同じニュースについて 複数のメディアが記事を配信すると、 アプリの画面(右図)が同じ内容の記事で埋められてしま い、ユーザーの体験としてよろしくないという問題があり ます。 概要と背景
Slide 3
Slide 3 text
そこで、同じニュースについて書かれている記事を判定 し、重複している記事は自動で取り除きたいという課題が あります。 本スライドはこの課題を機械学習と自然言語処理によっ てどのように解決したかを説明します。 概要と背景
Slide 4
Slide 4 text
実際にプロダクトで使われているので具体的な数字や、非公開な部分はふわっ と書いています。数式もなるべく避けているので、エンジニアだけではなく人事 の方もぜひ読んでください。 読んでみて 良いな と思ったらぜひ面談してください。 一度カジュアルにお話ししたいです。 よろしくお願いします この資料について
Slide 5
Slide 5 text
● 概要と背景 ● 目的と課題のポイント ● 実験と手法の比較検討 ● 結果 ● さいごに - 今後やりたいこと お品書き
Slide 6
Slide 6 text
目的と課題
Slide 7
Slide 7 text
目的 目的 ● 同じニュースについて書かれた記事を判定するために、 機械学習(自然言語処理)で記事のタイトルをベクトルに変換することで、文 章の類似度を計算できるようにすること ● 単語をベクトル化する手法は多く研究されている(word2vec, fastText, ELMoなど)が、文章(特に短文)をベクトル化する定番の手法はまだないの で実験を通して見つける
Slide 8
Slide 8 text
「AKB問題」 ● 同じニュースについての記事でも、メディアによってタイトルに使われる単 語が違います。 ● 例えば「AKB」と「AKB48」、「オリンピック」と「五輪」などは同じ意味であるた め、単純に単語の一致率などでは乗り越えられないということがこの課題 のポイントです ● ちなみにAKB問題は勝手に名付けました。 課題のポイント
Slide 9
Slide 9 text
文章が「似ている」とは ● 文章が似ている、近い内容を表しているかは言ってしまえば主観である ● 正解データとなりうるデータセットもこれといってない ● そこで今回は定性評価を複数の人に見てもらうことで結果の比較をする 課題のポイント
Slide 10
Slide 10 text
実験と手法の比較検討
Slide 11
Slide 11 text
今回は以下の手法を比較しました。 - ワードカウント - doc2vec - トピックモデル(LDA) - LSTMの中間層を取り出す - 単語ベクトルとIDFを組み合わせる それぞれの手法についてと比較する上で重視したものを説明していきます。 様々な手法の比較検討
Slide 12
Slide 12 text
ワードカウント ● 文章に出現する単語を数える。どの単語が何回使われているかによって文章 を表現する ● 単純に単語の出現数を数えるBag of Wordsやそこに希少性を加味したTFIDF などがある ● 計算は速いが、スパースなベクトルになってしまうという欠点がある ● 当たり前だが、AKB問題を乗り越えられない ● 今回は上手くいかなかった 手法
Slide 13
Slide 13 text
doc2vec ● word2vecを拡張したもの ● 単語からその周辺の単語を予測することで学習する ● 定性評価をするとAKB問題を乗り越えられていない結果になった 手法
Slide 14
Slide 14 text
トピックモデル(LDA) ● 文書が複数の潜在的なトピックから確率的に生成されると仮定したモデル ● つまりどのトピック(テーマ)にはどんな単語がよく出現するかを計算すること で、その文書はどのトピックの要素が強いかで表現する ● 定性評価だとAKB問題は若干乗り越えられていた ● 悪くはないが良くもない 手法
Slide 15
Slide 15 text
LSTMの中間層を取り出す ● LSTMは文章生成によく使われるディープラーニングの手法 ● 生成する直前の中間層を取り出すことで、その文章をベクトルとして表現で きる ● 文脈の依存を考慮できるため長文では強力な手法 ● AKB問題は乗り越えられるはずだが、今回は短文(30字前後)のため、文脈 がなく逆に上手くいかなかった 手法
Slide 16
Slide 16 text
単語ベクトルとIDFを組み合わせる ● IDF(単語の希少性)を重みにして単語ベクトルを結合する(加重平均をとる) ● 文章内で特徴的な単語/重要な単語を拾いつつも、似た意味の単語は同じ ような単語ベクトルになるのでAKB問題を乗り越えられる ● 計算も早く、表現力もそれなりにある ● 定性評価の結果、今回はこの手法が一番効果があった 手法
Slide 17
Slide 17 text
結果
Slide 18
Slide 18 text
● 単語ベクトルとIDFを組み合わせた手法を使うことにしました ● 類似度はcos類似度で計算し、0~1の値で表現されます。 ● 定性評価の結果、 同じニュースだと0.8以上、 関連のあるテーマだと0.6前後、 全く関係のない記事は0.3くらいの類似度になった 結果
Slide 19
Slide 19 text
ここでのポイントは、 3つ目の例では、タイトルにノイズ(後半の文章)が含まれていても類似度が0.9近 くある。 4つ目の例では、「五輪」と「オリンピック」という別の言葉が使われていても類似 度が0.8以上ある 結果の一例
Slide 20
Slide 20 text
メンターからGoサインが出たので作成したモデルをFlaskでAPI化し、Dockerにす るところまで担当しました。 無事に社内ツールに導入されました。 その後
Slide 21
Slide 21 text
さいごに
Slide 22
Slide 22 text
● 自然言語処理が楽しいので引き続きやっていきたい ● FlaskやDockerなどの技術ももっと勉強したい ● 文章のベクトルをもとにレコメンドに挑戦したい 最後まで読んでいただきありがとうございました!☺ 今後やりたいこと