もちろん、これは正確に何をしようとしているのか、spaCyが抽出するものに依存します。ほとんどの場合、少なくともアプリケーションのテキストストリングを送信できるAPIエンドポイントが必要です。このAPIエンドポイントは、テキストをspaCy Doc
として解析し、アプリケーションに必要なものを返します。あなたはエンティティを抽出する必要がある場合たとえば、あなたのエンドポイントは、このような何かをするだろう:
fetch('http://your-api:8080/extract_entities', {
method: 'POST',
headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },
body: JSON.stringify({ text })
})
.then(res => res.json())
.then(json => this.setState({ entities: json.entities }))
あなたはまた、ことを確認したいと思う:
def extract_entities(text):
doc = nlp(text)
entities = [{'start': ent.start_char, 'end': ent.end_char, 'label': ent.label_}
for ent in doc.ents]
return {'entities': entities}
あなたのリアクトアプリは、このような何かを行うことができます使用しているモデルをあらかじめロードしておきます。特にspaCy v1.xを使用している場合は、モデルがかなり大きく、メモリが大量になりますが、いずれの場合でも、要求やセッションごとにモデルをロードしたくないということは間違いありません。
いくつかの追加のリソース:
- あなたのREST APIをセットアップするには:
flask
かhug
(私の個人的な好み - Pythonの3が必要ですが)。インスピレーションを得るため
- :(!残念ながら、それは現時点ではやや時代遅れだ - しかし、これはすぐに修正されます)spaCy's displaCy visualizersためのRESTサービスが含ま
spacy-services
レポ、
- あなたはロードし、サーブの異なるモデルをし、活用するために必要がある場合より良いパフォーマンスを得るには、
spacy_api
プロジェクトをチェックしてください。これはspaCyコミュニティの誰かによって開発された大きな拡張です。モデルを個別の専用プロセスでロードするのに役立ちます。しかし、Pythonの初心者であれば、これはまっすぐに進んでいくほどのものかもしれません。非常に単純なアプローチから始まり、アプリが実行されたらすぐにこれを取得するほうが良いでしょう。
可能な解決策の1つは、「フラスコ」を使用して軽量Web APIをセットアップすることです。そのAPIのエンドポイントはあなたにspacyスクリプトを呼び出します。インスピレーションのために[spacy-services](https://github.com/explosion/spacy-services)もご覧ください。 –