このリポジトリには、オンラインコースと最新のオープンソースWebフレームワークの両方が含まれています。コースでは、ルールベースと機械学習アプローチの両方を使用して、SPACYを使用して高度な自然言語理解システムを構築する方法を学びます。フロントエンドはGatsby、Leveal.js、およびPlyrを搭載しており、バックエンドコードの実行はバインダーを使用しますか?それはすべてオープンソースであり、MITライセンス(コードとフレームワーク)およびCC BY-NC(SPACYコースの資料)の下で公開されています。
このコースは、主に自己学習を目的としています。はい、チートできます。ソリューションはすべてこのレポであり、「Show Hints」または「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、 @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で入手できます。貢献したい場合は、関与する2つの異なる方法があります。
コミュニティ翻訳プロジェクトを開始します。これは、最も簡単で、文字列に適した方法です。リポジトリをフォークし、英語版をコピーし、言語コードを変更し、翻訳を開始し、他の人に貢献するように招待できます(必要に応じて)。貢献者を探している場合は、ここで問題を開いたり、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を介してクエリできるようにします。これにより、アプリ内のRAWコードを使用できます。ボンネットの下で、アプリはバインダーを使用して、スペイシーモデルを含むパッケージ依存関係を備えた画像を提供します。 JupyterLabを呼び出すことにより、アクティブカーネルを使用してコードを実行できます。これにより、ブラウザでコードを編集して、ライブ結果を確認できます。実装の詳細については、 juniper Repoも参照してください。
ユーザーが「送信」にヒットしたときにコードを検証するには、現在少しハッキーなトリックを使用しています。 Pythonコードは文字列としてカーネルに送り返されるため、テストを操作してテストを追加できます。たとえば、Exterce 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}提出されたユーザーコードの文字列値に置き換えられます。この場合、2回挿入しています。1回は文字列として1回、提出に何かが含まれているかどうかを確認できます。 ${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 settingsrequirements.txtリポジトリのcxtは、バインダーで構築するときにインストールされているパッケージを定義します。このコースでは、ソースリポジトリをバインダーリポジトリとして使用しています。これは、すべてを1か所に保つことができるためです。また、エクササイズを参照して、Python環境にコピーされる他のファイル(JSONなど)をロードできます。ただし、ブランチbinderからバインダーを構築します。これは、バインダーに関連するファイルが変更された場合にのみ更新します。それ以外の場合、 masterへの更新はすべて、画像の再構築をトリガーします。
meta.jsonの"juniper"セクションで、レポ、ブランチ、カーネルタイプなどのバインダー設定を指定できます。 Binder Webサイトのインターフェイスを介して最初のビルドを実行することをお勧めします。これにより、詳細なビルドログと、すべてが期待どおりに機能するかどうかについてのフィードバックが得られるためです。リポジトリURLを入力し、[起動]をクリックして、依存関係をインストールして画像を作成するのを待ちます。

章は/chaptersに配置されており、 <exercise>コンポーネントで構成されるマークダウンファイルです。それらは、EG /chapter1ページに変わります。ファイルの上部にあるFrontMatterブロックでは、次の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に配置され、スライドコンテンツで構成されるマークダウンファイルで、 ---で区切られています。ファイルの上部に次のFrontMatterブロックを指定する必要があります。
---
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>revele.jsとマークダウンファイルを使用して、インタラクティブにスライドを表示するコンテナ。
| 口論 | タイプ | 説明 |
|---|---|---|
source | 弦 | スライドファイルの名前(ファイル拡張子なし)。 |
< slides source = " chapter1_01_introduction-to-spacy " >
</ slides ><choice>複数選択の質問用のコンテナ。
| 口論 | タイプ | 説明 |
|---|---|---|
id | 文字列 /番号 | オプションの一意のID。 1回の演習で複数の選択質問が存在する場合は、使用できます。 |
| 子供たち | ノード | オプションの<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" 。 |
| 子供たち | 弦 | オプションが選択されている場合に表示されるテキスト(正しいまたは正しくない理由を説明します)。 |