Wikipedia Dump のような大きなテキスト ファイルに Spacy NLP (自然言語処理) パイプラインを適用しようとしています。Spacy のドキュメントの例に基づいた私のコードは次のとおりです。
from spacy.en import English
input = open("big_file.txt")
big_text= input.read()
input.close()
nlp= English()
out = nlp.pipe([unicode(big_text, errors='ignore')], n_threads=-1)
doc = out.next()
Spacy は、POS タグ付け、レマタイズなどのすべての nlp 操作を一度に適用します。これは、必要なすべてを 1 ステップで処理する NLP のパイプラインのようなものです。パイプメソッドを適用すると、パイプラインの高価な部分をマルチスレッド化することでプロセスが大幅に高速化されると考えられています。しかし、速度に大きな改善は見られず、CPU 使用率は約 25% です (4 つのコアのうちの 1 つだけが動作しています)。また、ファイルを複数のチャンクで読み取り、入力テキストのバッチを増やしてみました。
out = nlp.pipe([part1, part2, ..., part4], n_threads=-1)
それでも同じ性能。とにかくプロセスをスピードアップする方法はありますか?マルチスレッド機能を利用するには、Spacy をコンパイルして OpenMP 機能を有効にする必要があると思います。しかし、Windowsでそれを行う方法についての指示はありません.