dakata__92
Super Moderator
Здравейте, колеги, и честита нова година на всички!
Как извличате фрази от текст на различни езици? Идеята е да ги използвам за генериране на ключови думи според съдържанието на дадена страница.
В момента имам този метод, който искам да надградя с добавянето на фрази с ключово съдържание. Чудех се за някакъв вид групировка на думите по две и броене на съвпадения в текста но не знам до колко това е полезно. Ако можете да предложите и подобрение на метода например в сортирането, подреждането или извличането на ключови думи, ще съм също благодарен.
Как извличате фрази от текст на различни езици? Идеята е да ги използвам за генериране на ключови думи според съдържанието на дадена страница.
В момента имам този метод, който искам да надградя с добавянето на фрази с ключово съдържание. Чудех се за някакъв вид групировка на думите по две и броене на съвпадения в текста но не знам до колко това е полезно. Ако можете да предложите и подобрение на метода например в сортирането, подреждането или извличането на ключови думи, ще съм също благодарен.
PHP:
public function generateKeywords(
string $string,
int $minWordLength = 3,
int $maxWords = 35
): array
{
$keywords = [];
if (empty($string)) {
return $keywords;
}
$space = ' ';
$string = preg_replace('/[^\p{L}\p{N}]/u', $space, strip_tags(mb_strtolower($string)));
$string = trim(preg_replace('/\s+/u', $space, $string));
$words = explode($space, $string);
$countWords = array_count_values($words);
foreach ($words as $word) {
if (isset($keywords[$word]) || is_numeric($word)) {
continue;
}
$wordLength = mb_strlen($word);
if ($wordLength >= $minWordLength) {
$wordWeightNumber = ($countWords[$word] ?? 0) + (int)round($wordLength / $minWordLength);
$keywords[$word] = $wordWeightNumber;
}
}
if (count($keywords) == 0) {
return $keywords;
}
arsort($keywords);
return array_slice($keywords, 0, $maxWords);
}