2017-10-28 6 views
0

私はJupyter Notebook内でSpacy NLPを使用していましたが、必要なスクリプトを作成しました。ウェブサイト内でSpacy NLPを使用する方法

また、自分が作成した(Reactに組み込まれている)ウェブサイトもあります。ユーザーが自分のWebサイトで選択した内容に基づいてSpacyスクリプトにデータを渡す必要があり、渡されたデータの処理が完了したらSpacy NLPスクリプトから結果を再度受け取る必要があります。

私はかなりの時間を探していて(そしてPythonを初めて使用しています)、私のウェブサイトからPython Spacyスクリプトを基本的にどのように使用/アクセスでき、またスクリプトから情報を受け取ることができるのか全く分かりません。

誰でもこの方法を提案できますか?これが愚かな質問であれば、事前にお詫び申し上げます。どうもありがとう。

+3

可能な解決策の1つは、「フラスコ」を使用して軽量Web APIをセットアップすることです。そのAPIのエンドポイントはあなたにspacyスクリプトを呼び出します。インスピレーションのために[spacy-services](https://github.com/explosion/spacy-services)もご覧ください。 –

答えて

0

もちろん、これは正確に何をしようとしているのか、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をセットアップするには:flaskhug(私の個人的な好み - Pythonの3が必要ですが)。インスピレーションを得るため
  • :(!残念ながら、それは現時点ではやや時代遅れだ - しかし、これはすぐに修正されます)spaCy's displaCy visualizersためのRESTサービスが含まspacy-servicesレポ、
  • あなたはロードし、サーブの異なるモデルをし、活用するために必要がある場合より良いパフォーマンスを得るには、spacy_apiプロジェクトをチェックしてください。これはspaCyコミュニティの誰かによって開発された大きな拡張です。モデルを個別の専用プロセスでロードするのに役立ちます。しかし、Pythonの初心者であれば、これはまっすぐに進んでいくほどのものかもしれません。非常に単純なアプローチから始まり、アプリが実行されたらすぐにこれを取得するほうが良いでしょう。
関連する問題