Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20180718Eightニュースフィード活性化のための自然言語処理の取り組み

900 views

Published on

【R&D勉強会第1弾】自然言語処理領域(NLP)に関わっていると避けて通れないあの話
https://sansan.connpass.com/event/90498/

Published in: Technology
  • Be the first to comment

  • Be the first to like this

20180718Eightニュースフィード活性化のための自然言語処理の取り組み

  1. 1. 2018年7月18日 Sansan株式会社R&D勉強会 第1弾 ~自然言語処理領域に関わっていると避けて通れないあの話~ Eightニュースフィード活性化のための 自然言語処理の取り組み Data Strategy & Operation Center, R&D Group 研究員 高橋寛治(@kanji250tr) Sansan株式会社
  2. 2. 自己紹介:高橋寛治 @kanji250tr - 新卒2年目, R&D Group 研究員 - 言語処理まわりの研究開発 - キーワード抽出 - 企業タグ - 大学時代も言語処理 - 機械翻訳の評価 - 表記ゆれを考慮した単語解析器 - 表記ゆれの機械翻訳への影響 1
  3. 3. 目次 2 Eightとニュースフィードの紹介 Eightとは? ニュースフィードと「企業タグ」 避けて通れないあの話 期待値のすり合わせ クローリングとスクレイピング なんだかんだ始めはルールベース 辞書整備
  4. 4. Your business network 個人向け名刺アプリ
  5. 5. 正確にデータを入力 スマホで名刺を撮るだけで。 わたしたちがデータを正確に手入力して、 あなたのビジネスネットワークを構築します。 Eightは「無料」のサービスです。
  6. 6. 一覧ですぐに探せる 登録された名刺は 「あなたのネットワーク」で一覧可能。 「ラベル」を利用して、グルーピングもできます。
  7. 7. 情報は常に最新 Eightでつながると、 相手が転職や昇進などで名刺を変更した場合に 「通知」が届きます。
  8. 8. 気軽に連絡 メールよりも。電話よりも。 気軽に連絡できる「メッセージ」なら、 ビジネスがもっとスムーズに。
  9. 9. パソコンからも Eightは、PCやMacからも利用できます。 外出先でもデスクでも。 あなたのビジネスネットワークに いつでもアクセス。
  10. 10. もっとアピール あなたのプロフィールは、 Web上に公開できます。 メールの署名にリンクを入れて、 オンライン名刺として活用しましょう。
  11. 11. 使ってね!
  12. 12. Eightのニュースフィード
  13. 13. Eightのニュースフィード Twitterのタイムラインのようなもの ユーザがビジネスニュースをシェアして その感想を述べる ユーザや企業がイベントの告知を行う 企業が求人を出す オウンドメディア 12
  14. 14. Eightのニュースフィード Twitterのタイムラインのようなもの ユーザがビジネスニュースをシェアして その感想を述べる ユーザや企業がイベントの告知を行う 企業が求人を出す オウンドメディア 13
  15. 15. 今回紹介するタスクの大枠 シェアされるニュース記事中に含まれる 企業を抽出する
  16. 16. フィード活性化の仮説 - 機能:ニュースシェア時に企業をタグ付け、その企業の関係者(社員や、   社 員とつながっている人)に投稿を配信する - 期待:企業を知っている人に読んでもらえる&知っている企業なので読む - やりたいこと:ニュースに企業を紐付ける 15
  17. 17. 避けて通れない話の前に、結果的にこうなりました 企業名の曖昧さ解消が困難なため、有望なタグ候補をリスト化した 16 URLを見て OGP取得&タグ候補取得 取得したタグ候補を 人間が選択 投稿
  18. 18. ~避けて通れないあの話~
  19. 19. ~避けて通れないあの話~ 簡単にできそう&効果ありそうなので 早急に開発をお願いします
  20. 20. 期待値調整しながら要件定義 - ニュースから企業をタグ付けするとは? 19 ページの 取得 本文抽出 企業名抽出 法人番号 紐付け URL タグリスト
  21. 21. 期待値調整しながら要件定義 - ニュースから企業をタグ付けするとは? 20 ページの 取得 本文抽出 企業名抽出 法人番号 紐付け URL タグリスト 運用とか含め大 変そう 辞書でおk 依頼側のイメージ
  22. 22. 期待値調整しながら要件定義 - ニュースから企業をタグ付けするとは? 21 ページの 取得 本文抽出 企業名抽出 法人番号 紐付け URL タグリスト 辞書の準備できるか な… 一意に紐付け無理 じゃないか? 実際 本文抽出どうしよ
  23. 23. 一意に紐付けは厳しいということをすり合わせ - 長い企業名は一意に紐付きやすい - 短い企業名は同名企業が多い - 多い企業名だと900件以上 - 何らかの絞り込みを行い、候補を返 却して、ユーザに選んでもらう 22
  24. 24. 全体像を描く - 運用が楽と思われるサーバーレス構成で、最速で作ることを考える - Lambdaに載るアルゴリズムでWebAPIを提供する - アクセスが多少増えてもOK 23 ページを取得 本文抽出 法人番号の候補 を並べる Eightに返す Eightから リクエスト AWS Lambda 企業名抽出 URL
  25. 25. API GatewayとLambdaを使ったAPI開発について詳細は - 手前味噌ですが、Sansanのブログに記載しています - Techの道も一歩から(https://jp.corp-sansan.com/blog/tech-no-michi) - 第6回「API GatewayとAWS Lambda PythonでAPI開発」Vol. 1:API GatewayとAWS Lambdaを知る - 第7回「API GatewayとAWS Lambda PythonでAPI開発」Vol. 2:ローカルでの開発環境構築 - 第8回「API GatewayとAWS Lambda PythonでAPI開発」Vol. 3:エラー処理 - 第9回「API GatewayとAWS Lambda PythonでAPI開発」Vol. 4:デプロイ 24
  26. 26. ~避けて通れないあの話~ クローリングとスクレイピング
  27. 27. クローリングとスクレイピング - ページを見ながら考える 26 ページの 取得 本文抽出 企業名抽出 法人番号 紐付け URL タグリスト 【クローリング】 投げられたURLのペー ジを取得 【スクレイピング】 取得したページから本 文を抽出
  28. 28. 日本経済新聞さんの記事を例に本文抽出を考える 27 https://www.nikkei.com/article/DGXMZO32823810Q8A710C1XY0000/ より引用
  29. 29. 綾瀬はるかさんと名刺交換しよう あとで後ろでEight使って名刺交換できます! 28
  30. 30. その前に僕と名刺交換しましょう 29
  31. 31. 閑話休題:日本経済新聞さんの記事を例に本文抽出を考える 31 https://www.nikkei.com/article/DGXMZO32823810Q8A710C1XY0000/ より引用
  32. 32. どうやって本文を抽出するか? - 当初はサイトごとに、パスを書いて本文を抽出 - サイトの変更などですぐに追従できなくなり、運用が面倒 - 自動での本文抽出を模索 - 中谷さんが開発されたExtractContentは9割ほどうまくいく* - Python版を発見したが、2系しか対応していない 32 * http://labs.cybozu.co.jp/blog/nakatani/2007/09/web_1.html Python3系で動くように改造
  33. 33. ExtractContent3を作った - pip install extractcontent3 でインストールできるように 33 from extractcontent3 import ExtractContent extractor = ExtractContent() extractor.set_default({"threshold":50}) extractor.analyse(open("index.html").read()) text, title = extractor.as_text() - オリジナル版およびFork元作者に圧倒的感謝m(_ _)m https://github.com/kanjirz50/python-extractcontent3
  34. 34. ~避けて通れないあの話~ なんだかんだスタートはルールベース
  35. 35. 本文からどうやって企業名を抽出するか - ページを見ながら考える 35 ページの 取得 本文抽出 企業名抽出 法人番号 紐付け URL タグリスト
  36. 36. 企業名の抽出をどうするか https://www.nikkei.com/article/DGXMZO32823810Q8A710C1XY0000/ より引用 36
  37. 37. 企業名の抽出をどうするか https://www.nikkei.com/article/DGXMZO32823810Q8A710C1XY0000/ より引用 37 固 有 表 現 抽 出 ?
  38. 38. アルゴリズムの検討 - 現在の要件 - 超特急で作る - AWS Lambdaでサーバーレス - 何がよさそうか? - 超特急なため、学習データが用意できない - 辞書ベースだと動作速度などはMeCabに依存(高速) - ルールベースの戦略 - 形態素解析辞書に企業名を固有名詞+独自ラベルを付与し追加 - 形態素解析結果から、独自ラベルに該当する企業名を抽出 38 データ 手法問題設定 +時間
  39. 39. ~避けて通れないあの話~ 辞書整備
  40. 40. 辞書整備 - 企業名辞書を作る - スコアは「名詞-固有名詞-組織」でそれっぽいものを決め打ち - EX_ORGという企業名属性を末尾に追加し、ルールベースで抽出 - とにかく企業名を追加すれば解決するかに思われた… 40 f"{company_name},1292,1292,5000,名詞,固有名詞,組織,*,*,*,{company_name},{reading},EX_ORG"
  41. 41. 企業名は無限大 Part 1 - 一般名詞として存在する企業名が候補として頻出 - 世界 - ログイン - アプリ - している - 毎日 - いったん、ブラックリストを作成して対策 - 説明しやすい 41
  42. 42. 企業名は無限大 Part 2 - 省略形が頻出 - AWS - ヤクルト - 省略形:法人番号のリストを作成して対策 - 一意に決めた 42
  43. 43. 企業名は無限大 Part 3 - 網羅しきれない名前や表記ゆれ - アップルジャパン - マネーフォワード - SONY - スバル - 作業者にアノテートしてもらえる枠組みを作り、追加 - 簡単なWebアプリケーション+スプレッドシート - スプレッドシート最強←アノテートを依頼しやすい 43
  44. 44. 作業者は追加したい企業 名・削除したい企業名をス プレッドシートに追加
  45. 45. スプレッドシートからの辞書更新の自動化 - アーキテクトチームにお願いしてCircle CIでよしなに - CIは本番稼働に向けて調整中 45 1日1回起動 辞書作成 Git LFS 辞書更新 プルリク作成 AWS Lambda 自動デプロイ - 現状は、手作業でシェルスクリプトを走らせて手動デプロイ(泣)
  46. 46. 運用された結果 46 定量的なフィードバック フィードのインプレッション数向上 投稿にいいねがつきやすくなった 定性的な声 つながりの無い人からのコメント・つながり 申請が増え、ビジネスネットワークサービス として人脈の広がりが感じられた 価値向上できた
  47. 47. 今後やりたいこと - 企業抽出の高度化に係り受け情報を利用する - 「Sansan -> 発表した」を素性にする 47 Sansan(東京・渋谷)は10日、個人向けの名刺管理アプリ「Eight(エイト)」を使って、 女優の綾瀬はるかさんが出演するTBSのドラマとPR活動で協力すると発表した。 - 候補返却ではなく確信度の高いものを出して、一発確定させたい - データの作成が必要そう - 「Sansan」と「名刺」が共起すると、名刺管理のSansan
  48. 48. まとめ - 名刺アプリEightのフィード活性化のための自然言語処理の取り組みである企業 タグ付け機能の裏側を紹介 - 自然言語処理領域の開発時に、避けて通れないあの話を紹介 - 要件定義 - クローリングとスクレイピング - ルールや辞書ベース - 辞書整備 48
  49. 49. Creating a resource from everyday business encounters and transforming the way the world works. ビジネスの出会いを  資産に変え、 働き方を革新する

×