はてなブックマークのトピックページの裏側 in yapc::asia tokyo 2015
Post on 06-Jan-2017
10.800 Views
Preview:
TRANSCRIPT
自己紹介
id:skozawa / @5kozawa
2007-2012大学院で自然言語処理の研究に従事
2012 株式会社はてな入社
アプリケーションエンジニア・ブックマークチーム・アドテクチーム
2
トピックページ (http://b.hatena.ne.jp/topiclist)
関連性の高い話題の記事をまとめたページ
4
検索技術と自然言語処理技術を駆使して話題のトピックをひとまとめ ~はてなブックマークのトピックページの作り方http://codezine.jp/article/detail/8767
開発の目的/経緯
● インターネットで盛り上がってる話題を知りたい● ホットエントリで同じ話題のエントリが重複するのを
避けたい
5
この機能は、これまでも多くのエンジニアが挑戦しながら、さまざまな要因により実現できていませんでした。
ref. http://bookmark.hatenastaff.com/entry/2015/02/05/190331
トピックページ生成チャレンジの歴史
2009 タグを利用したクラスタリング2009 キーワードを利用したクラスタリング2010 手動でのトピック生成2011 キーワードTF-IDFを利用したクラスタリング
タイトル生成??
2012.4 skozawa入社2014.10 ブックマークチームjoin
2015 今回
7
アプローチ
● トピック生成○ Elasticsearchを利用
■ 出現割合を利用したトピックキーワード生成■ キーワードに関連する記事の取得
● トピックタイトル生成○ 自然言語処理の要約技術を利用したタイトル生成
8
トピック生成の流れ
1. トピックキーワードを生成Elasticsearch Significant Terms Aggregation
2. トピックキーワードに関連する記事の収集Elasticsearch Function Score Query
11
官邸、首相、ドローン、落下、カメラ
● 首相官邸にドローン落下 けが人はなし :日本経済新聞
● 首相官邸の屋上にドローン落下、微量の放射線を検出| Reuters
Significant Terms Aggregation
重要語を取得できる機能
トピックキーワードの生成に利用期間を区切って記事のタイトルや本文を対象に実行話題のキーワードが取得できる
スコア計算手法JLH score, mutual information, Chi square,google normalized distance, Percentage
12
https://www.elastic.co/guide/en/elasticsearch/reference/1.6/search-aggregations-bucket-significantterms-aggregation.html
Significant Terms Aggregation
"aggregations": { "sample": { "buckets": [ { "key": "シャリル", "doc_count": 55, "score": 2.502, "bg_count": 400 }, { "key": "スイスフラン", "doc_count": 57, "score": 1.802, "bg_count": 596 }, { "key": "ようじ", "doc_count": 48, "score": 1.511, "bg_count": 504 }, ... ]} }
{
“aggs”: {
“sample”: {
“significant_terms” : {
“field”: “title”,
“size”: 5
}
}
}
}
Request Response
key: キーワードdoc_count: 指定範囲でのキーワードの頻度score: キーワードのスコアbg_count: 文書全体でのキーワードの頻度
13
JLH
全体と指定範囲の出現割合を利用
JLH = 絶対割合変化 × 相対割合変化
絶対割合変化 = 指定範囲での出現割合 - 全体での出現割合 相対割合変化 = 指定範囲での出現割合 / 全体での出現割合
14
指定範囲で頻出する単語のスコアが高くなる
{
“query”: {
“filtered”: { “filter”: { “bool”: { “must”: [
{ “range”: { “created”: {
“from”: “2015-01-13T00:00:00+09:00”,
“to”: “2015-01-20T00:00:00+09:00”
} } }
] } } }
},
“aggs”: { “sample”: {
“significant_terms” : { “field”: “title”, “size”: 5, “jlh”: {} },
“aggs”: { “sample2”: {
“significant_terms”: { “field”: “title”, “size”: 5, “jlh”: {} }
} }
} }
}
Request
2015年1月13日 ~ 2015年1月20日
significant_termsを2層で利用
15
"aggregations": { "sample": { "buckets": [ { "key": "シャルリ", "score": 2.502, "sample2": { "buckets": [ { "key": "シャルリ", "score": 129926.04 }, { "key": "エブド", "score": 99737.62 }, { "key": "赦す", "score": 5522.22 }, { "key": "ムハンマド", "score": 4729.32 }, { "key": "風刺", "score": 4172.57 } ] } }, …, { "key": "スイスフラン", "score": 1.802, "sample2": { "buckets": [ { "key": "スイスフラン", "score": 89385.22 }, { "key": "急騰", "score": 1992.90 }, { "key": "上限", "score": 1391.56 }, { "key": "損失", "score": 1118.69 }, { "key": "暴騰", "score": 766.13 } ] } }, …, { "key": "ようじ", "score": 1.511, "sample2": { "buckets": [ { "key": "ようじ", "score": 80424.75 }, { "key": "つま", "score": 26207.62 }, { "key": "混入", "score": 4192.10 }, { "key": "スナック菓子", "score": 2759.62 }, { "key": "手配", "score": 2128.30 } ] } }] } }
Response
16
"aggregations": { "sample": { "buckets": [ { "key": "シャルリ", "score": 2.502, "sample2": { "buckets": [ { "key": "シャルリ", "score": 129926.04 }, { "key": "エブド", "score": 99737.62 }, { "key": "赦す", "score": 5522.22 }, { "key": "ムハンマド", "score": 4729.32 }, { "key": "風刺", "score": 4172.57 } ] } }, …, { "key": "スイスフラン", "score": 1.802, "sample2": { "buckets": [ { "key": "スイスフラン", "score": 89385.22 }, { "key": "急騰", "score": 1992.90 }, { "key": "上限", "score": 1391.56 }, { "key": "損失", "score": 1118.69 }, { "key": "暴騰", "score": 766.13 } ] } }, …, { "key": "ようじ", "score": 1.511, "sample2": { "buckets": [ { "key": "ようじ", "score": 80424.75 }, { "key": "つま", "score": 26207.62 }, { "key": "混入", "score": 4192.10 }, { "key": "スナック菓子", "score": 2759.62 }, { "key": "手配", "score": 2128.30 } ] } }] } }
Responseトピックキーワード
17
シャルリ、エブド、赦す、ムハンマド、風刺
スイスフラン、急騰、上限、損失、暴騰
ようじ、つま、混入、スナック菓子、手配
トピックキーワードに関する記事の取得
生成されたトピックの単語が含まれていればよい?
トピックと関連の強い単語が含まれることが重要キーワードのスコアを利用
18
シャルリ、エブド、赦す、ムハンマド、風刺
"buckets": [ { "key": "シャルリ", "score": 129926.04 }, { "key": "エブド", "score": 99737.62 }, { "key": "赦す", "score": 5522.22 }, { "key": "ムハンマド", "score": 4729.32 }, { "key": "風刺", "score": 4172.57 }]
> 0.8記事に含まれるトピックキーワードのスコアの和
トピックキーワードのスコアの和
トピックに属するエントリ取得
Elasticsearch function score query を利用キーワードのスコアの和でソート
19
“function_score”: { “functions”: [ { “script_score”: {
“params”: {
“field”: “title”,
“words”: [ "シャルリ", "エブド", "赦す", "ムハンマド", "風刺" ],
“scores”: [ 129926.04, 99737.62, 5522.23, 4729.32, 4172.57 ]
},
“lang”: “groovy”,
“script”: “def score=0;for(i in 0..4) { if (_index[field][words[i]].tf() > 0) { score += scores[i]}; scores;”
} } ] } トピックキーワードのスコアの和を計算
タイトル生成とは
自然言語処理におけるタイトル生成要約技術の一種
実際には人間でも、複数記事のタイトル、及び、本文からうまくタイトルを作ることは難しい
要約に重要な部分とは?各記事のタイトルと本文1文目
22
トピックタイトルの生成
23
● スイス中銀、スイスフラン高抑制の無制限介入終了 :主要金融ニュース :マーケッ
ト :日本経済新聞
● スイスフラン、対ユーロで一時30%上昇 フラン上限廃止で | マネーニュース | 株式
市場 | Reuters● スイスフラン突然の大暴騰!取引が成立しない状況に - Togetterまとめ
● スイスフラン騒動で大儲けした人と大損した人の阿鼻叫喚の叫びまとめ #fx - NAVER まとめ
● スイス中銀がフラン上限撤廃・中銀預金金利一段のマイナス:識者はこうみる | Reuters
● スイスフラン上限撤廃、通貨急騰で波紋 時計大手首脳が批判 :日本経済新聞
● スイスフランショックで大儲けした人と大損した人。ファイナンススタジアムより抜粋。 - マネー報道 MoneyReport
● スイスフラン急騰、FX業者の経営に打撃 :日本経済新聞
● 投資家に巨額の損失 スイスフラン急騰の打撃 日本のFX業者らにも (産経新聞) - Yahoo!ニュース
● スイスフランの介入停止問題に関するまとめ - 株式、FXのまとめ解説ブログ
トピックタイトルの生成
24
● スイス中銀、スイスフラン高抑制の無制限介入終了 :主要金融ニュース :マーケッ
ト :日本経済新聞
● スイスフラン、対ユーロで一時30%上昇 フラン上限廃止で | マネーニュース | 株式
市場 | Reuters● スイスフラン突然の大暴騰!取引が成立しない状況に - Togetterまとめ
● スイスフラン騒動で大儲けした人と大損した人の阿鼻叫喚の叫びまとめ #fx - NAVER まとめ
● スイス中銀がフラン上限撤廃・中銀預金金利一段のマイナス:識者はこうみる | Reuters
● スイスフラン上限撤廃、通貨急騰で波紋 時計大手首脳が批判 :日本経済新聞
● スイスフランショックで大儲けした人と大損した人。ファイナンススタジアムより抜粋。 - マネー報道 MoneyReport
● スイスフラン急騰、FX業者の経営に打撃 :日本経済新聞
● 投資家に巨額の損失 スイスフラン急騰の打撃 日本のFX業者らにも (産経新聞) - Yahoo!ニュース
● スイスフランの介入停止問題に関するまとめ - 株式、FXのまとめ解説ブログ
トピックタイトルどうやって作る?
前提・ トピックに含まれる記事は同じ話題・ 各記事のタイトルはある程度しっかりしている・ いずれかの記事を使うとうまくいく可能性が高い
26
● スイス中銀、スイスフラン高抑制の無制限介入終了 :主要金融ニュース :マーケッ
ト :日本経済新聞
● スイスフラン突然の大暴騰!取引が成立しない状況に - Togetterまとめ
● スイスフラン上限撤廃、通貨急騰で波紋 時計大手首脳が批判 :日本経済新聞
● スイス中銀がフラン上限撤廃・中銀預金金利一段のマイナス:識者はこうみる | Reuters
● スイスフラン急騰、FX業者の経営に打撃 :日本経済新聞
● スイスフランショックで大儲けした人と大損した人。ファイナンススタジアムより抜粋。 - マネー報道 MoneyReport
トピックタイトルどうやって作る?
前提・ トピックに含まれる記事は同じ話題・ 各記事のタイトルはある程度しっかりしている・ いずれかの記事を使うとうまくいく可能性が高い
27
● スイス中銀、スイスフラン高抑制の無制限介入終了 :主要金融ニュース :マーケッ
ト :日本経済新聞
● スイスフラン突然の大暴騰!取引が成立しない状況に - Togetterまとめ
● スイスフラン上限撤廃、通貨急騰で波紋 時計大手首脳が批判 :日本経済新聞
● スイス中銀がフラン上限撤廃・中銀預金金利一段のマイナス:識者はこうみる | Reuters
● スイスフラン急騰、FX業者の経営に打撃 :日本経済新聞
● スイスフランショックで大儲けした人と大損した人。ファイナンススタジアムより抜粋。 - マネー報道 MoneyReport
重要文(タイトル)を使えばよい
単語の順序を考えなくていい単文の要約タスクにできる
重要語抽出
タイトル生成に必要な単語を取得Elasticsearch Significant Terms Aggregationトピックに属するエントリのタイトルを対象
29
● スイス中銀、スイスフラン高抑制の無制限介入終了 :主要金融ニュース :マーケッ
ト :日本経済新聞
● スイスフラン突然の大暴騰!取引が成立しない状況に - Togetterまとめ
● スイスフラン上限撤廃、通貨急騰で波紋 時計大手首脳が批判 :日本経済新聞
● スイス中銀がフラン上限撤廃・中銀預金金利一段のマイナス:識者はこうみる | Reuters
● スイスフラン急騰、FX業者の経営に打撃 :日本経済新聞
● スイスフランショックで大儲けした人と大損した人。ファイナンススタジアムより抜粋。 - マネー報道 MoneyReport
スイスフラン、急騰、上限、撤廃
重要文抽出
重要語を利用して重要文を選択
● 各記事のタイトルのスコアを計算○ 含まれる重要語のスコアの合計
● スコアが最大の記事のタイトルを取得○ スコアが同じ場合は短い方
30
● スイスフラン突然の大暴騰!取引が成立しない状況に - Togetterまとめ
● スイスフラン上限撤廃、通貨急騰で波紋 時計大手首脳が批判 :日本経済新聞
● スイス中銀がフラン上限撤廃・中銀預金金利一段のマイナス:識者はこうみる | Reuters
文圧縮
取得したタイトルの必要な部分のみを取得
どうやって?
先頭の単語から末尾の単語まで?
意味的な保証がされにくい31
スイスフラン上限撤廃、通貨急騰で波紋 時計大手首脳が批
判 :日本経済新聞
スイスフラン上限撤廃、通貨急騰
スイスフラン上限撤廃、通貨急騰で波紋
係り受け関係に基づく文圧縮
係り受け解析を利用 (Cabocha)● 重要語を含む先頭文節から末尾の文節まで● 非文を避けるためヒューリスティクなルールを用意
文節末尾が「助詞-格助詞-一般」なら係り先を取得など
● 前処理が必要サイト名除去、「 」や「:」で強制的に文節を区切る
32
スイスフラン上限撤廃、 / 通貨急騰で / 波紋
時計大手首脳が / 批判 / :日本経済新聞
短いトピックタイトルの生成
トピックタイトルを短くしたい● アプリなどでは表示できる文字数に
制限がある● 全角10文字以下にしたい
生成の流れ● 重要語の数を減らしながら要約● 指定した文字数制限を満たせば終了● 条件を満たすタイトルがない場合は
文字数を増やして再実行
34
文字数制限ありトピックタイトル生成
35
● スイス中銀、スイスフラン高抑制の無制限介入終了 :主要金融ニュース :マーケッ
ト :日本経済新聞
● スイスフラン、対ユーロで一時30%上昇 フラン上限廃止で | マネーニュース | 株式
市場 | Reuters● スイスフラン突然の大暴騰!取引が成立しない状況に - Togetterまとめ
● スイスフラン騒動で大儲けした人と大損した人の阿鼻叫喚の叫びまとめ #fx - NAVER まとめ
● スイス中銀がフラン上限撤廃・中銀預金金利一段のマイナス:識者はこうみる | Reuters
● スイスフラン上限撤廃、通貨急騰で波紋 時計大手首脳が批判 :日本経済新聞
● スイスフランショックで大儲けした人と大損した人。ファイナンススタジアムより抜粋。 - マネー報道 MoneyReport
● スイスフラン急騰、FX業者の経営に打撃 :日本経済新聞
● 投資家に巨額の損失 スイスフラン急騰の打撃 日本のFX業者らにも (産経新聞) - Yahoo!ニュース
● スイスフランの介入停止問題に関するまとめ - 株式、FXのまとめ解説ブログ
スイスフラン、急騰、上限、撤廃
文字数制限ありトピックタイトル生成
36
● スイス中銀、スイスフラン高抑制の無制限介入終了 :主要金融ニュース :マーケッ
ト :日本経済新聞
● スイスフラン、対ユーロで一時30%上昇 フラン上限廃止で | マネーニュース | 株式
市場 | Reuters● スイスフラン突然の大暴騰!取引が成立しない状況に - Togetterまとめ
● スイスフラン騒動で大儲けした人と大損した人の阿鼻叫喚の叫びまとめ #fx - NAVER まとめ
● スイス中銀がフラン上限撤廃・中銀預金金利一段のマイナス:識者はこうみる | Reuters
● スイスフラン上限撤廃、通貨急騰で波紋 時計大手首脳が批判 :日本経済新聞
● スイスフランショックで大儲けした人と大損した人。ファイナンススタジアムより抜粋。 - マネー報道 MoneyReport
● スイスフラン急騰、FX業者の経営に打撃 :日本経済新聞
● 投資家に巨額の損失 スイスフラン急騰の打撃 日本のFX業者らにも (産経新聞) - Yahoo!ニュース
● スイスフランの介入停止問題に関するまとめ - 株式、FXのまとめ解説ブログ
スイスフラン、急騰、上限
文字数制限ありトピックタイトル生成
37
● スイス中銀、スイスフラン高抑制の無制限介入終了 :主要金融ニュース :マーケッ
ト :日本経済新聞
● スイスフラン、対ユーロで一時30%上昇 フラン上限廃止で | マネーニュース | 株式
市場 | Reuters● スイスフラン突然の大暴騰!取引が成立しない状況に - Togetterまとめ
● スイスフラン騒動で大儲けした人と大損した人の阿鼻叫喚の叫びまとめ #fx - NAVER まとめ
● スイス中銀がフラン上限撤廃・中銀預金金利一段のマイナス:識者はこうみる | Reuters
● スイスフラン上限撤廃、通貨急騰で波紋 時計大手首脳が批判 :日本経済新聞
● スイスフランショックで大儲けした人と大損した人。ファイナンススタジアムより抜粋。 - マネー報道 MoneyReport
● スイスフラン急騰、FX業者の経営に打撃 :日本経済新聞
● 投資家に巨額の損失 スイスフラン急騰の打撃 日本のFX業者らにも (産経新聞) - Yahoo!ニュース
● スイスフランの介入停止問題に関するまとめ - 株式、FXのまとめ解説ブログ
スイスフラン、急騰
文字数制限ありトピックタイトル生成
38
● スイス中銀、スイスフラン高抑制の無制限介入終了 :主要金融ニュース :マーケッ
ト :日本経済新聞
● スイスフラン、対ユーロで一時30%上昇 フラン上限廃止で | マネーニュース | 株式
市場 | Reuters● スイスフラン突然の大暴騰!取引が成立しない状況に - Togetterまとめ
● スイスフラン騒動で大儲けした人と大損した人の阿鼻叫喚の叫びまとめ #fx - NAVER まとめ
● スイス中銀がフラン上限撤廃・中銀預金金利一段のマイナス:識者はこうみる | Reuters
● スイスフラン上限撤廃、通貨急騰で波紋 時計大手首脳が批判 :日本経済新聞
● スイスフランショックで大儲けした人と大損した人。ファイナンススタジアムより抜粋。 - マネー報道 MoneyReport
● スイスフラン急騰、FX業者の経営に打撃 :日本経済新聞
● 投資家に巨額の損失 スイスフラン急騰の打撃 日本のFX業者らにも (産経新聞) - Yahoo!ニュース
● スイスフランの介入停止問題に関するまとめ - 株式、FXのまとめ解説ブログ
スイスフラン、急騰
YAPC::Asia Topics● YAPC::Asia 2006 Tokyo
● YAPC::Asia 2006 Tokyo 1日目 箇条書き
● YAPC::Asia 2007
● Journal of acme YAPC::Asia 2008 Day 1
● YAPC::Asia 2009
● YAPC::Asia Tokyo 2010前夜祭の日です
● YAPC::Asia 2010スライドまとめ
● YAPC::Asia Tokyo 2011の1日目です
● YAPC :Asia 2012にフル参加してLTもしてきた #yapcasia
● YAPC::Asia 2013でPerlと結合テストについてはなします #yapcasia
● YAPC::Asia Tokyo 2013でトークしてきました
● YAPC::Asia 2014 1日目の感想とノート #yapcasia 編集後記
● YAPC::Asia Tokyo 2015に応募した41
top related