私はtextblobのpythonライブラリを使用していますが、パフォーマンスが不足しています。テキスト分類のパフォーマンス
私は既にそれをシリアル化し、ループの前にロードします(pickleを使用)。
現在、テストデータは約0.1(小規模なトレーニングデータの場合)〜0.3(テストデータの場合は0.3)が必要です。私はそれをより速くする必要があります、それは可能ですか?
いくつかのコード:
# Pass trainings before loop, so we can make performance a lot better
trained_text_classifiers = load_serialized_classifier_trainings(config["ALL_CLASSIFICATORS"])
# Specify witch classifiers are used by witch classes
filter_classifiers = get_classifiers_by_resource_names(trained_text_classifiers, config["FILTER_CLASSIFICATORS"])
signal_classifiers = get_classifiers_by_resource_names(trained_text_classifiers, config["SIGNAL_CLASSIFICATORS"])
for (url, headers, body) in iter_warc_records(warc_file, **warc_filters):
start_time = time.time()
body_text = strip_html(body);
# Check if url body passess filters, if yes, index, if no, ignore
if Filter.is_valid(body_text, filter_classifiers):
print "Indexing", url.url
resp = indexer.index_document(body, body_text, signal_classifiers, url=url, headers=headers, links=bool(args.save_linkgraph_domains))
else:
print "\n"
print "Filtered out", url.url
print "\n"
resp = 0
これは、ループの魔女であるがWARCファイルの体とメタデータのそれぞれにチェックを行います。
ここに2つのテキスト分類チェックがあります。 index_documentで
if trained_text_classifiers.classify(body_text) == "True":
return True
else:
return False
2)(33'000訓練データ):
1)内のフィルタ(非常に小さい訓練データ)
prob_dist = trained_text_classifier.prob_classify(body)
prob_dist.max()
# Return the propability of spam
return round(prob_dist.prob("spam"), 2)
分類しprob_classifyを取る方法でありますパフォーマンスのツール。
は、この秒か? 0.3秒は本当に遅くなりますか?どのくらい速くそれが必要ですか? – syntonym
パーフェクトは0.02(これはtextblobの実装前のスピード)でしたが、現実的です。0.1付近のすべてが問題ありません!あなたが助けることができる場合、任意のアイデアを持って、私は奨励金を作ったり、相談料を支払うことができます! – IvRRimUm
いくつかのコードと、問題を再現する入力データの例を表示できますか? – syntonym