More EDA with Streamlit
Using Machine Learning with Streamlit
NLP basics and Deploying NLP models
所謂的模型部署,是指將模型與資料整合成一個 web app,讓使用者可以透過網頁介面與模型互動。類型上可分:
Jupyter notebook
(Uploaded to GitHub
- Shared as a link via Google Colab
- Shared via Binder)
API
:模型可以利用像是 FastAPI
來部署成 REST API
。提供程式化的介面,讓使用者可以透過程式語言與模型互動。(但沒有前端圖形介面)
Web app
:提供網頁介面,讓使用者可以透過網頁與模型互動。傳統上會走 Flask
或 Django
的 web framework。 晚近的簡單做法是採 low-code solution,例如 Streamlit
。
Key elements of a (Streamlit) app
input :使用不同的 widgets
(如:sliders
, text/number boxes
, file uploader
,...) 來接收使用者的輸入。
'Brain'(functions) :透過 (外接,或自己寫) Python
的函式 來處理輸入,並產生輸出。特別的是,可以使用
component
(third-party Python modules) 來將複雜的函式包裝成一個 widget
,可直接使用。
output :輸出的結果,可以是各種可能的形式(e.g. dataframe, images, plots, text, embeddings,...)
content
(text, images, video, audio, etc.)
widget
auilliary
(ballons, progress bars, code box, etc.)
機器學習模型對於資料科學與自然語言處理專案或成品越見重要。
開發模型後的體驗與測試很重要,但是等全端開發好(e.g. 加入 Flask
或 Django
)太耗時與資源。
所以有 prototype 的開發需要:
Streamlit
Streamlit
apps).用上週的企鵝數據來建立一個機器學習預測模型
> cd pengu_app
> touch pengu_ml.py pengu_streamlit.py
Jupyter Notebook
來探索與建模pengu.ipynb
pengu_ml.ipynb
再轉成 python 檔案。我們使用隨機森林演算法來建立模型。
Load a pre-trained ML model in Streamlit
Training models inside Streamlit
apps
streamlit-pandas-profiling
的 component 來快速嵌入 EDA app。dabl
等套件也可以進階玩玩看。。columns
page configuration
sidebar
color picker
themes
(credit: NLP.js)
spaCy
是一個相對全面的 NLP library,可以做到很多 NLP 的傳統任務。Hugging Face Transformers
的特色則在於提供了許多預訓練好的模型 (pre-trained models),方便微調在不同的下游任務。spaCy is a modern natural language processing library that handles +66 languages, provides state-of-the-art speed, and has various components for named entity recognition tasks, part-of-speech tagging, entity linking, and much more.
從這裡開始。覺得無聊的同學可繼續 In-depth spacy tutorial
Spacy/HanLP/CKIP-Transformers . . .
重要的情意處理 (sense and sentiment) 還沒有到位。
Sentiment analysis
先用一個簡單的套件(snownlp
)來做 sentiment analysis。
很可惜正體中文的情感資源與模型不多,大家加油。
給有興趣中文 NLP 的同學參考:
中文 AI 知識庫與自然語言處理核心套件研討會
deploy, manage, and share your app for free.
requirements.txt!
)熟悉 git/github 指令列 (參考這裡)
在 streamlit sharing
除錯
使用 streamlit secrets
在公開 app 上使用私人資料
在 streamlit cloud
上部署
簡單的軟體開發技巧
用 streamlit
建立一個簡單的 NLP app for Chinese sentiment analysis,部署在 streamlit cloud
上。
至少看完 documentation 的 library 部分,並試著用一個以上的元素來美化你的 app。
程式繳交到 github classroom。
第一行註解請寫上你的學號、姓名、stream cloud 的連結。
完全沒有頭緒的同學可以參考這個範例。照著做也行。