[Ищу] Программа для удаления дублей слов, чтобы осталось первое встреченное слово

DoctorWhoAreYou

Гуру форума
Регистрация
31 Янв 2007
Сообщения
332
Реакции
98
Есть необходимость вот такого интересного удаления дублирующихся слов ( не строк).
Большинство программ ( keywordkeeper, penguin, keywash и многие другие)- удаляют только дубли строк.

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

То есть каждое слово в итоге должно лишь раз встречаться в файле ( а дубли именно слов удалены)
Буду очень признателен если подскажете, какая программа может такое делать?
Или может в какой-либо существующей программе можно задать как-то по хитрому правило для этого?
 
Если нужно разбить прямо на отдельные слова, а не фразы и потом удалить дубли слов, то в TextPipe Pro это можно сделать сам недавно такое делал, можно даже с подсчетом количества вхождений
 
несколько вариантов.
1. разбить на слова, где каждое слово с новой строки. далее в notepad++ есть плагин удаления дублей. аналогично можно поступить в excel. далее остаётся только собрать обратно в строку, расставляя пробелы. затем провести замены ' ,',' .' и т.д. чтобы убрать пробелы перед символами. тут все просто и наглядно. про способ сnotepad++ можно почитать Для просмотра ссылки Войди или Зарегистрируйся
2. аналогичным способом работает сервис от pr-cy Для просмотра ссылки Войди или Зарегистрируйся
 
Есть вариант написать небольшой скрипт:
  1. берем первое слово;
  2. пробегаемся по всему файлу на поиск дубликатов;
  3. удаляем дубликаты;
  4. берем второе слово;
  5. и т.д..
Пример скрипта на PHP не моего авторства:
PHP:
$output = [];
$voc = [];
if (($fp = fopen('input_file.csv', 'r')) !== false) {
    while (($data = fgetcsv($fp, 1000, '|')) !== false) {
        $tmp = array_diff($data, $voc);
        $voc = array_merge($voc,$tmp);                         
        $output[] = $tmp;
    }
    fclose($fp);
}
// записываем обработанные данные в новый файл
$fp = fopen('output_file.csv', 'w');
foreach ($output as $fields) {
    fputcsv($fp, $fields, '|');
}
fclose($fp);
 
ТС, нашли решение? Была аналогичная проблема. Увы, перелопатили руками
 
Проблема такой "хотелки" может быть такая: есть список запросов:

зеленый огурец
зеленый луг
зеленый лес
человек в капюшоне
зеленый человек
человек огурец

Если программа/скрипт сделает то, что вы хотите, последних двух запросов вообще не будет, т.к. полностью состоят из дублей.
 
Назад
Сверху