이 repo에는 온라인 코스 와 최신 오픈 소스 웹 프레임 워크가 모두 포함되어 있습니다. 이 과정에서는 규칙 기반 및 기계 학습 방식을 사용하여 Spacy를 사용하여 고급 자연어 이해 시스템을 구축하는 방법을 배웁니다. 프론트 엔드는 Gatsby, Relave.js 및 Plyr에 의해 구동되며 백엔드 코드 실행은 바인더를 사용합니까? 모든 오픈 소스이며 MIT 라이센스 (코드 및 프레임 워크) 및 CC By-NC (Spacy Course Materials)에 따라 게시됩니다.
이 과정은 주로 자체 학습을 위한 것입니다. 그렇습니다.
| 언어 | 텍스트 예 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, @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 에서 제공됩니다. 기여하고 싶다면 참여하는 두 가지 방법이 있습니다.
커뮤니티 번역 프로젝트를 시작하십시오. 이것은 가장 쉽고 스트링이 부착되지 않은 방식입니다. 레포를 포크하고, 영어 버전을 복사하고, 언어 코드를 변경하고, 번역을 시작하고, 다른 사람을 기여하도록 초대 할 수 있습니다 (원하는 경우). 기고자를 찾고 있다면 여기에 문제를 열거나 트위터에서 @spacy_io를 태그하여 단어를 꺼내도록 도와 줄 수 있습니다. 또한 문제 추적기에 대한 귀하의 질문에 답변하게되어 기쁩니다.
우리에게 제안으로 만드십시오. 우리는 다른 언어에 대한 번역을 시운전 할 수 있으므로 관심이 있으시면 [email protected]로 이메일을 보내 주시고 제안, 예상 시간 일정 및 귀하와 귀하의 배경 (및 과거에 수행 한 기술 작성 또는 번역 작업)을 포함시킵니다. 당신이 기반을 둔 곳은 중요하지 않지만 국가에 따라 프리랜서 또는 이와 유사한 송장을 발행 할 수 있어야합니다.
다시, 감사합니다, 이것은 매우 멋지다! 영어 및 독일 비디오에는 비디오 녹화도 포함되어 있지만 요구 사항은 아니며 슬라이드와 함께 오디오 트랙을 제공하게되어 기쁩니다. 우리는 후 처리 및 비디오 편집을 처리 할 것이므로 오디오 녹음 만 있으면됩니다. 당신이 당신의 언어로 슬라이드 메모를 읽는 것이 편안하다고 느끼고 있다면 [email protected]로 이메일을 보내 주시고 제안을하고 가능한 경우 과거에했던 유사한 작업에 대해 약간의 제안을 제공하십시오.
로컬 개발 서버를 시작하려면 Gatsby를 설치 한 다음 다른 모든 종속성을 설치 한 다음 npm run dev 사용하여 개발 서버를 시작하십시오. Node 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
사이트를 구축 할 때 Gatsby는 .py 파일을 찾고 컨텐츠를 GraphQL을 통해 쿼리 할 수 있도록합니다. 이를 통해 앱 내에서 원시 코드를 사용할 수 있습니다. 후드 아래에서 앱은 바인더를 사용하여 스파크 모델을 포함하여 패키지 종속성으로 이미지를 제공합니다. 그런 다음 jupyterlab으로 호출하면 활성 커널을 사용하여 코드를 실행할 수 있습니다. 이를 통해 브라우저에서 코드를 편집하고 라이브 결과를 볼 수 있습니다. 구현에 대한 자세한 내용은 juniper Repo를 참조하십시오.
사용자가 "제출"을 쳤을 때 코드를 확인하려면 현재 약간 해킹 된 트릭을 사용하고 있습니다. Python 코드는 커널로 문자열로 다시 전송되므로이를 조작하고 테스트를 추가 할 수 있습니다 (예 : Explire exc_01_02_01.py test_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__ 로 사용할 수 있으므로 테스트에서 예쁜 메시지를 쉽게 인쇄 할 수 있습니다. 마지막으로 테스트 함수가 AssertionError 올리면 try / accept 블록 검사를 확인하고 그렇다면 오류 메시지가 표시됩니다. 또한 전체 오류 트레이스 백을 숨 깁니다 (정답을 쉽게 누출 할 수 있음).
그런 다음 테스트 파일이 다음과 같이 보일 수 있습니다.
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 Repository의 requirements.txt 바인더로 빌드 할 때 설치된 패키지를 정의합니다. 이 과정에서는 소스 레포를 바인더 리포로로 사용하고 있습니다. 모든 것을 한 곳에 유지할 수 있습니다. 또한 연습을 참조하고 다른 파일 (예 : JSON)을로드 할 수 있으며,이 파일 (예 : JSON)은 파이썬 환경에 복사됩니다. 그러나 분기 binder 에서 바인더를 빌드하지만 바인더 관련 파일이 변경되는 경우에만 업데이트됩니다. 그렇지 않으면 master 에 대한 모든 업데이트는 이미지 재 구축을 트리거합니다.
meta.json 의 "juniper" 섹션에서 Repo, Branch 및 Kernel 유형과 같은 바인더 설정을 지정할 수 있습니다. 바인더 웹 사이트의 인터페이스를 통해 첫 번째 빌드를 실행하는 것이 좋습니다.이를 통해 모든 것이 예상대로 작동하는지에 대한 자세한 빌드 로그와 피드백을 제공합니다. 저장소 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 " />사용자 정의 요소를 사용할 때는 오프닝/닫는 태그와 어린이 사이에 Newline을 배치하십시오. 그렇지 않으면 마크 다운 컨텐츠가 올바르게 렌더링되지 않을 수 있습니다.
<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>공개 .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" . |
| 어린이들 | 끈 | 옵션이 선택된 경우 표시 할 텍스트 (올바른 이유 또는 부정확 한 이유를 설명). |