«Деление на ноль» / NULL значения TF-IDF

Я пытаюсь протестировать пакет tf-idf из PHP-ML, я пытался использовать их код документации, но он продолжает давать мне «Деление на ноль», когда я пытаюсь использовать разные образцы (строки).

use Phpml\FeatureExtraction\TfIdfTransformer;

$samples = [
["Tareq", "Tareq", "Tareq"],
["Mohammad", "Ahmad", "Tareq"]
];

$transformer = new TfIdfTransformer($samples);
dd($transformer);

И когда я пытаюсь использовать метод преобразования из примера, предоставьте в своих документах

 $samples = [
[1, 2, 4],
[0, 2, 1]
];

$transformer = new TfIdfTransformer($samples);
$transformer->fit($samples);
dd($transformer->transform($samples));

это дает мне NULL.

Tfdftransformer.php:

            <?php

declare(strict_types=1);

namespace Phpml\FeatureExtraction;

use Phpml\Transformer;

class TfIdfTransformer implements Transformer
{
/**
* @var array
*/
private $idf = [];

public function __construct(array $samples = [])
{
if (count($samples) > 0) {
$this->fit($samples);
}
}

public function fit(array $samples, ?array $targets = null): void
{
$this->countTokensFrequency($samples);

$count = count($samples);
foreach ($this->idf as &$value) {
$value = log((float) ($count / $value), 10.0);
}
}

public function transform(array &$samples): void
{
foreach ($samples as &$sample) {
foreach ($sample as $index => &$feature) {
$feature *= $this->idf[$index];
}
}
}

private function countTokensFrequency(array $samples): void
{
$this->idf = array_fill_keys(array_keys($samples[0]), 0);

foreach ($samples as $sample) {
foreach ($sample as $index => $count) {
if ($count > 0) {
++$this->idf[$index];
}
}
}
}

}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]