2015-05-05 57 views
5

斯坦福CoreNLPStanford CoreNLP註釋器線程安全嗎?

列出了數註釋者的工作,它像一個魅力的

http://nlp.stanford.edu/software/corenlp.shtml的網站。我想使用Annotators的實例來進行多線程的常見任務(詞形,標記,解析)。例如,將大量(GB文本)的處理分解爲線程或提供Web服務。

過去有一些討論涉及到LocalThread,據我所知,它使用每個線程的Annotator的一個實例(從而避免線程安全問題)。這是一個選項,但所有模型文件和資源都必須加載n次。

Annotators(或其中的一些)是否可以線程安全地使用?在討論,文檔或常見問題中,我找不到任何決定性的/官方的。

回答

9

是的,註釋器是爲了線程安全的。您可以創建一個新的AnnotationPipeline(例如,一個新的StanfordCoreNLP對象),然後許多線程可以將註釋傳遞到此管道中,而無需爲每個線程重新加載模型。

+0

如果我們使用多個AnnotationPipelines,引擎會同時處理這些請求,還是會在內部排隊?謝謝! –

+0

獨立於註釋管道的引擎沒有概念。對'AnnotationPipeline.annotate()'的調用將使用當前線程來運行註釋。但是,您可以在同一個AnnotationPipeline上使用多個線程調用'.annotate()'。 –

+0

感謝您的澄清 - (除非我誤解了庫的內部,這很可能)),AnnotationPipeline是否會同時處理2個.annate()請求?或者第二次調用.annotate()會被阻塞,直到第一次調用完成? –