Автоматическая обработка слов в строках текста.

Подсчет количества уникальных слов в строках текста.

...

...

Программная обработка слов / строк текста в программе Excel.

Любой пользователь компьютера, периодически сталкивается с проблемой обработки текста большой базы данных / или, многострочного офисного Excel документа ... В частности, интересуют вопросы, ответы на которые - нельзя получить стандартными средствами обработки текстовых данных : ...

# Как получить список уникальных / не повторяющихся значений ? ...

# Как подсчитать количество повторяющихся значений в столбце ? ...

# Как подсчитать количество повторений ? ...

# Как посчитать количество одинаковых ячеек ? ...

Ну, и - в том же духе ... Ладно, бы - это я, такой привередливый ... В крайнем случае, до 10 тысяч - могу и ручками посчитать ... Так - нет, же ... Это проблема известная, пусть и не часто встречаемая, но когда приспичит - хоть по компьютеру молотком колоти - он умнее не станет ... Я считаю, что это проблема разработчиков, напихавших всякой хрени в офисный пакет, из которой - 99% пользователей Microsoft Office - никогда не использовали встроенные функции, и понятия не имеют, как их использовать вообще ... А, те - что работают и часто применяются - порой оставляют желать лучшего в прямом смысле этого слова ... Лучшей функциональности ...

Посмотрите, сами - язык сломаешь : ДАТАКУПОНДО (Купондо - это, что за место?) ; ДЛСТР ... ; ДСТАНДОТКЛП (Дуст от клопов?) ... Это только на букву Д и таких примеров / весь список вставки функций - более 440 позиций ... Выговорить трудно - не то, что / запомнить и понять, как работает функция ... Да, при вводе - всплывают подсказки, ну - а толку ? ...

Категории функций, в основном - работают со значениями элементов / индексов (а не с их количеством), и не решают насущных задач ... Финансовые (гроши я и в уме посчитаю), статистика / логика и аналитика (тоже - пусть мозг занимается, главное - не мешать ему в этом), математические (эти - реально могут пригодиться для облегчения расчетов с цифрами) ... Текстовые ... Давайте рассмотрим внимательно ... Специально убил время, чтобы поближе узнать потенциальные возможности обработки текста ...

Задача : в колонке / столбце таблицы Excel - более 400000 (тысяч) строчек / слов - и надо подсчитать, сколько раз повторяются уникальные слова из общего массива текстовых данных ... Сделаем сортировку от А до Я, что дальше ? А, ничего, сиди / считай вручную ... Текстовые функции Excel предлагают для обработки текста : ...

UNICODE - возвращает число / код знака первого символа в тексте ...

БАТТЕКСТ - преобразование числа в текст ...

ДЛСТР - длина строки, количество знаков в строке (иногда применимо для тупого сравнения) ...

ЗАМЕНИТЬ - замена части строки текста ...

ЗНАЧЕН - преобразование текста в число ...

КОДСИМВ - возвращает число / код знака первого символа в тексте ...

ЛЕВСИМВ - возвращает число символов / знаков от начала строки ...

НАЙТИ - возвращает позицию искомой строки в тексте ...

ПЕЧСИМВ - удаление всех непечатаемых символов / знаков из текста ...

ПОВТОР - повтор текста заданное число раз ...

ПОДСТАВИТЬ - замена части строки текста ...

ПОИСК - возвращает позицию искомой строки в тексте / поиск слева направо ...

ПРАВСИМВ - возвращает число символов / знаков от конца строки ...

ПРОПИСН - конвертация всех букв текста в прописные ...

ПРОПНАЧ - конвертация первой буквы каждого слова текста в прописные, остальные - в строчные ...
ПСТР - возвращает заданное количество знаков / символов текста с указанной позиции ...

РУБЛЬ - преобразование текста в число, денежный формат ...

СЖПРОБЕЛЫ - сжать пробелы / удалить все лишние пробелы в тексте, кроме одиночных между словами ...

СИМВОЛ - возвращает символ с заданным кодом ...

СОВПАД - проверка идентичности двух строк текста ; возвращает : ИСТИНА / ЛОЖЬ

СТРОЧН - конвертация всех букв текста в строчные ...

СЦЕПИТЬ - объединение / коннектация нескольких строк текста в одну ...

Т - проверка содержимого ячейки на соответствие : текст ? или нет ...

ТЕКСТ - преобразование / форматирование числа в текст ...

ФИКСИРОВАННЫЙ - преобразование / форматирование числа в текст, с заданным числом десятичных знаков ...

ЧЗНАЧ - преобразование текста в число без учета языкового стандарта ...

ЮНИСИМВ - возвращает знак / символ Unicode, соответствующий числу / коду знака ...

Не густо ... Первое, что бросается в глаза : вернуть код первого символа ... Бред ...Зачем ? А, если - мне нужен третий / или, восьмой ? ... Если сильно не придираться - есть функция сравнения строк СОВПАД () щелкните мышью на точку / квадратик... Но, она - работает с логическими ИСТИНА / ЛОЖЬ значениями ... Как и функция ЕСЛИ () ... Языки программирования - не трогаем, VBS макросы оставим в покое, сводная таблица или диаграмма / курят бамбук - что, остается ? : ЕСЛИ, СУММ, СЧЁТ, СЧЁТЕСЛИ, СУММЕСЛИМН ... Их применение не позволило мне придумать простую и работоспособную конструкцию программного кода для подсчета вхождений / количества уникальных слов в тексте ... Поэтому я плюнул, тщательно растер, и обратил свой взор на привычные системные инструменты Windows - DOS / BAT / CMD командный процессор ...

Программная обработка слов / строк текста в скрипте процессора CMD / Windows.

Неважно, каким путем / обработкой были получены слова (построчно / в столбец) из массива текста (например, используя WinHex, шестнадцатеричный редактор - можно заменить HEX пробел 20 между словами на код 0D0A переноса строки) ... Главное, чтобы в обрабатываемом тексте не встречались специальные и служебные символы и команды, которые нарушают выполнение BAT / CMD скриптов ... Во-первых, это большинство знаков верхнего ряда клавиатуры ... Плюс - еще по мелочи ...

~ ` ! @ # $ % ^ & * ( ) - _ + = \ | / ' " ?

опасные знаки : больше / меньше, одиночная / двойная кавычка, двоеточие ...

Эти символы можно и нужно использовать при разработке CMD скриптов, но только при тщательном контроле и используя экранировку (если они применяются, как текст, а не специальные инструкции и команды) ... В случае обработки огромного массива строк (а, 400000 (тысяч) - это огромное число, в секундах равное 6666 минут, или 111 часов, или 4 с половиной дня ...) - нет возможности лично проконтролировать каждое значение, и поэтому - лучше сразу избавиться от них (в текстовом редакторе / блокноте : CTRL+ H, найти и заменить, заменить все на [пустая строка в качестве аргумента замены]) ... В разных кодировках текста / национальных алфавитах - также могут встречаться символы, расцениваемые командным процессором, как управляющие ...

Примечание : в этом месте, программисты - обычно организовывают проверку на соответствие символа - печатному и отбрасывают непечатные ... Серьезно - даже не представляю, есть ли подобная проверка в CMD ... А если еще учесть разнообразие кодировок текста ...

Не суть ... Скрипт подсчета слов / строк работает следующим образом ... В некоторой временной папке есть несколько файлов : ...

in.txt - исходный набор отсортированных слов / строк для подсчета и анализа количества уникальных словоформ ... Скрипт будет правильно работать только с предварительно отсортированным списком ... Чтобы последнее значение счетчика было записано в файл количества повторений - в файл in.txt, в самый конец - нужно добавить произвольное слово, например stopword ... Если слово / заглушку не добавлять - достигнув EOF / конца файла - цикл завершит выполнение без сработки на новое слово и последний счет счетчика не будет записан в файл (обусловлено программным кодом сценария скрипта) ...

inout.cmd - собственно / CMD скрипт, который рассмотрим ниже ...

null.txt - пустой файл ... используется для автоматической очистки выходных файлов при новом / следующем запуске скрипта ...

outnum.txt - выходной файл для счетчика повторений слова ...

outtxt.txt - выходной файл для уникального слова / строки ...

tmp.xlsx - временный файл Excel для сортировки и анализа (при необходимости) ...

Вывод результатов в два файла outnum.txt и outtxt.txt сделан для облегчения программного кода скрипта и не мешает совершать / получать успешный подсчет слов и строк в тексте ... Скрипт подсчета количества слов содержит следующие строки программного кода : ...

CHCP 1251 ... Для работы с текстом в кодировке Windows-1251 / русский ... Применяется при необходимости ...

COPY null.txt outnum.txt ...
COPY null.txt outtxt.txt ...
При каждом запуске скрипта - старые выходные файлы очищаются / заменяются (пере записываются) пустым файлом ...

SET OLD=nullword ... Это слово / заглушка - нужно для выравнивания строк в выходных файлах, чтобы слово и его значение - совпадали ... Обосновано работой логики скрипта ...

SET CNT=11 ... При установке счетчика в 0 или 1 - происходит сбой команды ECHO ... Для устойчивой работы скрипта - значение счетчика было умышленно увеличено на +10, что может быть учтено при анализе результатов ...

ECHO %OLD% перенаправляется в outtxt.txt ... Запись выравнивающего строки слова в файл слов / строк ...

SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION ... Включение режима локальной / расширенной обработки команд и отложенного расширения переменной среды для обработки переменных в режиме реального времени ... Переменные изменяют знак отображения с %x% (значение известно только после работы сценария, особенно в циклах) на !x! - значение известно сразу после расчета, в реальном времени ...

FOR /F %%I IN (in.txt) DO ( ... Запуск цикла для построчного считывания и обработки слов / строк из файла / источника ...

IF !OLD!==%%I (SET /A CNT=!CNT!+1) ... Если слово одинаковое с предыдущим / не изменилось - увеличить счетчик на +1 ...

REM ECHO Old !OLD! ; Word %%I ; Counter !CNT! ... Отладочная строка ... Можно удалить ... Раскомментировать REM строки, чтобы пошагово и наглядно увидеть, как происходит обработка входных слов и заполнение выходных файлов ...

IF NOT !OLD!==%%I ( ... Если слово изменилось - выполнить следующие действия ...

ECHO !CNT! перенаправить в outnum.txt ... Записать в файл значение счетчика для предыдущего слова ...

REM outnum.txt ... Отладочная строка ... Можно удалить ...

SET CNT=11 ... Установить / сбросить счетчик в псевдо нулевое значение ...

ECHO %%I перенаправить в outtxt.txt ... Записать новое слово в файл слов / строк ...

REM outtxt.txt ... Отладочная строка ... Можно удалить ...

SET OLD=%%I ... Установить новое слово - предыдущим / для будущего сравнения ...

) ... Завершение конструкции обработки для нового слова ...
Продолжение работы цикла построчного считывания слов из файла / источника ...

) ... Завершение цикла построчного считывания слов ... Если не было ошибок при чтении - исходный файл прочитан полностью / до конца ...

ENDLOCAL Завершение локализации рабочей среды CMD ...

EXIT ... Завершение работы интерпретатора команд / файла сценария ...

Результатом обработки слов CMD скриптингом - будут два OUT / выходных файла : со словами и с количеством / счетчиком повторений ... Чтобы иметь возможность сортировки, обработки и анализа полученного результата - можно открыть временный Excel файл и скопировать содержимое файлов в таблицу, например : ...
в столбец A - уникальные слова ...
в столбец B - значение счетчика количества повторов ...
В обоих файлах записи синхронизированы так что - проблем с копированием / вставкой быть не должно ...

Получится примерно такая Excel таблица, из которой явно видно, что слово скрипт встречалось в тексте 294 раза, а слово CMD - всего 161 раз ... Если вам нужны предельно точные значения - заполните в столбце C (ячейке C1) - формулу ...

=B1-10 ... Введенная в скрипте поправка будет вычтена из суммы подсчетов ...

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

В столбце $B будет условно / сравнительный, а в столбце $C - точный результат подсчета количества слов по строкам ...

A		B	C
nullword	11	1
скрипт		294	284
CMD		161	151
BAT		193	183
строка		189	179
слово		265	255
stopword		-10

Используя Excel - можно вертеть полученной таблицей, "как угодно" : сортировкой найти максимум и минимум, самое часто употребляемое слово по-русски или самое редкое слово по-английски ... Таким образом, используя встроенные средства BAT / CMD программирования Windows, WinHex и Excel - можно относительно легко решить задачу по подсчету уникальных вхождений слов в текст значительного объема, не утруждая себя изучением сложных языков программирования высокого уровня и решением, связанных с ними, проблем ...

август, 2019 ...

...

...

Быстрый поиск по сайту :


Популярное : ...

... | ... Найти ... | ... Тюнинг ... | ... Радио ... | ... Читать ... | ... Торрент ... | ... Погода ... | ... Компьютер ... | ... Идея ... | ... Программы ... | ... Ремонт ... | ... Авто ... | ...

Пройти тест на коронавирус - онлайн, сейчас и сразу ... Быстрый экспресс-анализ по научным симптомам и признакам ...

TechStop-Ekb.ru : познавательные развлечения, техника, технологии ... На сайте, для работы и соответствия спецификациям - используются ... Протокол HTTPS шифрования для безопасного соединения с сервером и защиты пользовательских данных ... Антивирус DrWeb для превентивной защиты пользователей от интернет угроз и вирусов ... Ресурс входит в рейтинги Рамблер Топ 100 (познавательно-развлекательные сайты) и Mail Top 100 (авто мото информация) ...

Тех Стоп Екб RU (РФ) официальный сайт, популярные темы, погода, новости, обзоры с картинками, бесплатно, актуально, без регистрации ... Смотреть утром, днем, вечером и ночью - круглосуточно онлайн ...

Меню раздела, новости и новые страницы.

Подсчет количества уникальных слов в строках текста.


© techstop-ekb.ru, 2016++, 2020.