私はSpacy NLP(Natural Language Processing)piplineをWikipedia Dumpのような大きなテキストファイルに適用しようとしています。ここに私のコードは、スペイシーのdocumentation例に基づいている:スパイシーパイプを使用したマルチスレッドNLP
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()
スペイシーは、一度POSタグ付け、Lemmatizingとなど、すべてのように、すべてのNLP操作を適用します。これは、NLPのパイプラインのようなもので、必要なものすべてをワンステップで処理します。パイプメソッドを適用すると、パイプラインの高価な部分をマルチスレッド化することで、プロセスを大幅に高速化することになっています。しかし、スピードの大幅な向上は見られず、CPU使用率は約25%です(4コアのうち1つだけが動作します)。私はまた、複数のチャンクでファイルを読み込み、入力テキストのバッチを増やそうとしました。
out = nlp.pipe([part1, part2, ..., part4], n_threads=-1)
しかし、それでも同じパフォーマンスです。プロセスをスピードアップする方法はありますか? OpenMP機能を有効にしてSpacyをコンパイルして、マルチスレッド機能を有効にする必要があると思います。しかし、Windows上でそれを行う方法に関する指示はありません。
'n_threads'とは何ですか? 0未満に設定した理由はありますか? –
使用するスレッドの数を設定します。私は-1それは自動的に指定され、それに特定の番号を強制しないことを意味すると思います –
それに正の数を設定しようとしましたか? –