<?php namespace App\Jobs\AutospamPipeline; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldBeUnique; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use App\Util\Lexer\Classifier; use App\AccountInterstitial; use App\Profile; use App\Status; use Illuminate\Support\Facades\Storage; use App\Services\AutospamService; class AutospamPretrainNonSpamPipeline implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public $classifier; public $accounts; /** * Create a new job instance. */ public function __construct($accounts) { $this->accounts = $accounts; $this->classifier = new Classifier(); } /** * Execute the job. */ public function handle(): void { $classifier = $this->classifier; $accounts = $this->accounts; foreach($accounts as $acct) { Status::whereNotNull('caption') ->whereScope('public') ->whereProfileId($acct->id) ->inRandomOrder() ->take(400) ->pluck('caption') ->each(function($c) use ($classifier) { $classifier->learn($c, 'ham'); }); } Storage::put(AutospamService::MODEL_HAM_PATH, $classifier->export()); AutospamUpdateCachedDataPipeline::dispatch()->delay(5); } }