SlideShare uma empresa Scribd logo
1 de 75
Baixar para ler offline
電腦不只會幫你選⼟土⾖豆
還會幫你選新聞
Andy (andy@dorm7.com)
1
About Me
• Andy (andy@dorm7.com)
• Taipei.py、PyCon TW、PyCon APAC ⼯工作⼈人員
• Backend Developer @ Dorm7 Software
• 平常都在寫 Python、Django
2
今天會講些什麼?
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.
!
— Albert Einstein
8
問題:我想要知道怎麼
樣的新聞會得到⽐比較多
的 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!
19
Selenium - Web Browser
Automation
20
from selenium import webdriver!
!
browser = webdriver.Firefox()!
browser.get('http://www.google.com')!
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
22
22
22
readability - Pulls out main
body
from readability.readability
import Document!
!
doc = Document(content)!
print doc.summary()!
23
或是有些更帥的服務
24
https://www.kimonolabs.com/
!
https://import.io/
25
PyMongo
from pymongo import MongoClient!
!
client = MongoClient()!
db = client['news_database']!
news = db.news!
news.insert(data)!
news.find_one({'url': a['href']})!
26
從 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
屏東/ 科技/ ⼤大學/ 裴家騏/ ⽼老師/ 團隊
/ 在/ 苗栗/ 的/ 研究/ 顯⽰示/ ,/ 近幾年
/ 來/ ,/ 無論/ 地⽅方/ 政府/ 或/ 私⼈人/
的/ 開發/ ,/ 都/ 使得/ ⽯石⻁虎/ 的/ 棲地
/ 不斷/ 地/ 減少/ 和/ 破碎/ 化/ 。/
斷詞
43
import jieba!
segs = jieba.cut(!
u”屏東科技⼤大學裴家騏⽼老師團隊在苗栗的研究顯⽰示"!
)!
print '/'.join(segs)!
jieba - 斷詞
屏東/ 科技/ ⼤大學/ 裴家騏/ ⽼老師/ 團隊/
在/ 苗栗/ 的/ 研究/ 顯⽰示/
44
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.predict(unknown)!
55
最後成果
• 細節不多說,總之就是 call API 跟調參數
• ⽤用 SVM 做 Classification
• 使⽤用的特徵: 標題、內⽂文、類別、有幾張圖、星期
幾
56
今天沒提到但是可能有⽤用的
Packages
• Scrapy - 抓網⾴頁
• NLTK - ⾃自然語⾔言處理
• Pandas - Python Data Analysis Library
• Orange - Open source data visualization and
analysis
• Matplotlib - 畫圖
57
結論
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

Mais conteúdo relacionado

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

2019.06.29 台北總校第四期結業典禮 陳昇瑋執行長談話
2019.06.29 台北總校第四期結業典禮 陳昇瑋執行長談話2019.06.29 台北總校第四期結業典禮 陳昇瑋執行長談話
2019.06.29 台北總校第四期結業典禮 陳昇瑋執行長談話AI.academy
 
Scratch程式教學 第一週
Scratch程式教學 第一週Scratch程式教學 第一週
Scratch程式教學 第一週永立 連
 
2019/07/13 南部分校第一期結業典禮 陳昇瑋執行長談話
2019/07/13 南部分校第一期結業典禮 陳昇瑋執行長談話2019/07/13 南部分校第一期結業典禮 陳昇瑋執行長談話
2019/07/13 南部分校第一期結業典禮 陳昇瑋執行長談話AI.academy
 
[TOxAIA台中分校] AI 引爆新工業革命,智慧機械首都台中轉型論壇
[TOxAIA台中分校] AI 引爆新工業革命,智慧機械首都台中轉型論壇[TOxAIA台中分校] AI 引爆新工業革命,智慧機械首都台中轉型論壇
[TOxAIA台中分校] AI 引爆新工業革命,智慧機械首都台中轉型論壇台灣資料科學年會
 
from passion import profession
from passion import professionfrom passion import profession
from passion import professionTsungWei Hu
 
[台灣人工智慧學校] 人工智慧民主化在台灣
[台灣人工智慧學校] 人工智慧民主化在台灣[台灣人工智慧學校] 人工智慧民主化在台灣
[台灣人工智慧學校] 人工智慧民主化在台灣台灣資料科學年會
 
[台灣人工智慧學校] 執行長報告
[台灣人工智慧學校] 執行長報告[台灣人工智慧學校] 執行長報告
[台灣人工智慧學校] 執行長報告台灣資料科學年會
 
創人物Vol.3 - 陳謙 - 實習分享
創人物Vol.3 - 陳謙 - 實習分享創人物Vol.3 - 陳謙 - 實習分享
創人物Vol.3 - 陳謙 - 實習分享交點
 
2016 Ideathon Big Data Introduction
2016 Ideathon Big Data Introduction2016 Ideathon Big Data Introduction
2016 Ideathon Big Data IntroductionWilliam Tai
 
AOI智慧升級─AI訓練師在地養成計畫_台灣人工智慧學校
AOI智慧升級─AI訓練師在地養成計畫_台灣人工智慧學校AOI智慧升級─AI訓練師在地養成計畫_台灣人工智慧學校
AOI智慧升級─AI訓練師在地養成計畫_台灣人工智慧學校CHENHuiMei
 
MixTaiwan 20170104-趨勢-陳昇瑋-從資料科學到人工智慧
MixTaiwan 20170104-趨勢-陳昇瑋-從資料科學到人工智慧MixTaiwan 20170104-趨勢-陳昇瑋-從資料科學到人工智慧
MixTaiwan 20170104-趨勢-陳昇瑋-從資料科學到人工智慧Mix Taiwan
 
“实战”时间管理
“实战”时间管理“实战”时间管理
“实战”时间管理ben
 
20170519得到分享-Evernote實作與應用
20170519得到分享-Evernote實作與應用20170519得到分享-Evernote實作與應用
20170519得到分享-Evernote實作與應用Chi Chu
 
The meaning of open - osdc.tw 2011
The meaning of open - osdc.tw 2011The meaning of open - osdc.tw 2011
The meaning of open - osdc.tw 2011John Lee
 
EZTBALE Inside 20110326
EZTBALE Inside 20110326 EZTBALE Inside 20110326
EZTBALE Inside 20110326 EZTABLE
 
DSP 資料科學計畫簡介
DSP 資料科學計畫簡介DSP 資料科學計畫簡介
DSP 資料科學計畫簡介codefortomorrow
 
雲端科技
雲端科技雲端科技
雲端科技esther720
 
Mix Taiwan20170322林守德-解決AI的困局─人工智慧的第三波革命
Mix Taiwan20170322林守德-解決AI的困局─人工智慧的第三波革命Mix Taiwan20170322林守德-解決AI的困局─人工智慧的第三波革命
Mix Taiwan20170322林守德-解決AI的困局─人工智慧的第三波革命Mix Taiwan
 

Semelhante a 電腦不只會幫你選土豆,還會幫你選新聞 (20)

2019.06.29 台北總校第四期結業典禮 陳昇瑋執行長談話
2019.06.29 台北總校第四期結業典禮 陳昇瑋執行長談話2019.06.29 台北總校第四期結業典禮 陳昇瑋執行長談話
2019.06.29 台北總校第四期結業典禮 陳昇瑋執行長談話
 
Scratch程式教學 第一週
Scratch程式教學 第一週Scratch程式教學 第一週
Scratch程式教學 第一週
 
2019/07/13 南部分校第一期結業典禮 陳昇瑋執行長談話
2019/07/13 南部分校第一期結業典禮 陳昇瑋執行長談話2019/07/13 南部分校第一期結業典禮 陳昇瑋執行長談話
2019/07/13 南部分校第一期結業典禮 陳昇瑋執行長談話
 
[TOxAIA台中分校] AI 引爆新工業革命,智慧機械首都台中轉型論壇
[TOxAIA台中分校] AI 引爆新工業革命,智慧機械首都台中轉型論壇[TOxAIA台中分校] AI 引爆新工業革命,智慧機械首都台中轉型論壇
[TOxAIA台中分校] AI 引爆新工業革命,智慧機械首都台中轉型論壇
 
from passion import profession
from passion import professionfrom passion import profession
from passion import profession
 
[台灣人工智慧學校] 人工智慧民主化在台灣
[台灣人工智慧學校] 人工智慧民主化在台灣[台灣人工智慧學校] 人工智慧民主化在台灣
[台灣人工智慧學校] 人工智慧民主化在台灣
 
[台灣人工智慧學校] 執行長報告
[台灣人工智慧學校] 執行長報告[台灣人工智慧學校] 執行長報告
[台灣人工智慧學校] 執行長報告
 
創人物Vol.3 - 陳謙 - 實習分享
創人物Vol.3 - 陳謙 - 實習分享創人物Vol.3 - 陳謙 - 實習分享
創人物Vol.3 - 陳謙 - 實習分享
 
雲端知識蒐集達人-0928
雲端知識蒐集達人-0928雲端知識蒐集達人-0928
雲端知識蒐集達人-0928
 
第一期結業典禮-執行長報告
第一期結業典禮-執行長報告第一期結業典禮-執行長報告
第一期結業典禮-執行長報告
 
2016 Ideathon Big Data Introduction
2016 Ideathon Big Data Introduction2016 Ideathon Big Data Introduction
2016 Ideathon Big Data Introduction
 
AOI智慧升級─AI訓練師在地養成計畫_台灣人工智慧學校
AOI智慧升級─AI訓練師在地養成計畫_台灣人工智慧學校AOI智慧升級─AI訓練師在地養成計畫_台灣人工智慧學校
AOI智慧升級─AI訓練師在地養成計畫_台灣人工智慧學校
 
MixTaiwan 20170104-趨勢-陳昇瑋-從資料科學到人工智慧
MixTaiwan 20170104-趨勢-陳昇瑋-從資料科學到人工智慧MixTaiwan 20170104-趨勢-陳昇瑋-從資料科學到人工智慧
MixTaiwan 20170104-趨勢-陳昇瑋-從資料科學到人工智慧
 
“实战”时间管理
“实战”时间管理“实战”时间管理
“实战”时间管理
 
20170519得到分享-Evernote實作與應用
20170519得到分享-Evernote實作與應用20170519得到分享-Evernote實作與應用
20170519得到分享-Evernote實作與應用
 
The meaning of open - osdc.tw 2011
The meaning of open - osdc.tw 2011The meaning of open - osdc.tw 2011
The meaning of open - osdc.tw 2011
 
EZTBALE Inside 20110326
EZTBALE Inside 20110326 EZTBALE Inside 20110326
EZTBALE Inside 20110326
 
DSP 資料科學計畫簡介
DSP 資料科學計畫簡介DSP 資料科學計畫簡介
DSP 資料科學計畫簡介
 
雲端科技
雲端科技雲端科技
雲端科技
 
Mix Taiwan20170322林守德-解決AI的困局─人工智慧的第三波革命
Mix Taiwan20170322林守德-解決AI的困局─人工智慧的第三波革命Mix Taiwan20170322林守德-解決AI的困局─人工智慧的第三波革命
Mix Taiwan20170322林守德-解決AI的困局─人工智慧的第三波革命
 

Mais de Andy Dai

Grpc + python.key
Grpc + python.keyGrpc + python.key
Grpc + python.keyAndy Dai
 
該怎麼樣(認真的)部署你的 Python Web 應用程式?
該怎麼樣(認真的)部署你的 Python Web 應用程式?該怎麼樣(認真的)部署你的 Python Web 應用程式?
該怎麼樣(認真的)部署你的 Python Web 應用程式?Andy Dai
 
Power UP your CLI
Power UP your CLIPower UP your CLI
Power UP your CLIAndy Dai
 
Search search search
Search search searchSearch search search
Search search searchAndy Dai
 
Django channels
Django channelsDjango channels
Django channelsAndy Dai
 
Django Third party packages
Django Third party packagesDjango Third party packages
Django Third party packagesAndy Dai
 
Practical django secuirty
Practical django secuirtyPractical django secuirty
Practical django secuirtyAndy Dai
 
總之來講講 Search
總之來講講 Search總之來講講 Search
總之來講講 SearchAndy Dai
 
Python web meetup 11 18
Python web meetup 11 18Python web meetup 11 18
Python web meetup 11 18Andy Dai
 
Django in heavy load environment
Django in heavy load environmentDjango in heavy load environment
Django in heavy load environmentAndy Dai
 
Tradeoffs of replacing core components
Tradeoffs of replacing core componentsTradeoffs of replacing core components
Tradeoffs of replacing core componentsAndy Dai
 
ElastiCache
ElastiCacheElastiCache
ElastiCacheAndy Dai
 
Django deploy
Django deployDjango deploy
Django deployAndy Dai
 
Build your own trello witihin 100 LOC (with Meteor)
Build your own trello witihin 100 LOC (with Meteor)Build your own trello witihin 100 LOC (with Meteor)
Build your own trello witihin 100 LOC (with Meteor)Andy Dai
 
Boost your django admin with Grappelli
Boost your django admin with GrappelliBoost your django admin with Grappelli
Boost your django admin with GrappelliAndy Dai
 

Mais de Andy Dai (16)

Grpc + python.key
Grpc + python.keyGrpc + python.key
Grpc + python.key
 
該怎麼樣(認真的)部署你的 Python Web 應用程式?
該怎麼樣(認真的)部署你的 Python Web 應用程式?該怎麼樣(認真的)部署你的 Python Web 應用程式?
該怎麼樣(認真的)部署你的 Python Web 應用程式?
 
Power UP your CLI
Power UP your CLIPower UP your CLI
Power UP your CLI
 
Search search search
Search search searchSearch search search
Search search search
 
Django channels
Django channelsDjango channels
Django channels
 
Django Third party packages
Django Third party packagesDjango Third party packages
Django Third party packages
 
Practical django secuirty
Practical django secuirtyPractical django secuirty
Practical django secuirty
 
總之來講講 Search
總之來講講 Search總之來講講 Search
總之來講講 Search
 
Python web meetup 11 18
Python web meetup 11 18Python web meetup 11 18
Python web meetup 11 18
 
Django in heavy load environment
Django in heavy load environmentDjango in heavy load environment
Django in heavy load environment
 
Tradeoffs of replacing core components
Tradeoffs of replacing core componentsTradeoffs of replacing core components
Tradeoffs of replacing core components
 
ElastiCache
ElastiCacheElastiCache
ElastiCache
 
Dynamo db
Dynamo dbDynamo db
Dynamo db
 
Django deploy
Django deployDjango deploy
Django deploy
 
Build your own trello witihin 100 LOC (with Meteor)
Build your own trello witihin 100 LOC (with Meteor)Build your own trello witihin 100 LOC (with Meteor)
Build your own trello witihin 100 LOC (with Meteor)
 
Boost your django admin with Grappelli
Boost your django admin with GrappelliBoost your django admin with Grappelli
Boost your django admin with Grappelli
 

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