Чистка кеев

12
S
На сайте с 12.11.2009
Offline
13
#11

та не... руками - долго как-то, да и время жалко ))


<?php
if ($argc < 2) {
die("USAGE: \n" . __FILE__ . " raw_keywords_file [new_keywords_file [min_keyword_len]]\n");
}

function doClean($keyword) {
$key_pairs = explode(' ', $keyword);
$key_pairs = preg_replace('/[^\w]|\d/', '', $key_pairs);
$keyword = implode(' ', $key_pairs);
$keyword = preg_replace('/\s{2,}/', '', $keyword);
$keyword = trim($keyword);
$keyword = strtolower($keyword);

return $keyword;
}

function skipShortKeys ($key) {
global $argv;

return (count(explode(' ', $key)) < $argv[3] ? false : true);
}

$keywords = file($argv[1]);
$to_file = $argc >= 3 ? $argv[2] : 'new_' . $argv[1];
$keywords = array_map('doClean', $keywords);
$keywords = array_unique($keywords);

if ($argc == 4) {
$keywords = array_filter($keywords, 'skipShortKeys');
}

$keywords = implode("\n", $keywords);
file_put_contents($to_file, $keywords);
?>

зы: должно работать, но не проверял )

snatch добавил 27.12.2009 в 22:40

а, ну стоп-слова ещё хотите...


<?php
<?php
$stop_words = '/зоо|дет|инцес/i'; // список "стоп-словей" через пайп
if ($argc < 2) {
die("USAGE: \n" . __FILE__ . " raw_keywords_file [new_keywords_file [min_keyword_len]]\n");
}

function skipIllegal($keyword) {
global $stop_words;

return !(preg_match($stop_words, $keyword));
}

function doClean($keyword) {
......................
$to_file = $argc >= 3 ? $argv[2] : 'new_' . $argv[1];
$keywords = array_filter($keywords, 'skipIllegal');
$keywords = array_map('doClean', $keywords);
......................

зы: в данном случае кодировка кейвёрдов cp1251

serhioz89
На сайте с 27.11.2009
Offline
23
#12

спасибо будем пробовать, просто сам в програмировании не шарю 8))

UC
На сайте с 29.06.2009
Offline
7
#13

Вот и я не шарю , могли бы в лс помочь это всё реализовать?)

Можно и не в ЛС , раз код в паблике , то реализовать можно тоже в паблике:)

Я понимаю , перед глазами готовый код , но в программировании реально ноль.

Буду очень благодарен.

DyaDya
На сайте с 11.04.2007
Offline
147
#14

Вызов файла происходит из командной строки, я так понимаю.

snatch, вы бы сразу добавили пару строчек комментов:

1. Примеры вызовов с параметрами. Сколько параметров и за что каждый отвечает.

2. Ну и намекнуть на то, что нужно для запуска php из командной строки. Денвер или просто установленный PHP?

p.s. в прочем, скриптег и так хороший. Коротенький, но может быть полезный. Практически утилита ;)

Выбирайте качественный хостинг (http://vashmaster.ru/informaciya/o_poleznyh_programmah/news83.php) и продвигайте сайты в СЕОПУЛЬТ (http://seopult.ru/ref.php?ref=72b5ed9561fe66a1). А на «SAPE» я в обиде :) Не упрекайте за очепятки, пишу вслепую (http://ergosolo.ru/) и также делаю сайты (http://www.vashmaster.ru/) ;)
S
На сайте с 12.11.2009
Offline
13
#15

дык, народ, честно, скрипт кнопался просто в окне ввода мессаджа, это к тому, что подобные скрипты далеко не приват, в нете немеряно) Именно то, что юзаю сам не выложу, так как это часть большого абстрактного парсера, где чиста кеев, просто как один из декораторов стратегий и стало быть много архитектурных зависимостей, но если достаточно и этого, вот с комментами (копи-паст в clean_keywords.php):


<?php
$stop_words = '/зоо|дет|инцес/i';
if ($argc < 2) {
die("USAGE: \n" . __FILE__ . " raw_keywords_file [new_keywords_file [min_keyword_len]]\n");
}

function skipIllegal($keyword) {
global $stop_words;

return !(preg_match($stop_words, $keyword));
}

function doClean($keyword) {
$key_pairs = explode(' ', $keyword);
$key_pairs = preg_replace('/[^\w]|\d/', '', $key_pairs);
$keyword = implode(' ', $key_pairs);
$keyword = preg_replace('/\s{2,}/', '', $keyword);
$keyword = trim($keyword);
$keyword = strtolower($keyword);

return $keyword;
}

function skipShortKeys ($key) {
global $argv;

return (count(explode(' ', $key)) < $argv[3] ? false : true);
}

$keywords = file($argv[1]);
$to_file = $argc >= 3 ? $argv[2] : 'new_' . $argv[1];
$keywords = array_filter($keywords, 'skipIllegal');
$keywords = array_map('doClean', $keywords);
$keywords = array_unique($keywords);

if ($argc == 4) {
$keywords = array_filter($keywords, 'skipShortKeys');
}


$keywords = implode("\n", $keywords);

file_put_contents($to_file, $keywords);
?>

юзать так:

в командной строке (cmd - Win, bash/sh/ даж mc если никсы ;) пишем

1й способ вызова:

php clean_keywords.php raw-keywords-file

здесь raw-keywords-file - файло (полный путь к файлу или просто его имя, если скрипт и кеми в одной и той же папке) с напарсенными кеями с вёрдстата яндекса, его кодировка - cp1251

этот способ, с одним параметром, создаст новый файл с именем new_raw-keywords-file и запихнёт в него почищенные кеи (каждая кейвёрд-фраза с новой строки)

2й способ:

php clean_keywords.php raw-keywords-file cleaned-keywords-file

создаст новый файл с именем cleaned-keywords-file и запихнёт в него почищенные кеи

3й способ:

php clean_keywords.php raw-keywords-file cleaned-keywords-file число

то же самое, что и второй способ, но так же удалит те кейвёрд-фразы, колв-во слов которых меньше параметра "число" (полезно, например, когда работаем по многокеевым НЧ)

зы: ну этот скриптик просто от фанаря накнопал, отдельного обсуждения не заслуживает, если не будет получаться - пишите просто в личку )

snatch добавил 28.12.2009 в 12:08

ээ,


$stop_words = '/зоо|дет|инцес/i';

туда пишем стоп-слова (лубая часть кея в кейвёрд-фразе, которую нужно удалить) через трубу

[Удален]
#16

ей богу извращение писать такие вещи на скриптах. после сессии выложу в паблик софтину, которая порвет все существующие аналоги по простоте и возможностях.

UC
На сайте с 29.06.2009
Offline
7
#17
vbnet:
ей богу извращение писать такие вещи на скриптах. после сессии выложу в паблик софтину, которая порвет все существующие аналоги по простоте и возможностях.

Надеюсь )Буду ждать :)

serhioz89
На сайте с 27.11.2009
Offline
23
#18
vbnet:
ей богу извращение писать такие вещи на скриптах. после сессии выложу в паблик софтину, которая порвет все существующие аналоги по простоте и возможностях.

Если не секрет когда у тебя сесия закончится?? 8)) будем ждать софтину

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий