Счетчик слов в тексте

19.05.10

Задачи пользователя - Разное

Обработка подсчитывает частоту и долю каждого слова в тексте. Будет полезна при изучении иностранных языков.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Счетчик слов
.epf 9,38Kb
69 Скачать бесплатно

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

Соответственно помогает определить, что учить в первую очередь.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Интеграция Разное Оптовая торговля Логистика, склад и ТМЦ 1С:УТ Россия Платные (руб)

«КИТУ Мастер» — это специализированное программное решение, которое позволяет вашему бизнесу быстро, точно и в полном соответствии с законодательством формировать, регистрировать и маркировать паллеты, короба и другие логистические единицы для системы обязательной маркировки «Честный ЗНАК». С помощью данного решения устраняется необходимость рутинной ручной работы через веб-интерфейс «Честного ЗНАКа» или сложных интеграций с 1С, предоставляя вам автономный, мощный и простой в использовании инструмент

6100 руб.

21.11.2025    1162    2    0    

3

Разное 1С 8.3 Бесплатно (free)

Советы для любой ситуации в любой конфигурации.

30.12.2025    2778    71    ixijixi    11    

22

Разное 1С 8.3 1С:Бухгалтерия 3.0 1С:Розница 3.0 Россия Абонемент ($m)

Дополнительная аутентификация с использованием биометрии.

29.12.2025    1046    0    kras_71    3    

4

Разное Пользователь 1С 8.3 Абонемент ($m)

Отчёт предназначен для анализа кадрового состава с привязкой к астрологическим и культурным системам: западному зодиаку (знаки по дате рождения); китайскому зодиаку (животные-символы по году рождения). Работать должно везде, где есть справочник "Физические лица" и заполнена дата рождения.

1 стартмани

29.12.2025    721    0    VldslvSatoms    2    

6

Разное 1С:Предприятие 8 Отраслевые Туризм и путешествия Россия Абонемент ($m)

🗺 Планировщик путешествий для 1С. Простое и эффективное решение для организации поездок любой сложности

1 стартмани

13.10.2025    1447    2    Bepcuc    5    

5

Разное Пользователь 1С:Предприятие 8 Абонемент ($m)

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

1 стартмани

25.06.2025    2071    3    Sher_Han    8    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kosilov 281 19.05.10 12:15 Сейчас в теме
Могу порекомендовать использовать следующую функцию для разбивки текста на слова.
По моим тестам этот подход оказался более быстрым, чем использование СтрЗаменить.
Функция split(СимволыРазделители, строка, лимит = неопределено) экспорт
	
НоваяСтрока = Строка;
МассивСлов = новый Массив;
ИщемНачало = истина;
ТекСлово = "";

Для НомерСимволаСтроки=1 по СтрДлина(Строка) цикл
	ТекСимвол =  Сред(Строка,НомерСимволаСтроки,1);
 	если Найти(СимволыРазделители, ТекСимвол)=0  тогда
		ТекСлово = ТекСлово + ТекСимвол;
		ИщемНачало = ложь;
		продолжить;
	иначеесли ИщемНачало тогда
		МассивСлов.Добавить("");
		если МассивСлов.Количество()=лимит тогда
			возврат МассивСлов;
		конецесли;
		продолжить;
	иначе
		МассивСлов.Добавить(ТекСлово);
		если МассивСлов.Количество()=лимит тогда
			возврат МассивСлов;
		конецесли;
		ТекСлово = "";
		ИщемНачало = истина;
	конецесли;
конеццикла;
если Не ИщемНачало тогда
	МассивСлов.Добавить(ТекСлово);
конецесли;
возврат МассивСлов;
конецфункции
Показать

YVolohov; +1 Ответить
2. YVolohov 726 19.05.10 12:32 Сейчас в теме
(1) Спасибо. Постараюсь сегодня же протестировать.
3. YVolohov 726 19.05.10 13:13 Сейчас в теме
(1) Протестировал. Функция показала хороший результат, но только для небольших строк. Для больших строк СтрЗаменить() все таки работает значительно быстрее.
4. kosilov 281 19.05.10 23:37 Сейчас в теме
(3) Странно, у меня как раз наоборот получалось. При больших текстах СтрЗаменить начинала тормозить. Может специфика реализации.
А если обрабатывать большие тексты блоками?
Т.е. в функцию разбивки передавать блок плюс остаток от предыдущего блока (если он был), функция разбивки будет возвращать массив (его лучше не возвращать а просто по ссылке с ним работать) + плюс начало слова, если последние символы не разделители.
Думаю так быстрее получиться.
5. kosilov 281 20.05.10 00:06 Сейчас в теме
(3) Я емею в виду так попробовать:
Процедура ПосчитатьСлова2()
	ДлинаБлока = 20; // Здесь надо искать оптимальное значение    
	НоваяСтрока = ЭлементыФормы.Текст.ПолучитьТекст(); 
	СимволыРазделители = ",.?!:;() " + Символ(34);
	// Создаем таблицу значений
	Слова = Новый ТаблицаЗначений;
	Слова.Колонки.Добавить("Слово");
	Слова.Колонки.Добавить("Частота");
	Слова.Колонки.Добавить("Доля");
	
	 
	ИщемНачало = истина; 
	ТекСлово = ""; 
	НачПозиция = 1;
	ДлинаСтроки = СтрДлина(НоваяСтрока);
	
	Пока  НачПозиция<=ДлинаСтроки цикл
		СтрокаОбработки = Сред(НоваяСтрока, НачПозиция, ДлинаБлока);
		    СтрДлина = СтрДлина(СтрокаОбработки);
		Для НомерСимволаСтроки=1 по СтрДлина цикл 
			ТекСимвол =  Сред(СтрокаОбработки,НомерСимволаСтроки,1); 
			если Найти(СимволыРазделители, ТекСимвол)=0  тогда 
				ТекСлово = ТекСлово + ТекСимвол; 
				ИщемНачало = ложь; 
				продолжить; 
			иначеесли ИщемНачало тогда 
				//МассивСлов.Добавить(""); 
				 
				продолжить; 
			иначе 
						НовСтрока = Слова.Добавить();
						НовСтрока.Слово = НРег(ТекСлово);
						НовСтрока.Частота = 1;
						НовСтрока.Доля = 0;
  				ТекСлово = ""; 
				ИщемНачало = истина; 
			конецесли; 
		конеццикла; 
		 
		НачПозиция = НачПозиция + ДлинаБлока;
	КонецЦикла;
	если Не ИщемНачало тогда 
		НовСтрока = Слова.Добавить();
		НовСтрока.Слово = НРег(ТекСлово);
		НовСтрока.Частота = 1;
		НовСтрока.Доля = 0;
 
	конецесли;
	Слова.Свернуть("Слово","Частота,Доля");
	Слова.Сортировать("Частота Убыв, Слово Возр");
	КоличествоСлов           = Слова.Итог("Частота");
	КоличествоУникальныхСлов = Слова.Количество();
	
	// Рассчет доли каждого слова в процентах
	Для Каждого СтрокаТаблицы Из Слова Цикл
		СтрокаТаблицы.Доля = Формат(СтрокаТаблицы.Частота/КоличествоСлов * 100, "ЧЦ=10; ЧДЦ=2");
	КонецЦикла;
	
	// Выводим результат
	ПечатьРезультата(Слова);
	ЭлементыФормы.Панель.ТекущаяСтраница = ЭлементыФормы.Панель.Страницы.Анализ;

КонецПроцедуры
Показать

6. alexk-is 6550 20.05.10 00:10 Сейчас в теме
Работу блоками при обработке больших текстов можно посмотреть здесь http://www.infostart.ru/public/19856/
7. ildarovich 8051 10.10.11 22:52 Сейчас в теме
В публикации Порождающий запрос в качестве примера решена задача разбивки текста на слова и определения частоты слов непосредственно в запросе.
Для отправки сообщения требуется регистрация/авторизация