该回购既包含在线课程,也包含其现代开源网络框架。在课程中,您将学习如何使用基于规则和机器学习方法来构建先进的自然语言理解系统。前端由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" 。 |
| 孩子们 | 细绳 | 如果选择该选项,则要显示的文本(解释其正确或不正确的原因)。 |