2015-05-05 14 views
5

il sito della Stanford CoreNLPStanford CoreNLP Annotators Discussione sicura?

http://nlp.stanford.edu/software/corenlp.shtml

elenca decine di commentatori che funzionano come un fascino. Vorrei utilizzare le istanze degli Annotator per le attività comuni (lemmatization, tagging, analisi) per più thread. Ad esempio per dividere l'elaborazione di un grande (GB di testo) in thread o per fornire servizi Web.

Ci sono state alcune discussioni in passato relative a LocalThreads che, a mio parere, utilizzano un'istanza di un Annotator per Thread (evitando così problemi relativi alla sicurezza del thread). Questa è un'opzione ma in questo modo tutti i file e le risorse del modello devono essere caricati anche n volte.

Gli annotatori (o alcuni di essi) sono thread-safe da utilizzare? Non ho trovato nulla di conclusivo/ufficiale nelle discussioni, nei documenti o nelle faq.

risposta

9

Sì, gli annotatori sono concepiti per essere thread-safe. È possibile creare una nuova AnnotationPipeline (ad esempio, un nuovo oggetto StanfordCoreNLP), quindi molti thread possono passare annotazioni in questa pipeline senza ricaricare il modello per ciascun thread.

+0

Se utilizziamo più AnnotationPipelines, il motore elaborerà le richieste contemporaneamente o si accoderà internamente? Grazie! –

+0

Non c'è idea di un motore indipendente dalla pipeline di annotazioni. Una chiamata a 'AnnotationPipeline.annotate()' utilizzerà il thread corrente per eseguire l'annotazione. Tuttavia, è possibile che più thread richiamino '.annotate()' sulla stessa AnnotationPipeline. –

+0

Grazie per il chiarimento - (a meno che non mi fraintenda le parti interne della libreria, che è probabile;)), AnnotationPipeline elaborerà le richieste 2 .annotate() contemporaneamente? O sarà bloccata la seconda chiamata a .annotate() fino al completamento del primo? –

Problemi correlati