/** * Execute the job. * * @return void */ public function handle() { $client = new Client(['base_uri' => env('SP_ENDPOINT', 'http://feedback.dev/'), 'timeout' => 30.0]); $response = $client->request('POST', 'process/', ['form_params' => ['content' => $this->feedback->content]]); $jsonData = json_decode($response->getBody()); $jsonData = collect($jsonData->data); $classifications = Category::classifications()->get()->keyBy('name'); $sentences = []; $jsonData->sortBy(function ($item, $key) use($classifications) { return $classifications->get($item->classification)->id; })->each(function ($item, $key) use($classifications, &$sentences) { $sentence = new Sentence(["content" => $item->content, "classification_id" => $classifications->get($item->classification)->id]); array_push($sentences, $sentence); }); $this->feedback->sentences()->saveMany($sentences); }
public function calculateProbabilities() { $this->load('sentences'); $sentences = $this->sentences; $grouped = $this->sentences->groupBy('classification_id'); $classifications = Category::classifications()->get()->keyBy('id'); $percentage = 1; $probabilities = $grouped->map(function ($item, $key) use($sentences, $classifications, &$percentage) { $proportion = count($item) / count($sentences); $percentage = $percentage - $proportion; if ($percentage <= 0) { $proportion = $proportion - $percentage; $percentage = 1; } return ["classification" => $classifications->get($key)->name, "probability" => $proportion]; }); $this->probabilities = $probabilities->values()->toArray(); $this->save(); }