該回購既包含在線課程,也包含其現代開源網絡框架。在課程中,您將學習如何使用基於規則和機器學習方法來構建先進的自然語言理解系統。前端由Gatsby,Reles.js和Plyr提供動力,而後端代碼執行使用粘合劑?所有這些都是開源的,並根據MIT許可證(代碼和框架)和CC BY-NC(Spacy課程材料)出版。
本課程主要用於自學。是的,您可以作弊 - 解決方案都在此存儲庫中,單擊“顯示提示”或“ Show Solution”沒有懲罰,並且您可以在認為完成後將其標記為練習。
| 語言 | 文字示例1 | 來源 | 作者 |
|---|---|---|---|
| 英語 | 英語 | chapters/en , exercises/en | @ines |
| 德語 | 德語 | chapters/de , exercises/de | @ines, @jette16 |
| 西班牙語 | 西班牙語 | chapters/es , exercises/es | @mariacamilagl, @damian-romero |
| 法語 | 法語 | chapters/fr , exercises/fr | @Datakime |
| 日本人 | 日本人 | chapters/ja , exercises/ja | @tamuhey, @hiroshi-matsuda-rit, @icoxfog417,@akirakubo, @forest1988, @ao9mame,@matsurih,@hiromuhota, @hiromuhota, @mei28,@polm |
| 中國人 | 中國人 | chapters/zh , exercises/zh | @crownpku |
| 葡萄牙語 | 英語 | chapters/pt , exercises/pt | @cristianasp |
如果您發現一個錯誤,我總是很感謝拉力請求!
1。這是練習中使用的文本示例和資源的語言。例如,該課程的德語版本還使用德語文本示例和模型。並非總是可以翻譯所有代碼示例,因此某些翻譯仍然可以使用和分析英語文本作為課程的一部分。
我最初為DataCamp開發了內容,但我想製作一個免費版本以使更多人可以使用,因此您不必註冊他們的服務。作為一個週末項目,我最終將自己的小應用程序放在一起,以有趣而互動的方式介紹練習和內容。
可能,是的!如果您一直在尋找一種DIY來發布材料的方式,我希望我的小框架可以有用。因為這麼多人對此表示興趣,所以我整理了一些您可以分叉並適應的入門庫:
ines/course-starter-pythonines/course-starter-r 構建交互式課程的應用程序,UI組件和Gatsby框架的來源被許可為MIT,就像我所有的所有開源軟件一樣。課程材料本身(幻燈片和章節)是根據CC BY-NC獲得許可的。這意味著您可以自由使用它們 - 您無法從中賺錢。
首先,非常感謝,這對社區真的很酷而有價值嗎?我嘗試設置課程結構,因此很容易添加不同的語言:在exercises和chapters中將特定於語言的文件組織成目錄,而其他語言特定文本則可以在locale.json中提供。如果您想貢獻,則有兩種不同的參與方法:
開始一個社區翻譯項目。這是最簡單的,無弦的方式。您可以分配回購,複製英語版本,更改語言代碼,開始翻譯並邀請其他人貢獻(如果您願意的話)。如果您正在尋找貢獻者,請隨時在此處打開一個問題,或在Twitter上標記@spacy_io,以便我們可以幫助宣傳。我們也很樂意回答有關問題跟踪器的問題。
向我們提供報價。我們願意調試不同語言的翻譯,因此,如果您有興趣,請通過[email protected]給我們發送電子郵件,並包括您的報價,估計的時間表以及有關您和您的背景(以及您過去所做的任何技術寫作或翻譯工作(如果有))。無論您的位置都沒關係,但是根據您的國家,您應該能夠以自由職業者或類似的方式發布發票。
再次,謝謝,這太酷了!雖然英語和德語視頻還包括視頻錄製,但這不是必需的,我們很樂意在幻燈片旁邊提供錄音軌道。我們會照顧後處理和視頻編輯,因此我們需要的只是錄音。如果您很舒服地錄製自己的語言讀取幻燈片筆記,請通過電子郵件發送電子郵件至[email protected],並向我們提供報價,並在過去所做的有關您的類似工作中包括一些有關您的信息。
要啟動本地開發服務器,請安裝Gatsby,然後安裝所有其他依賴項,然後使用npm run dev啟動開發服務器。確保至少安裝了節點10.15。
npm install -g gatsby-cli # Install Gatsby globally
npm install # Install dependencies
npm run dev # Run the development server如果與Docker一起運行,則剛運行make build ,然後make gatsby-dev
在構建網站時,蓋茨比將尋找.py文件,並通過GraphQl進行查詢。這使我們可以在應用程序中使用原始代碼。在引擎蓋下,該應用程序使用活頁夾在包裝依賴項(包括Spacy型號)中為圖像提供圖像。通過致電JupyterLab,我們可以使用活動內核執行代碼。這使您可以在瀏覽器中編輯代碼並查看實時結果。另請參閱我的juniper存儲庫,以了解有關該實施的更多詳細信息。
為了驗證用戶擊中“提交”時的代碼,我目前正在使用一個稍微黑的技巧。由於Python代碼作為字符串發送回內核,因此我們可以對其進行操作並添加測試 - 例如,使用test_01_02_01.py (如果可用),將使用test_01_02_01.py驗證練習exc_01_02_01.py 。用戶代碼和測試使用字符串模板合併。目前, meta.json中的testTemplate看起來像這樣:
from wasabi import msg
__msg__ = msg
__solution__ = """${solution}"""
${solution}
${test}
try:
test()
except AssertionError as e:
__msg__.fail(e)
如果存在, ${solution}將被提交的用戶代碼的字符串值替換。在這種情況下,我們將其插入兩次:一次作為字符串,因此我們可以檢查提交是否包含某些內容,然後作為代碼,因此我們可以實際運行並檢查其創建的對象。 ${test}被測試文件的內容代替。我還將wasabi的打印機作為__msg__提供,因此我們可以在測試中輕鬆打印漂亮的消息。最後, try / accept塊檢查測試功能是否提出了AssertionError ,如果是,則顯示錯誤消息。這也隱藏了完整的錯誤追溯(可以輕鬆洩漏正確的答案)。
然後,測試文件看起來像這樣:
def test ():
assert "spacy.load" in __solution__ , "Are you calling spacy.load?"
assert nlp . meta [ "lang" ] == "en" , "Are you loading the correct model?"
assert nlp . meta [ "name" ] == "core_web_sm" , "Are you loading the correct model?"
assert "nlp(text)" in __solution__ , "Are you processing the text correctly?"
assert "print(doc.text)" in __solution__ , "Are you printing the Doc's text?"
__msg__ . good (
"Well done! Now that you've practiced loading models, let's look at "
"some of their predictions."
)通過這種方法,並非總是可以完美地驗證輸入 - 有太多選擇,我們希望避免誤報。
自動測試確保提供的解決方案代碼與用於驗證提交的測試文件兼容。測試套件由pytest框架供電,可運行的測試文件將在測試會話開始之前在目錄__tests__中自動生成。有關實施詳細信息,請參見conftest.py 。
# Install requirements
pip install -r binder/requirements.txt
# Run the tests (will generate the files automatically)
python -m pytest __tests__如果與Docker一起運行,請make build ,然後make pytest
├── binder
| └── requirements.txt # Python dependency requirements for Binder
├── chapters # chapters, grouped by language
| ├── en # English chapters, one Markdown file per language
| | └── slides # English slides, one Markdown file per presentation
| └── ... # other languages
├── exercises # code files, tests and assets for exercises
| ├── en # English exercises, solutions, tests and data
| └── ... # other languages
├── public # compiled site
├── src # Gatsby/React source, independent from content
├── static # static assets like images, available in slides/chapters
├── locale.json # translations of meta and UI text
├── meta.json # course metadata
└── theme.sass # UI theme colors and settings存儲庫中的requirements.txt定義了使用粘合劑構建它時安裝的軟件包。在本課程中,我將源倉庫用作活頁夾倉庫,因為它可以將所有內容都放在一個地方。它還讓練習參考並加載其他文件(例如JSON),將復製到Python環境中。不過,我是用分支binder的,只有在粘合劑與固定文件更改時,我才會更新。否則,對master的每個更新都會觸發圖像重建。
您可以在meta.json的"juniper"部分中指定粘合劑設置,例如repo,branch和內核類型。我建議您通過Binder網站上的界面運行第一個構建,因為這為您提供了詳細的構建日誌和反饋,內容涉及一切是否按預期工作。輸入您的存儲庫URL,單擊“啟動”,然後等待它安裝依賴項並構建圖像。

章節放入/chapters中,是由<exercise>組件組成的降價文件。它們將變成頁面,例如/chapter1 。在文件頂部的前鑽頭中,他們需要指定type: chapter以及以下元:
---
title : The chapter title
description : The chapter description
prev : /chapter1 # exact path to previous chapter or null to not show a link
next : /chapter3 # exact path to next chapter or null to not show a link
id : 2 # unique identifier for chapter
type : chapter # important: this creates a standalone page from the chapter
---
幻燈片放在/slides中,是由幻燈片內容組成的降價文件,由--- 。他們需要在文件頂部指定以下前鑽:
---
type : slides
---
第一個也是最後一部幻燈片使用特殊的佈局,並將顯示幻燈片中心的標題。揚聲器註釋(在這種情況下,可以在幻燈片的末尾添加,並以註釋為Notes: 。然後,它們將顯示在幻燈片旁邊的右側。這是一個示例幻燈片文件:
---
type : slide
---
# Processing pipelines
Notes: This is a slide deck about processing pipelines.
---
# Next slide
- Some bullet points here
- And another bullet point
< img src = " /image.jpg " alt = " An image located in /static " />使用自定義元素時,請確保在開放/關閉標籤和孩子之間放置新線。否則,降價內容可能無法正確渲染。
<exercise>單個練習的容器。
| 爭論 | 類型 | 描述 |
|---|---|---|
id | 數字 /字符串 | 章節中的獨特練習ID。 |
title | 細繩 | 運動標題。 |
type | 細繩 | 可選類型。 "slides"使容器更寬並添加圖標。 |
| 孩子們 | - | 練習的內容。 |
< exercise id = " 1 " title = " Introduction to spaCy " >
Content goes here...
</ exercise ><codeblock>| 爭論 | 類型 | 描述 |
|---|---|---|
id | 數字 /字符串 | 代碼練習的唯一標識符。 |
source | 細繩 | 源文件的名稱(沒有文件擴展名)。如果未設置,則默認為exc_${id} 。 |
solution | 細繩 | 解決方案文件的名稱(無文件擴展名)。如果未設置,則默認為solution_${id} 。 |
test | 細繩 | 測試文件的名稱(沒有文件擴展名)。如果未設置,則默認為test_${id} 。 |
| 孩子們 | 細繩 | 當用戶單擊“顯示提示”時,顯示可選的提示。 |
< codeblock id = " 02_03 " >
This is a hint!
</ codeblock ><slides>使用Revale.js和Markdown文件交互顯示幻燈片的容器。
| 爭論 | 類型 | 描述 |
|---|---|---|
source | 細繩 | 幻燈片文件的名稱(無文件擴展名)。 |
< slides source = " chapter1_01_introduction-to-spacy " >
</ slides ><choice>用於多項選擇問題的容器。
| 爭論 | 類型 | 描述 |
|---|---|---|
id | 字符串 /號碼 | 可選的獨特ID。如果一項練習中存在多個選擇問題,則可以使用。 |
| 孩子們 | 節點 | 只有<opt>選項組件。 |
< choice >
< opt text = " Option one " >You have selected option one! This is not good.</ opt >
< opt text = " Option two " correct = " true " >Yay! </ opt >
</ choice ><opt>多項選擇選項。
| 爭論 | 類型 | 描述 |
|---|---|---|
text | 細繩 | 要顯示的選項文本。支持內聯HTML。 |
correct | 細繩 | 如果選項是正確的答案,則"true" 。 |
| 孩子們 | 細繩 | 如果選擇該選項,則要顯示的文本(解釋其正確或不正確的原因)。 |