spaCy-Services 项目教程
1. 项目的目录结构及介绍
spacy-services/
├── displacy/
│ ├── app.py
│ ├── requirements.txt
│ └── README.md
├── matcher/
│ ├── app.py
│ ├── requirements.txt
│ └── README.md
├── sense2vec/
│ ├── app.py
│ ├── requirements.txt
│ └── README.md
├── .gitignore
├── LICENSE
├── README.md
└── setup.py
目录结构介绍
-
displacy/: 该目录包含用于服务 spaCy 的 displacy 功能的文件。
app.py
: 启动文件。requirements.txt
: 依赖文件。README.md
: 说明文档。
-
matcher/: 该目录包含用于服务 spaCy 的 matcher 功能的文件。
app.py
: 启动文件。requirements.txt
: 依赖文件。README.md
: 说明文档。
-
sense2vec/: 该目录包含用于服务 spaCy 的 sense2vec 功能的文件。
app.py
: 启动文件。requirements.txt
: 依赖文件。README.md
: 说明文档。
-
.gitignore: Git 忽略文件。
-
LICENSE: 项目许可证。
-
README.md: 项目主说明文档。
-
setup.py: 项目安装文件。
2. 项目的启动文件介绍
displacy/app.py
from hug import route, hug
import spacy
nlp = spacy.load("en_core_web_sm")
@hug.get('/dep')
def dep(text: hug.types.text):
doc = nlp(text)
return {
"text": [token.text for token in doc],
"dep": [token.dep_ for token in doc],
"head": [token.head.text for token in doc]
}
@hug.get('/ent')
def ent(text: hug.types.text):
doc = nlp(text)
return {
"text": [ent.text for ent in doc.ents],
"label": [ent.label_ for ent in doc.ents]
}
matcher/app.py
from hug import route, hug
import spacy
nlp = spacy.load("en_core_web_sm")
@hug.get('/match')
def match(text: hug.types.text, pattern: hug.types.text):
doc = nlp(text)
matcher = spacy.matcher.Matcher(nlp.vocab)
matcher.add("Pattern", None, [pattern])
matches = matcher(doc)
return {
"matches": matches,
"tokens": [token.text for token in doc]
}
sense2vec/app.py
from hug import route, hug
import spacy
from sense2vec import Sense2VecComponent
nlp = spacy.load("en_core_web_sm")
s2v = Sense2VecComponent(nlp.vocab)
nlp.add_pipe(s2v)
@hug.get('/sense2vec')
def sense2vec(text: hug.types.text):
doc = nlp(text)
return {
"senses": [token._.s2v_key for token in doc]
}
3. 项目的配置文件介绍
requirements.txt
每个服务目录下都有一个 requirements.txt
文件,用于指定该服务的依赖包。例如:
spacy==3.0.0
hug==2.6.1
setup.py
项目的根目录下有一个 setup.py
文件,用于项目的安装和分发。
from setuptools import setup, find_packages
setup(
name="spacy-services",
version="1.0",
packages=find_packages(),
install_requires=[
"spacy==3.0.0",
"hug==2.6