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.
電腦不只會幫你選⼟土⾖豆
還會幫你選新聞
Andy (andy@dorm7.com)
1
About Me
• Andy (andy@dorm7.com)
• Taipei.py、PyCon TW、PyCon APAC ⼯工作⼈人員
• Backend Developer @ Dorm7 Software
• 平常都在寫 Pytho...
今天會講些什麼?
3
我們會⽤用 Python 當中的套件來做新
聞的抓取以及簡單的
Machine Learning
來完成⼀一個電腦幫你篩選新聞的系統
4
重點當然是
Machine Learning
5
重點當然是
Machine Learning
Python
6
先讓我們從問
問題開始
7
If I had an hour to solve a
problem I'd spend 55 minutes
thinking about the problem and 5
minutes thinking about solutions...
問題:我想要知道怎麼
樣的新聞會得到⽐比較多
的 Facebook Like
9
讓我們開始吧!
10
11
GARBAGE IN
GARBAGE OUT
12
讓我們來抓新聞吧!
13
打開瀏覽器
14
15
15
16
16
Python Time
17
打開瀏覽器
• requests - 模擬瀏覽器發查詢
• selenium - 真正操控瀏覽器
18
Requests: HTTP for Humans
import requests!
!
def get_content(url):!
response = requests.get(url)!
return response.content!...
Selenium - Web Browser
Automation
20
from selenium import webdriver!
!
browser = webdriver.Firefox()!
browser.get('http://...
Beautiful Soup: Navigating,
searching your html
from bs4 import BeautifulSoup!
!
soup = BeautifulSoup(html_content)!
soup....
22
22
22
readability - Pulls out main
body
from readability.readability
import Document!
!
doc = Document(content)!
print doc.summa...
或是有些更帥的服務
24
https://www.kimonolabs.com/
!
https://import.io/
25
PyMongo
from pymongo import MongoClient!
!
client = MongoClient()!
db = client['news_database']!
news = db.news!
news.inse...
從 ETtoday 抓這些資料
• 標題
• ⽇日期
• 內⽂文
• 有幾張圖
• URL
• 類別
• Facebook likes 數量
27
所以要開始 Machine
Learning 了對吧?
28
所以要開始 Machine
Learning 了對吧?
29
整理資料
30
⼀一些數據
• 4/20~7/15 ETtoday 的新聞
• 總共 28615 篇
• 6441 篇的 Facebook Like > 1000
(22.5%)
31
先來看看你的直覺
32
政治
財經
國際
⼤大陸
社會
地⽅方
新奇
⽣生活
寵物動物
影劇
體育
消費
3C
健康
男⼥女
33
最不受歡迎的類別
34
最不受歡迎的類別
• 財經 (3.11%)
34
最不受歡迎的類別
• 財經 (3.11%)
• 消費 (2.57%)
34
最不受歡迎的類別
• 財經 (3.11%)
• 消費 (2.57%)
• 健康 (1.06%)
34
台灣⼈人沒錢、沒辦法消
費、也不重視健康
35
最受歡迎的類別
36
最受歡迎的類別
• ⽣生活 (38.08%)
36
最受歡迎的類別
• ⽣生活 (38.08%)
• 新奇 (47.74%)
36
最受歡迎的類別
• ⽣生活 (38.08%)
• 新奇 (47.74%)
•寵物動物 (89.24%)
36
37
所以要開始 Machine
Learning 了對吧?
38
Machine Learning 第⼀一步:
把你的資料轉成電腦看得懂的
東⻄西
39
屏東科技⼤大學裴家騏⽼老師團隊
在苗栗的研究顯⽰示,近幾年來,
無論地⽅方政府或私⼈人的開發,
都使得⽯石⻁虎的棲地不斷地減少
和破碎化。
電腦看不懂這個...
40
[1, 0, 1, 0, 1…, 0, 1]
電腦看得懂這個...
41
中間缺了什麼?
42
屏東/ 科技/ ⼤大學/ 裴家騏/ ⽼老師/ 團隊
/ 在/ 苗栗/ 的/ 研究/ 顯⽰示/ ,/ 近幾年
/ 來/ ,/ 無論/ 地⽅方/ 政府/ 或/ 私⼈人/
的/ 開發/ ,/ 都/ 使得/ ⽯石⻁虎/ 的/ 棲地
/ 不斷/ 地/ 減...
import jieba!
segs = jieba.cut(!
u”屏東科技⼤大學裴家騏⽼老師團隊在苗栗的研究顯⽰示"!
)!
print '/'.join(segs)!
jieba - 斷詞
屏東/ 科技/ ⼤大學/ 裴家騏/ ⽼老師/ 團...
import jieba.analyse!
!
content = """..."""!
tags = jieba.analyse.extract_tags(!
! content, topK=10!
)
jieba - 找關鍵詞
45
import jieba!
!
jieba.load_userdict(!
“userdict.txt"!
)!
jieba - 加⾃自定詞庫
46
"结巴"中⽂文分词:做最好
的Python中⽂文分词组件
47
所以要開始 Machine
Learning 了對吧?
48
49
scikit-learn 可以做啥?
50
Classification
這篇新聞會超過 1000 個 !
Likes 嗎?
51
Regression
這篇新聞會有幾個 Likes?
52
Clustering
給⼀一堆新聞,能不能幫我找
出哪些新聞⽐比較像?
53
Machine Learning is Simple
54
from sklearn import svm!
X, y = get_training_set()!
clf = svm.SVC()!
clf.fit(X, y)!
clf.pred...
55
最後成果
• 細節不多說,總之就是 call API 跟調參數
• ⽤用 SVM 做 Classification
• 使⽤用的特徵: 標題、內⽂文、類別、有幾張圖、星期
幾
56
今天沒提到但是可能有⽤用的
Packages
• Scrapy - 抓網⾴頁
• NLTK - ⾃自然語⾔言處理
• Pandas - Python Data Analysis Library
• Orange - Open source da...
結論
58
結論
• 沒有什麼神奇的⽅方法可以幫你搞定資料科學!請
不要抗拒把⼿手弄髒
58
結論
• 沒有什麼神奇的⽅方法可以幫你搞定資料科學!請
不要抗拒把⼿手弄髒
• 想玩玩資料嗎?⽤用 Python 吧!
58
結論
• 沒有什麼神奇的⽅方法可以幫你搞定資料科學!請
不要抗拒把⼿手弄髒
• 想玩玩資料嗎?⽤用 Python 吧!
• 不⼀一定要靠 Machine Learning,資料整理得好就
有價值
58
⼯工商服務
59
⼯工商服務
• Taipei.py
• http://www.meetup.com/Taipei-py/
59
⼯工商服務
• Taipei.py
• http://www.meetup.com/Taipei-py/
• Django Girls Taiwan 籌備中
• http://bit.ly/djangogirls
59
Q&A
60
Upcoming SlideShare
Loading in …5
×

電腦不只會幫你選土豆,還會幫你選新聞

4,796 views

Published on

我們會⽤用 Python 當中的套件來做新 聞的抓取以及簡單的 Machine Learning 來完成一個電腦幫你篩選新聞的系統

Published in: Data & Analytics

電腦不只會幫你選土豆,還會幫你選新聞

  1. 1. 電腦不只會幫你選⼟土⾖豆 還會幫你選新聞 Andy (andy@dorm7.com) 1
  2. 2. About Me • Andy (andy@dorm7.com) • Taipei.py、PyCon TW、PyCon APAC ⼯工作⼈人員 • Backend Developer @ Dorm7 Software • 平常都在寫 Python、Django 2
  3. 3. 今天會講些什麼? 3
  4. 4. 我們會⽤用 Python 當中的套件來做新 聞的抓取以及簡單的 Machine Learning 來完成⼀一個電腦幫你篩選新聞的系統 4
  5. 5. 重點當然是 Machine Learning 5
  6. 6. 重點當然是 Machine Learning Python 6
  7. 7. 先讓我們從問 問題開始 7
  8. 8. If I had an hour to solve a problem I'd spend 55 minutes thinking about the problem and 5 minutes thinking about solutions. ! — Albert Einstein 8
  9. 9. 問題:我想要知道怎麼 樣的新聞會得到⽐比較多 的 Facebook Like 9
  10. 10. 讓我們開始吧! 10
  11. 11. 11
  12. 12. GARBAGE IN GARBAGE OUT 12
  13. 13. 讓我們來抓新聞吧! 13
  14. 14. 打開瀏覽器 14
  15. 15. 15
  16. 16. 15
  17. 17. 16
  18. 18. 16
  19. 19. Python Time 17
  20. 20. 打開瀏覽器 • requests - 模擬瀏覽器發查詢 • selenium - 真正操控瀏覽器 18
  21. 21. Requests: HTTP for Humans import requests! ! def get_content(url):! response = requests.get(url)! return response.content! 19
  22. 22. Selenium - Web Browser Automation 20 from selenium import webdriver! ! browser = webdriver.Firefox()! browser.get('http://www.google.com')!
  23. 23. Beautiful Soup: Navigating, searching your html from bs4 import BeautifulSoup! ! soup = BeautifulSoup(html_content)! soup.title! soup.findAll('a')! soup.find('div', {'id': 'summary'})! 21
  24. 24. 22
  25. 25. 22
  26. 26. 22
  27. 27. readability - Pulls out main body from readability.readability import Document! ! doc = Document(content)! print doc.summary()! 23
  28. 28. 或是有些更帥的服務 24
  29. 29. https://www.kimonolabs.com/ ! https://import.io/ 25
  30. 30. PyMongo from pymongo import MongoClient! ! client = MongoClient()! db = client['news_database']! news = db.news! news.insert(data)! news.find_one({'url': a['href']})! 26
  31. 31. 從 ETtoday 抓這些資料 • 標題 • ⽇日期 • 內⽂文 • 有幾張圖 • URL • 類別 • Facebook likes 數量 27
  32. 32. 所以要開始 Machine Learning 了對吧? 28
  33. 33. 所以要開始 Machine Learning 了對吧? 29
  34. 34. 整理資料 30
  35. 35. ⼀一些數據 • 4/20~7/15 ETtoday 的新聞 • 總共 28615 篇 • 6441 篇的 Facebook Like > 1000 (22.5%) 31
  36. 36. 先來看看你的直覺 32
  37. 37. 政治 財經 國際 ⼤大陸 社會 地⽅方 新奇 ⽣生活 寵物動物 影劇 體育 消費 3C 健康 男⼥女 33
  38. 38. 最不受歡迎的類別 34
  39. 39. 最不受歡迎的類別 • 財經 (3.11%) 34
  40. 40. 最不受歡迎的類別 • 財經 (3.11%) • 消費 (2.57%) 34
  41. 41. 最不受歡迎的類別 • 財經 (3.11%) • 消費 (2.57%) • 健康 (1.06%) 34
  42. 42. 台灣⼈人沒錢、沒辦法消 費、也不重視健康 35
  43. 43. 最受歡迎的類別 36
  44. 44. 最受歡迎的類別 • ⽣生活 (38.08%) 36
  45. 45. 最受歡迎的類別 • ⽣生活 (38.08%) • 新奇 (47.74%) 36
  46. 46. 最受歡迎的類別 • ⽣生活 (38.08%) • 新奇 (47.74%) •寵物動物 (89.24%) 36
  47. 47. 37
  48. 48. 所以要開始 Machine Learning 了對吧? 38
  49. 49. Machine Learning 第⼀一步: 把你的資料轉成電腦看得懂的 東⻄西 39
  50. 50. 屏東科技⼤大學裴家騏⽼老師團隊 在苗栗的研究顯⽰示,近幾年來, 無論地⽅方政府或私⼈人的開發, 都使得⽯石⻁虎的棲地不斷地減少 和破碎化。 電腦看不懂這個... 40
  51. 51. [1, 0, 1, 0, 1…, 0, 1] 電腦看得懂這個... 41
  52. 52. 中間缺了什麼? 42
  53. 53. 屏東/ 科技/ ⼤大學/ 裴家騏/ ⽼老師/ 團隊 / 在/ 苗栗/ 的/ 研究/ 顯⽰示/ ,/ 近幾年 / 來/ ,/ 無論/ 地⽅方/ 政府/ 或/ 私⼈人/ 的/ 開發/ ,/ 都/ 使得/ ⽯石⻁虎/ 的/ 棲地 / 不斷/ 地/ 減少/ 和/ 破碎/ 化/ 。/ 斷詞 43
  54. 54. import jieba! segs = jieba.cut(! u”屏東科技⼤大學裴家騏⽼老師團隊在苗栗的研究顯⽰示"! )! print '/'.join(segs)! jieba - 斷詞 屏東/ 科技/ ⼤大學/ 裴家騏/ ⽼老師/ 團隊/ 在/ 苗栗/ 的/ 研究/ 顯⽰示/ 44
  55. 55. import jieba.analyse! ! content = """..."""! tags = jieba.analyse.extract_tags(! ! content, topK=10! ) jieba - 找關鍵詞 45
  56. 56. import jieba! ! jieba.load_userdict(! “userdict.txt"! )! jieba - 加⾃自定詞庫 46
  57. 57. "结巴"中⽂文分词:做最好 的Python中⽂文分词组件 47
  58. 58. 所以要開始 Machine Learning 了對吧? 48
  59. 59. 49
  60. 60. scikit-learn 可以做啥? 50
  61. 61. Classification 這篇新聞會超過 1000 個 ! Likes 嗎? 51
  62. 62. Regression 這篇新聞會有幾個 Likes? 52
  63. 63. Clustering 給⼀一堆新聞,能不能幫我找 出哪些新聞⽐比較像? 53
  64. 64. Machine Learning is Simple 54 from sklearn import svm! X, y = get_training_set()! clf = svm.SVC()! clf.fit(X, y)! clf.predict(unknown)!
  65. 65. 55
  66. 66. 最後成果 • 細節不多說,總之就是 call API 跟調參數 • ⽤用 SVM 做 Classification • 使⽤用的特徵: 標題、內⽂文、類別、有幾張圖、星期 幾 56
  67. 67. 今天沒提到但是可能有⽤用的 Packages • Scrapy - 抓網⾴頁 • NLTK - ⾃自然語⾔言處理 • Pandas - Python Data Analysis Library • Orange - Open source data visualization and analysis • Matplotlib - 畫圖 57
  68. 68. 結論 58
  69. 69. 結論 • 沒有什麼神奇的⽅方法可以幫你搞定資料科學!請 不要抗拒把⼿手弄髒 58
  70. 70. 結論 • 沒有什麼神奇的⽅方法可以幫你搞定資料科學!請 不要抗拒把⼿手弄髒 • 想玩玩資料嗎?⽤用 Python 吧! 58
  71. 71. 結論 • 沒有什麼神奇的⽅方法可以幫你搞定資料科學!請 不要抗拒把⼿手弄髒 • 想玩玩資料嗎?⽤用 Python 吧! • 不⼀一定要靠 Machine Learning,資料整理得好就 有價值 58
  72. 72. ⼯工商服務 59
  73. 73. ⼯工商服務 • Taipei.py • http://www.meetup.com/Taipei-py/ 59
  74. 74. ⼯工商服務 • Taipei.py • http://www.meetup.com/Taipei-py/ • Django Girls Taiwan 籌備中 • http://bit.ly/djangogirls 59
  75. 75. Q&A 60

×