PHP и RSS - создать «счет» на основе описания - PullRequest
0 голосов
/ 17 ноября 2011

Надеюсь, это имеет смысл. У меня есть php-скрипт magpierss, который анализирует RSS-канал и вставляет данные в MySql, и он работает нормально. Я превращаю различные части элементов RSS в переменные, чтобы с ними было легче работать, поэтому получение фрагментов RSS-канала не представляет проблемы.

Однако моя цель состоит в том, чтобы иметь возможность фильтровать истории и импортировать только определенные. Я хочу максимально автоматизировать это, с некоторым учетом ложных срабатываний / отрицаний, потому что они будут проверены вручную после.

Что я хочу сделать, это установить список ключевых слов и «весов» для каждого слова. Таким образом, при анализе нового элемента RSS сценарий создает «оценку» на основе весов слов в поле описания.

Например:

stackoverflow = 10
very = 7
helpful = 8

Таким образом, «stackoverflow очень полезен» получит оценку 25

.

, а также «stackoverflow всегда очень полезен» все равно получит оценку 25, поскольку «is» и «always» не являются ключевыми словами с присвоенными им весами.

и "что-то случайное здесь" получит 0 баллов за отсутствие ключевых слов.

Тогда я мог бы поиграть с весами и показателями ключевых слов, чтобы определить наилучшие настройки для фильтрации RSS-канала.

Большую часть этого я могу понять. Мне просто нужно знать способ синтаксического анализа описания элемента и присвоения весов указанным ключевым словам для создания «оценки».

1 Ответ

1 голос
/ 17 ноября 2011

PHP поставляется с некоторыми полезными функциями, такими как strpos () и preg_match.Первый будет искать конкретную строку, а preg_match будет искать регулярные выражения.Вы должны создать массив ключевых слов и их весов, затем просмотреть каждое из них и проверить, содержит ли описание это значение.Если это так, вы увеличиваете счетчик веса.Вот простой пример:

$keywords = array(
   'stackoverflow' => 10,
   'very' => 7,
   'helpful' => 8
);
$description = $feed->getDescription(); // or wherever
$total_weight = 0;
foreach ($keywords as $keyword => $weight) {
  if (strpos($keyword, $description))
      $total_weight += $weight;
}
return $total_weight; // total weight of this item

Как-то так.Есть и другие способы сделать это, но это поможет вам начать.

Удачи.

...