mirror of
https://github.com/explosion/spaCy.git
synced 2025-01-13 02:36:32 +03:00
Merge branch 'website/v3-launch' into develop
This commit is contained in:
commit
ae07416fda
|
@ -2,9 +2,8 @@ redirects = [
|
||||||
# Netlify
|
# Netlify
|
||||||
{from = "https://spacy.netlify.com/*", to="https://spacy.io/:splat", force = true },
|
{from = "https://spacy.netlify.com/*", to="https://spacy.io/:splat", force = true },
|
||||||
# Subdomain for branches
|
# Subdomain for branches
|
||||||
{from = "https://nightly.spacy.io/*", to="https://nightly-spacy-io.spacy.io/:splat", force = true, status = 200},
|
{from = "https://nightly.spacy.io/*", to="https://spacy.io/:splat", force = true},
|
||||||
# TODO: update this with the v2 branch build once v3 is live (status = 200)
|
{from = "https://v2.spacy.io/*", to="https://v2-spacy-io.spacy.io/:splat", force = true, status = 200},
|
||||||
{from = "https://v2.spacy.io/*", to="https://spacy.io/:splat", force = true},
|
|
||||||
# Old subdomains
|
# Old subdomains
|
||||||
{from = "https://survey.spacy.io/*", to = "https://spacy.io", force = true},
|
{from = "https://survey.spacy.io/*", to = "https://spacy.io", force = true},
|
||||||
{from = "http://survey.spacy.io/*", to = "https://spacy.io", force = true},
|
{from = "http://survey.spacy.io/*", to = "https://spacy.io", force = true},
|
||||||
|
|
|
@ -546,6 +546,8 @@ interactions in a sample dataset, but you can easily swap in your own dataset
|
||||||
for your experiments in any other domain.
|
for your experiments in any other domain.
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
|
<YouTube id="8HL-Ap5_Axo"></YouTube>
|
||||||
|
|
||||||
#### Step 1: Implementing the Model {#component-rel-model}
|
#### Step 1: Implementing the Model {#component-rel-model}
|
||||||
|
|
||||||
We need to implement a [`Model`](https://thinc.ai/docs/api-model) that takes a
|
We need to implement a [`Model`](https://thinc.ai/docs/api-model) that takes a
|
||||||
|
|
|
@ -193,6 +193,8 @@ available for the different architectures are documented with the
|
||||||
|
|
||||||
</Infobox>
|
</Infobox>
|
||||||
|
|
||||||
|
<YouTube id="BWhh3r6W-qE"></YouTube>
|
||||||
|
|
||||||
### Config lifecycle at runtime and training {#config-lifecycle}
|
### Config lifecycle at runtime and training {#config-lifecycle}
|
||||||
|
|
||||||
A pipeline's `config.cfg` is considered the "single source of truth", both at
|
A pipeline's `config.cfg` is considered the "single source of truth", both at
|
||||||
|
|
|
@ -67,6 +67,16 @@ improvements**. The [API docs](/api) include additional deprecation notes. New
|
||||||
methods and functions that were introduced in this version are marked with the
|
methods and functions that were introduced in this version are marked with the
|
||||||
tag <Tag variant="new">3</Tag>.
|
tag <Tag variant="new">3</Tag>.
|
||||||
|
|
||||||
|
<YouTube id="9k_EfV7Cns0"></YouTube>
|
||||||
|
|
||||||
|
<Grid cols={2} gutterBottom={false} narrow>
|
||||||
|
|
||||||
|
<YouTube id="BWhh3r6W-qE"></YouTube>
|
||||||
|
|
||||||
|
<YouTube id="8HL-Ap5_Axo"></YouTube>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
|
||||||
### Transformer-based pipelines {#features-transformers}
|
### Transformer-based pipelines {#features-transformers}
|
||||||
|
|
||||||
> #### Example
|
> #### Example
|
||||||
|
|
|
@ -19,11 +19,11 @@ const universe = require('./meta/universe.json')
|
||||||
|
|
||||||
const DEFAULT_TEMPLATE = path.resolve('./src/templates/index.js')
|
const DEFAULT_TEMPLATE = path.resolve('./src/templates/index.js')
|
||||||
|
|
||||||
const isNightly = !!+process.env.SPACY_NIGHTLY || site.nightlyBranches.includes(process.env.BRANCH)
|
const domain = process.env.BRANCH || site.domain
|
||||||
const favicon = isNightly ? `src/images/icon_nightly.png` : `src/images/icon.png`
|
const siteUrl = `https://${domain}`
|
||||||
const binderBranch = isNightly ? 'nightly' : site.binderBranch
|
const isNightly = site.nightlyBranches.includes(domain)
|
||||||
const siteUrl = isNightly ? site.siteUrlNightly : site.siteUrl
|
const isLegacy = site.legacy || !!+process.env.SPACY_LEGACY
|
||||||
const domain = isNightly ? site.domainNightly : site.domain
|
const favicon = `src/images/icon${isNightly ? '_nightly' : isLegacy ? '_legacy' : ''}.png`
|
||||||
const branch = isNightly ? 'develop' : 'master'
|
const branch = isNightly ? 'develop' : 'master'
|
||||||
|
|
||||||
// Those variables are going to be replaced in the Markdown, e.g. %%GITHUB_SPACY
|
// Those variables are going to be replaced in the Markdown, e.g. %%GITHUB_SPACY
|
||||||
|
@ -53,7 +53,8 @@ module.exports = {
|
||||||
counts: getCounts(models.languages),
|
counts: getCounts(models.languages),
|
||||||
universe,
|
universe,
|
||||||
nightly: isNightly,
|
nightly: isNightly,
|
||||||
binderBranch,
|
legacy: isLegacy,
|
||||||
|
binderBranch: domain,
|
||||||
siteUrl,
|
siteUrl,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,9 @@
|
||||||
"title": "spaCy",
|
"title": "spaCy",
|
||||||
"description": "spaCy is a free open-source library for Natural Language Processing in Python. It features NER, POS tagging, dependency parsing, word vectors and more.",
|
"description": "spaCy is a free open-source library for Natural Language Processing in Python. It features NER, POS tagging, dependency parsing, word vectors and more.",
|
||||||
"slogan": "Industrial-strength Natural Language Processing in Python",
|
"slogan": "Industrial-strength Natural Language Processing in Python",
|
||||||
"siteUrl": "https://spacy.io",
|
|
||||||
"domain": "spacy.io",
|
"domain": "spacy.io",
|
||||||
"siteUrlNightly": "https://nightly.spacy.io",
|
|
||||||
"domainNightly": "nightly.spacy.io",
|
|
||||||
"nightlyBranches": ["nightly.spacy.io"],
|
"nightlyBranches": ["nightly.spacy.io"],
|
||||||
|
"legacy": false,
|
||||||
"email": "contact@explosion.ai",
|
"email": "contact@explosion.ai",
|
||||||
"company": "Explosion",
|
"company": "Explosion",
|
||||||
"companyUrl": "https://explosion.ai",
|
"companyUrl": "https://explosion.ai",
|
||||||
|
|
|
@ -57,6 +57,7 @@
|
||||||
"build": "npm run python:install && npm run python:setup && gatsby build",
|
"build": "npm run python:install && npm run python:setup && gatsby build",
|
||||||
"dev": "npm run python:setup && gatsby develop",
|
"dev": "npm run python:setup && gatsby develop",
|
||||||
"dev:nightly": "BRANCH=nightly.spacy.io npm run dev",
|
"dev:nightly": "BRANCH=nightly.spacy.io npm run dev",
|
||||||
|
"dev:legacy": "SPACY_LEGACY=1 npm run dev",
|
||||||
"lint": "eslint **",
|
"lint": "eslint **",
|
||||||
"clear": "rm -rf .cache",
|
"clear": "rm -rf .cache",
|
||||||
"test": "echo \"Write tests! -> https://gatsby.app/unit-testing\"",
|
"test": "echo \"Write tests! -> https://gatsby.app/unit-testing\"",
|
||||||
|
|
|
@ -8,8 +8,8 @@ import { markdownToReact } from './util'
|
||||||
|
|
||||||
import classes from '../styles/embed.module.sass'
|
import classes from '../styles/embed.module.sass'
|
||||||
|
|
||||||
const YouTube = ({ id, ratio = '16x9' }) => {
|
const YouTube = ({ id, ratio = '16x9', className }) => {
|
||||||
const embedClassNames = classNames(classes.root, classes.responsive, {
|
const embedClassNames = classNames(classes.root, classes.responsive, className, {
|
||||||
[classes.ratio16x9]: ratio === '16x9',
|
[classes.ratio16x9]: ratio === '16x9',
|
||||||
[classes.ratio4x3]: ratio === '4x3',
|
[classes.ratio4x3]: ratio === '4x3',
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import classNames from 'classnames'
|
import classNames from 'classnames'
|
||||||
|
|
||||||
import pattern from '../images/pattern_blue.jpg'
|
import patternDefault from '../images/pattern_blue.jpg'
|
||||||
import patternNightly from '../images/pattern_nightly.jpg'
|
import patternNightly from '../images/pattern_nightly.jpg'
|
||||||
import patternOverlay from '../images/pattern_landing.jpg'
|
import patternLegacy from '../images/pattern_legacy.jpg'
|
||||||
import patternOverlayNightly from '../images/pattern_landing_nightly.jpg'
|
import overlayDefault from '../images/pattern_landing.jpg'
|
||||||
|
import overlayNightly from '../images/pattern_landing_nightly.jpg'
|
||||||
|
import overlayLegacy from '../images/pattern_landing_legacy.jpg'
|
||||||
|
|
||||||
import Grid from './grid'
|
import Grid from './grid'
|
||||||
import { Content } from './main'
|
import { Content } from './main'
|
||||||
|
@ -14,9 +16,15 @@ import { H1, H2, H3 } from './typography'
|
||||||
import Link from './link'
|
import Link from './link'
|
||||||
import classes from '../styles/landing.module.sass'
|
import classes from '../styles/landing.module.sass'
|
||||||
|
|
||||||
export const LandingHeader = ({ nightly, style = {}, children }) => {
|
function getPattern(nightly, legacy) {
|
||||||
const overlay = nightly ? patternOverlayNightly : patternOverlay
|
if (nightly) return { pattern: patternNightly, overlay: overlayNightly }
|
||||||
const wrapperStyle = { backgroundImage: `url(${nightly ? patternNightly : pattern})` }
|
if (legacy) return { pattern: patternLegacy, overlay: overlayLegacy }
|
||||||
|
return { pattern: patternDefault, overlay: overlayDefault }
|
||||||
|
}
|
||||||
|
|
||||||
|
export const LandingHeader = ({ nightly, legacy, style = {}, children }) => {
|
||||||
|
const { pattern, overlay } = getPattern(nightly, legacy)
|
||||||
|
const wrapperStyle = { backgroundImage: `url(${pattern})` }
|
||||||
const contentStyle = { backgroundImage: `url(${overlay})`, ...style }
|
const contentStyle = { backgroundImage: `url(${overlay})`, ...style }
|
||||||
return (
|
return (
|
||||||
<header className={classes.header}>
|
<header className={classes.header}>
|
||||||
|
@ -109,6 +117,7 @@ export const LandingBanner = ({
|
||||||
return (
|
return (
|
||||||
<div className={classes.banner} style={style}>
|
<div className={classes.banner} style={style}>
|
||||||
<Grid cols={small ? null : 3} narrow className={contentClassNames}>
|
<Grid cols={small ? null : 3} narrow className={contentClassNames}>
|
||||||
|
{(title || label) && (
|
||||||
<Heading Component="h3" className={classes.bannerTitle}>
|
<Heading Component="h3" className={classes.bannerTitle}>
|
||||||
{label && (
|
{label && (
|
||||||
<div className={classes.bannerLabel}>
|
<div className={classes.bannerLabel}>
|
||||||
|
@ -119,6 +128,7 @@ export const LandingBanner = ({
|
||||||
{title}
|
{title}
|
||||||
</Link>
|
</Link>
|
||||||
</Heading>
|
</Heading>
|
||||||
|
)}
|
||||||
<div className={textClassNames}>
|
<div className={textClassNames}>
|
||||||
<p>{children}</p>
|
<p>{children}</p>
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ import patternBlue from '../images/pattern_blue.jpg'
|
||||||
import patternGreen from '../images/pattern_green.jpg'
|
import patternGreen from '../images/pattern_green.jpg'
|
||||||
import patternPurple from '../images/pattern_purple.jpg'
|
import patternPurple from '../images/pattern_purple.jpg'
|
||||||
import patternNightly from '../images/pattern_nightly.jpg'
|
import patternNightly from '../images/pattern_nightly.jpg'
|
||||||
|
import patternLegacy from '../images/pattern_legacy.jpg'
|
||||||
import classes from '../styles/main.module.sass'
|
import classes from '../styles/main.module.sass'
|
||||||
|
|
||||||
const patterns = {
|
const patterns = {
|
||||||
|
@ -13,6 +14,7 @@ const patterns = {
|
||||||
green: patternGreen,
|
green: patternGreen,
|
||||||
purple: patternPurple,
|
purple: patternPurple,
|
||||||
nightly: patternNightly,
|
nightly: patternNightly,
|
||||||
|
legacy: patternLegacy,
|
||||||
}
|
}
|
||||||
|
|
||||||
export const Content = ({ Component = 'div', className, children }) => (
|
export const Content = ({ Component = 'div', className, children }) => (
|
||||||
|
|
|
@ -26,12 +26,18 @@ const NavigationDropdown = ({ items = [], section }) => {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function Navigation({ title, items = [], section, search, children }) {
|
export default function Navigation({ title, items = [], section, search, alert, children }) {
|
||||||
return (
|
return (
|
||||||
<nav className={classes.root}>
|
<nav className={classes.root}>
|
||||||
<Link to="/" aria-label={title} hidden>
|
<Link
|
||||||
|
to="/"
|
||||||
|
aria-label={title}
|
||||||
|
hidden
|
||||||
|
className={classNames({ [classes.hasAlert]: !!alert })}
|
||||||
|
>
|
||||||
<h1 className={classes.title}>{title}</h1>
|
<h1 className={classes.title}>{title}</h1>
|
||||||
<Logo className={classes.logo} width={300} height={96} />
|
<Logo className={classes.logo} width={300} height={96} />
|
||||||
|
{alert && <span className={classes.alert}>{alert}</span>}
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<div className={classes.menu}>
|
<div className={classes.menu}>
|
||||||
|
|
|
@ -7,10 +7,12 @@ import socialImageDefault from '../images/social_default.jpg'
|
||||||
import socialImageApi from '../images/social_api.jpg'
|
import socialImageApi from '../images/social_api.jpg'
|
||||||
import socialImageUniverse from '../images/social_universe.jpg'
|
import socialImageUniverse from '../images/social_universe.jpg'
|
||||||
import socialImageNightly from '../images/social_nightly.jpg'
|
import socialImageNightly from '../images/social_nightly.jpg'
|
||||||
|
import socialImageLegacy from '../images/social_legacy.jpg'
|
||||||
|
|
||||||
function getPageTitle(title, sitename, slogan, sectionTitle, nightly) {
|
function getPageTitle(title, sitename, slogan, sectionTitle, nightly, legacy) {
|
||||||
if (sectionTitle && title) {
|
if (sectionTitle && title) {
|
||||||
return `${title} · ${sitename} ${sectionTitle}${nightly ? ' (nightly)' : ''}`
|
const suffix = nightly ? ' (nightly)' : legacy ? ' (legacy)' : ''
|
||||||
|
return `${title} · ${sitename} ${sectionTitle}${suffix}`
|
||||||
}
|
}
|
||||||
if (title) {
|
if (title) {
|
||||||
return `${title} · ${sitename}`
|
return `${title} · ${sitename}`
|
||||||
|
@ -18,8 +20,9 @@ function getPageTitle(title, sitename, slogan, sectionTitle, nightly) {
|
||||||
return `${sitename} · ${slogan}`
|
return `${sitename} · ${slogan}`
|
||||||
}
|
}
|
||||||
|
|
||||||
function getImage(section, nightly) {
|
function getImage(section, nightly, legacy) {
|
||||||
if (nightly) return socialImageNightly
|
if (nightly) return socialImageNightly
|
||||||
|
if (legacy) return socialImageLegacy
|
||||||
if (section === 'api') return socialImageApi
|
if (section === 'api') return socialImageApi
|
||||||
if (section === 'universe') return socialImageUniverse
|
if (section === 'universe') return socialImageUniverse
|
||||||
return socialImageDefault
|
return socialImageDefault
|
||||||
|
@ -33,6 +36,7 @@ export default function SEO({
|
||||||
sectionTitle,
|
sectionTitle,
|
||||||
bodyClass,
|
bodyClass,
|
||||||
nightly,
|
nightly,
|
||||||
|
legacy,
|
||||||
}) {
|
}) {
|
||||||
return (
|
return (
|
||||||
<StaticQuery
|
<StaticQuery
|
||||||
|
@ -45,9 +49,10 @@ export default function SEO({
|
||||||
siteMetadata.title,
|
siteMetadata.title,
|
||||||
siteMetadata.slogan,
|
siteMetadata.slogan,
|
||||||
sectionTitle,
|
sectionTitle,
|
||||||
nightly
|
nightly,
|
||||||
|
legacy
|
||||||
)
|
)
|
||||||
const socialImage = siteMetadata.siteUrl + getImage(section, nightly)
|
const socialImage = siteMetadata.siteUrl + getImage(section, nightly, legacy)
|
||||||
const meta = [
|
const meta = [
|
||||||
{
|
{
|
||||||
name: 'description',
|
name: 'description',
|
||||||
|
|
|
@ -6,8 +6,8 @@ import siteMetadata from '../../meta/site.json'
|
||||||
|
|
||||||
const htmlToReactParser = new HtmlToReactParser()
|
const htmlToReactParser = new HtmlToReactParser()
|
||||||
|
|
||||||
// TODO: update this
|
const isNightly = siteMetadata.nightlyBranches.includes(siteMetadata.domain)
|
||||||
const DEFAULT_BRANCH = 'develop'
|
export const DEFAULT_BRANCH = isNightly ? 'develop' : 'master'
|
||||||
export const repo = siteMetadata.repo
|
export const repo = siteMetadata.repo
|
||||||
export const modelsRepo = siteMetadata.modelsRepo
|
export const modelsRepo = siteMetadata.modelsRepo
|
||||||
export const projectsRepo = siteMetadata.projectsRepo
|
export const projectsRepo = siteMetadata.projectsRepo
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
@ -7,11 +7,11 @@ import { LandingHeader, LandingTitle } from '../components/landing'
|
||||||
import Button from '../components/button'
|
import Button from '../components/button'
|
||||||
|
|
||||||
export default ({ data, location }) => {
|
export default ({ data, location }) => {
|
||||||
const { nightly } = data.site.siteMetadata
|
const { nightly, legacy } = data.site.siteMetadata
|
||||||
const pageContext = { title: '404 Error', searchExclude: true, isIndex: false }
|
const pageContext = { title: '404 Error', searchExclude: true, isIndex: false }
|
||||||
return (
|
return (
|
||||||
<Template data={data} pageContext={pageContext} location={location}>
|
<Template data={data} pageContext={pageContext} location={location}>
|
||||||
<LandingHeader style={{ minHeight: 400 }} nightly={nightly}>
|
<LandingHeader style={{ minHeight: 400 }} nightly={nightly} legacy={legacy}>
|
||||||
<LandingTitle>
|
<LandingTitle>
|
||||||
Ooops, this page
|
Ooops, this page
|
||||||
<br />
|
<br />
|
||||||
|
@ -31,6 +31,7 @@ export const pageQuery = graphql`
|
||||||
site {
|
site {
|
||||||
siteMetadata {
|
siteMetadata {
|
||||||
nightly
|
nightly
|
||||||
|
legacy
|
||||||
title
|
title
|
||||||
description
|
description
|
||||||
navigation {
|
navigation {
|
||||||
|
|
|
@ -54,6 +54,11 @@
|
||||||
--color-theme-nightly-light: hsla(257, 99%, 67%, 0.06)
|
--color-theme-nightly-light: hsla(257, 99%, 67%, 0.06)
|
||||||
--color-theme-nightly-opaque: hsla(257, 99%, 67%, 0.11)
|
--color-theme-nightly-opaque: hsla(257, 99%, 67%, 0.11)
|
||||||
|
|
||||||
|
--color-theme-legacy: #6f6f6f
|
||||||
|
--color-theme-legacy-dark: hsl(257, 0%, 35%)
|
||||||
|
--color-theme-legacy-light: hsla(257, 0%, 67%, 0.06)
|
||||||
|
--color-theme-legacy-opaque: hsla(257, 0%, 67%, 0.11)
|
||||||
|
|
||||||
// Regular colors
|
// Regular colors
|
||||||
--color-back: hsl(0, 0%, 100%)
|
--color-back: hsl(0, 0%, 100%)
|
||||||
--color-front: hsl(213, 15%, 12%)
|
--color-front: hsl(213, 15%, 12%)
|
||||||
|
@ -118,6 +123,12 @@
|
||||||
--color-theme-light: var(--color-theme-nightly-light)
|
--color-theme-light: var(--color-theme-nightly-light)
|
||||||
--color-theme-opaque: var(--color-theme-nightly-opaque)
|
--color-theme-opaque: var(--color-theme-nightly-opaque)
|
||||||
|
|
||||||
|
.theme-legacy
|
||||||
|
--color-theme: var(--color-theme-legacy)
|
||||||
|
--color-theme-dark: var(--color-theme-legacy-dark)
|
||||||
|
--color-theme-light: var(--color-theme-legacy-light)
|
||||||
|
--color-theme-opaque: var(--color-theme-legacy-opaque)
|
||||||
|
|
||||||
|
|
||||||
/* Fonts */
|
/* Fonts */
|
||||||
|
|
||||||
|
|
|
@ -83,10 +83,33 @@
|
||||||
border: 2px dotted var(--color-theme)
|
border: 2px dotted var(--color-theme)
|
||||||
outline: none
|
outline: none
|
||||||
|
|
||||||
|
.has-alert
|
||||||
|
display: inline-flex
|
||||||
|
flex-flow: row nowrap
|
||||||
|
align-items: center
|
||||||
|
|
||||||
|
.alert
|
||||||
|
font-size: 1.2rem
|
||||||
|
font-family: var(--font-primary)
|
||||||
|
display: inline-block
|
||||||
|
background: var(--color-yellow-opaque)
|
||||||
|
color: var(--color-dark)
|
||||||
|
border-radius: var(--border-radius)
|
||||||
|
margin-left: var(--spacing-xs)
|
||||||
|
padding: 0.5rem
|
||||||
|
line-height: var(--line-height-xs)
|
||||||
|
text-align: center
|
||||||
|
|
||||||
@include breakpoint(max, xs)
|
@include breakpoint(max, xs)
|
||||||
.list
|
.list
|
||||||
display: none
|
display: none
|
||||||
|
|
||||||
|
.alert
|
||||||
|
display: none
|
||||||
|
|
||||||
|
.has-alert
|
||||||
|
display: inline
|
||||||
|
|
||||||
@include breakpoint(min, sm)
|
@include breakpoint(min, sm)
|
||||||
.dropdown
|
.dropdown
|
||||||
display: none
|
display: none
|
||||||
|
|
|
@ -32,7 +32,7 @@ const Docs = ({ pageContext, children }) => (
|
||||||
version,
|
version,
|
||||||
apiDetails,
|
apiDetails,
|
||||||
} = pageContext
|
} = pageContext
|
||||||
const { sidebars = [], modelsRepo, languages, nightly } = site.siteMetadata
|
const { sidebars = [], modelsRepo, languages, nightly, legacy } = site.siteMetadata
|
||||||
const isModels = section === 'models'
|
const isModels = section === 'models'
|
||||||
const sidebar = pageContext.sidebar
|
const sidebar = pageContext.sidebar
|
||||||
? { items: pageContext.sidebar }
|
? { items: pageContext.sidebar }
|
||||||
|
@ -74,7 +74,7 @@ const Docs = ({ pageContext, children }) => (
|
||||||
{sidebar && <Sidebar items={sidebar.items} pageMenu={pageMenu} slug={slug} />}
|
{sidebar && <Sidebar items={sidebar.items} pageMenu={pageMenu} slug={slug} />}
|
||||||
<Main
|
<Main
|
||||||
section={section}
|
section={section}
|
||||||
theme={nightly ? 'nightly' : theme}
|
theme={nightly ? 'nightly' : legacy ? 'legacy' : theme}
|
||||||
sidebar
|
sidebar
|
||||||
asides
|
asides
|
||||||
wrapContent
|
wrapContent
|
||||||
|
@ -138,6 +138,7 @@ const query = graphql`
|
||||||
models
|
models
|
||||||
}
|
}
|
||||||
nightly
|
nightly
|
||||||
|
legacy
|
||||||
sidebars {
|
sidebars {
|
||||||
section
|
section
|
||||||
items {
|
items {
|
||||||
|
|
|
@ -82,7 +82,7 @@ const scopeComponents = {
|
||||||
IntegrationLogo,
|
IntegrationLogo,
|
||||||
}
|
}
|
||||||
|
|
||||||
const AlertSpace = ({ nightly }) => {
|
const AlertSpace = ({ nightly, legacy }) => {
|
||||||
const isOnline = useOnlineStatus()
|
const isOnline = useOnlineStatus()
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
@ -99,6 +99,16 @@ const AlertSpace = ({ nightly }) => {
|
||||||
, not the latest <Link to="https://spacy.io">stable version</Link>.
|
, not the latest <Link to="https://spacy.io">stable version</Link>.
|
||||||
</Alert>
|
</Alert>
|
||||||
)}
|
)}
|
||||||
|
{legacy && (
|
||||||
|
<Alert
|
||||||
|
title="You're viewing the old documentation"
|
||||||
|
icon="warning"
|
||||||
|
closeOnClick={false}
|
||||||
|
>
|
||||||
|
The page reflects an older version of spaCy, not the latest{' '}
|
||||||
|
<Link to="https://spacy.io">stable release</Link>.
|
||||||
|
</Alert>
|
||||||
|
)}
|
||||||
{!isOnline && (
|
{!isOnline && (
|
||||||
<Alert title="Looks like you're offline." icon="offline" variant="warning">
|
<Alert title="Looks like you're offline." icon="offline" variant="warning">
|
||||||
But don't worry, your visited pages should be saved for you.
|
But don't worry, your visited pages should be saved for you.
|
||||||
|
@ -108,6 +118,12 @@ const AlertSpace = ({ nightly }) => {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const navAlert = (
|
||||||
|
<Link to="/usage/v3" hidden>
|
||||||
|
<strong>💥 Out now:</strong> spaCy v3.0
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
|
||||||
class Layout extends React.Component {
|
class Layout extends React.Component {
|
||||||
static defaultProps = {
|
static defaultProps = {
|
||||||
scope: {},
|
scope: {},
|
||||||
|
@ -152,7 +168,7 @@ class Layout extends React.Component {
|
||||||
const mdx = file ? file.childMdx : null
|
const mdx = file ? file.childMdx : null
|
||||||
const meta = site.siteMetadata || {}
|
const meta = site.siteMetadata || {}
|
||||||
const { title, section, sectionTitle, teaser, theme = 'blue', searchExclude } = pageContext
|
const { title, section, sectionTitle, teaser, theme = 'blue', searchExclude } = pageContext
|
||||||
const uiTheme = meta.nightly ? 'nightly' : theme
|
const uiTheme = meta.nightly ? 'nightly' : meta.legacy ? 'legacy' : theme
|
||||||
const bodyClass = classNames(`theme-${uiTheme}`, { 'search-exclude': !!searchExclude })
|
const bodyClass = classNames(`theme-${uiTheme}`, { 'search-exclude': !!searchExclude })
|
||||||
const isDocs = ['usage', 'models', 'api', 'styleguide'].includes(section)
|
const isDocs = ['usage', 'models', 'api', 'styleguide'].includes(section)
|
||||||
const content = !mdx ? null : (
|
const content = !mdx ? null : (
|
||||||
|
@ -171,12 +187,13 @@ class Layout extends React.Component {
|
||||||
bodyClass={bodyClass}
|
bodyClass={bodyClass}
|
||||||
nightly={meta.nightly}
|
nightly={meta.nightly}
|
||||||
/>
|
/>
|
||||||
<AlertSpace nightly={meta.nightly} />
|
<AlertSpace nightly={meta.nightly} legacy={meta.legacy} />
|
||||||
<Navigation
|
<Navigation
|
||||||
title={meta.title}
|
title={meta.title}
|
||||||
items={meta.navigation}
|
items={meta.navigation}
|
||||||
section={section}
|
section={section}
|
||||||
search={<Search settings={meta.docSearch} />}
|
search={<Search settings={meta.docSearch} />}
|
||||||
|
alert={meta.nightly ? null : navAlert}
|
||||||
>
|
>
|
||||||
<Progress key={location.href} />
|
<Progress key={location.href} />
|
||||||
</Navigation>
|
</Navigation>
|
||||||
|
@ -207,6 +224,7 @@ export const pageQuery = graphql`
|
||||||
site {
|
site {
|
||||||
siteMetadata {
|
siteMetadata {
|
||||||
nightly
|
nightly
|
||||||
|
legacy
|
||||||
title
|
title
|
||||||
description
|
description
|
||||||
navigation {
|
navigation {
|
||||||
|
|
|
@ -302,8 +302,8 @@ const Universe = ({ pageContext, location, mdxComponents }) => (
|
||||||
<StaticQuery
|
<StaticQuery
|
||||||
query={query}
|
query={query}
|
||||||
render={data => {
|
render={data => {
|
||||||
const { universe, nightly } = data.site.siteMetadata
|
const { universe, nightly, legacy } = data.site.siteMetadata
|
||||||
const theme = nightly ? 'nightly' : pageContext.theme
|
const theme = nightly ? 'nightly' : legacy ? 'legacy' : pageContext.theme
|
||||||
return (
|
return (
|
||||||
<UniverseContent
|
<UniverseContent
|
||||||
content={universe.resources}
|
content={universe.resources}
|
||||||
|
@ -325,6 +325,7 @@ const query = graphql`
|
||||||
site {
|
site {
|
||||||
siteMetadata {
|
siteMetadata {
|
||||||
nightly
|
nightly
|
||||||
|
legacy
|
||||||
universe {
|
universe {
|
||||||
resources {
|
resources {
|
||||||
type
|
type
|
||||||
|
|
|
@ -17,6 +17,7 @@ import { H2 } from '../components/typography'
|
||||||
import { InlineCode } from '../components/code'
|
import { InlineCode } from '../components/code'
|
||||||
import Button from '../components/button'
|
import Button from '../components/button'
|
||||||
import Link from '../components/link'
|
import Link from '../components/link'
|
||||||
|
import { YouTube } from '../components/embed'
|
||||||
|
|
||||||
import QuickstartTraining from './quickstart-training'
|
import QuickstartTraining from './quickstart-training'
|
||||||
import Project from './project'
|
import Project from './project'
|
||||||
|
@ -24,7 +25,6 @@ import Features from './features'
|
||||||
import courseImage from '../../docs/images/course.jpg'
|
import courseImage from '../../docs/images/course.jpg'
|
||||||
import prodigyImage from '../../docs/images/prodigy_overview.jpg'
|
import prodigyImage from '../../docs/images/prodigy_overview.jpg'
|
||||||
import projectsImage from '../../docs/images/projects.png'
|
import projectsImage from '../../docs/images/projects.png'
|
||||||
import irlBackground from '../images/spacy-irl.jpg'
|
|
||||||
|
|
||||||
import Benchmarks from 'usage/_benchmarks-models.md'
|
import Benchmarks from 'usage/_benchmarks-models.md'
|
||||||
|
|
||||||
|
@ -56,11 +56,11 @@ for entity in doc.ents:
|
||||||
}
|
}
|
||||||
|
|
||||||
const Landing = ({ data }) => {
|
const Landing = ({ data }) => {
|
||||||
const { nightly } = data
|
const { nightly, legacy } = data
|
||||||
const codeExample = getCodeExample(nightly)
|
const codeExample = getCodeExample(nightly)
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<LandingHeader nightly={data.nightly}>
|
<LandingHeader nightly={nightly} legacy={legacy}>
|
||||||
<LandingTitle>
|
<LandingTitle>
|
||||||
Industrial-Strength
|
Industrial-Strength
|
||||||
<br />
|
<br />
|
||||||
|
@ -206,50 +206,29 @@ const Landing = ({ data }) => {
|
||||||
</LandingGrid>
|
</LandingGrid>
|
||||||
|
|
||||||
<LandingBannerGrid>
|
<LandingBannerGrid>
|
||||||
<LandingBanner
|
<LandingBanner background="#0099dd" color="#ffffff" small>
|
||||||
title="spaCy v3.0 nightly: Transformer-based pipelines, new training system, project templates & more"
|
<YouTube id="9k_EfV7Cns0" />
|
||||||
label="Try the pre-release"
|
|
||||||
to="https://nightly.spacy.io"
|
|
||||||
button="See what's new"
|
|
||||||
background="#8758fe"
|
|
||||||
color="#ffffff"
|
|
||||||
small
|
|
||||||
>
|
|
||||||
spaCy v3.0 features all new <strong>transformer-based pipelines</strong> that
|
|
||||||
bring spaCy's accuracy right up to the current <strong>state-of-the-art</strong>
|
|
||||||
. You can use any pretrained transformer to train your own pipelines, and even
|
|
||||||
share one transformer between multiple components with{' '}
|
|
||||||
<strong>multi-task learning</strong>. Training is now fully configurable and
|
|
||||||
extensible, and you can define your own custom models using{' '}
|
|
||||||
<strong>PyTorch</strong>, <strong>TensorFlow</strong> and other frameworks. The
|
|
||||||
new spaCy projects system lets you describe whole{' '}
|
|
||||||
<strong>end-to-end workflows</strong> in a single file, giving you an easy path
|
|
||||||
from prototype to production, and making it easy to clone and adapt
|
|
||||||
best-practice projects for your own use cases.
|
|
||||||
</LandingBanner>
|
</LandingBanner>
|
||||||
|
|
||||||
<LandingBanner
|
<LandingBanner
|
||||||
title="Prodigy: Radically efficient machine teaching"
|
to="https://course.spacy.io"
|
||||||
label="From the makers of spaCy"
|
button="Start the course"
|
||||||
to="https://prodi.gy"
|
|
||||||
button="Try it out"
|
|
||||||
background="#f6f6f6"
|
background="#f6f6f6"
|
||||||
color="#000"
|
color="#252a33"
|
||||||
small
|
small
|
||||||
>
|
>
|
||||||
<Link to="https://prodi.gy" hidden>
|
<Link to="https://course.spacy.io" hidden>
|
||||||
<img
|
<img
|
||||||
src={prodigyImage}
|
src={courseImage}
|
||||||
alt="Prodigy: Radically efficient machine teaching"
|
alt="Advanced NLP with spaCy: A free online course"
|
||||||
/>
|
/>
|
||||||
</Link>
|
</Link>
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
Prodigy is an <strong>annotation tool</strong> so efficient that data scientists
|
In this <strong>free and interactive online course</strong> you’ll learn how to
|
||||||
can do the annotation themselves, enabling a new level of rapid iteration.
|
use spaCy to build advanced natural language understanding systems, using both
|
||||||
Whether you're working on entity recognition, intent detection or image
|
rule-based and machine learning approaches. It includes{' '}
|
||||||
classification, Prodigy can help you <strong>train and evaluate</strong> your
|
<strong>55 exercises</strong> featuring videos, slide decks, multiple-choice
|
||||||
models faster.
|
questions and interactive coding practice in the browser.
|
||||||
</LandingBanner>
|
</LandingBanner>
|
||||||
</LandingBannerGrid>
|
</LandingBannerGrid>
|
||||||
|
|
||||||
|
@ -295,6 +274,7 @@ const landingQuery = graphql`
|
||||||
site {
|
site {
|
||||||
siteMetadata {
|
siteMetadata {
|
||||||
nightly
|
nightly
|
||||||
|
legacy
|
||||||
repo
|
repo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ import React, { useState } from 'react'
|
||||||
import { StaticQuery, graphql } from 'gatsby'
|
import { StaticQuery, graphql } from 'gatsby'
|
||||||
|
|
||||||
import { Quickstart, QS } from '../components/quickstart'
|
import { Quickstart, QS } from '../components/quickstart'
|
||||||
import { repo } from '../components/util'
|
import { repo, DEFAULT_BRANCH } from '../components/util'
|
||||||
|
|
||||||
const DEFAULT_MODELS = ['en']
|
const DEFAULT_MODELS = ['en']
|
||||||
const DEFAULT_OPT = 'efficiency'
|
const DEFAULT_OPT = 'efficiency'
|
||||||
|
@ -166,7 +166,7 @@ const QuickstartInstall = ({ id, title }) => {
|
||||||
</QS>
|
</QS>
|
||||||
<QS package="source">
|
<QS package="source">
|
||||||
git clone https://github.com/{repo}
|
git clone https://github.com/{repo}
|
||||||
{nightly ? ` --branch develop` : ''}
|
{nightly ? ` --branch ${DEFAULT_BRANCH}` : ''}
|
||||||
</QS>
|
</QS>
|
||||||
<QS package="source">cd spaCy</QS>
|
<QS package="source">cd spaCy</QS>
|
||||||
<QS package="source" os="linux">
|
<QS package="source" os="linux">
|
||||||
|
|
Loading…
Reference in New Issue
Block a user