Я успешно вычисляю tf-idf из массива. Теперь я хочу, чтобы tf-idf вычислялся из нескольких текстовых файлов, так как у меня в каталоге несколько текстовых файлов. Может кто-нибудь, пожалуйста, измените этот код для нескольких текстовых файлов так, чтобы сначала все файлы в каталоге были прочитаны, а затем на основе этих файлов вычислено содержимое tf-idf. Ниже мой код, спасибо …
$collection = array(
1 => 'this string is a short string but a good string',
2 => 'this one isn\'t quite like the rest but is here',
3 => 'this is a different short string that\' not as short'
);
$dictionary = array();
$docCount = array();
foreach($collection as $docID => $doc) {
$terms = explode(' ', $doc);
$docCount[$docID] = count($terms);
foreach($terms as $term) {
if(!isset($dictionary[$term])) {
$dictionary[$term] = array('df' => 0, 'postings' => array());
}
if(!isset($dictionary[$term]['postings'][$docID])) {
$dictionary[$term]['df']++;
$dictionary[$term]['postings'][$docID] = array('tf' => 0);
}
$dictionary[$term]['postings'][$docID]['tf']++;
}
}
$temp = ('docCount' => $docCount, 'dictionary' => $dictionary);
Вычисление TF-IDF
$index = $temp;
$docCount = count($index['docCount']);
$entry = $index['dictionary'][$term];
foreach($entry['postings'] as $docID => $postings) {
echo "Document $docID and term $term give TFIDF: " .
($postings['tf'] * log($docCount / $entry['df'], 2));
echo "\n";
}
Посмотрите на этот ответ: Чтение всего содержимого файла из каталога — php
Там вы найдете информацию, как прочитать все содержимое файла из каталога.
С помощью этой информации вы сможете изменять свой код самостоятельно, чтобы он работал так, как ожидалось.
Других решений пока нет …