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

19.05.10

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

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

Скачать файл

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

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

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

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

См. также

Разное Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Абонемент ($m)

Универсальное расширение для работы с колесом баланса в любой конфигурации 1С с сохранением истории предыдущих оценок.

1 стартмани

вчера в 10:20    141    0    itsys    0    

3

Разное Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

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

10 стартмани

12.09.2024    1838    4    Kassper    9    

30

Разное Платформа 1С v8.3 1C:Бухгалтерия Россия Абонемент ($m)

Тренажер Азбуки Морзе на 1С без внешних компонент.

1 стартмани

17.04.2024    1327    2    Irwin    2    

13

Разное Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

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

1 стартмани

21.03.2024    834    1    vikhrov53    0    

3

Разное Платформа 1С v8.3 1C:Бухгалтерия Энергетика и ЖКХ Россия Бухгалтерский учет Управленческий учет Абонемент ($m)

Позволяет в одном документе собрать записи по всем коммунальным платежам и показаниям бытовых приборов. Вы не пропустите и не забудете свой коммунальный платеж. Будете точно знать ежемесячную сумму коммуналки по всем объектам собственности. Расширение предназначено для самой популярной конфигурации 1С:Бухгалтерия 8, ред. 3. Объекты расширения не имеют заимствования конфигурации. Его легко встроить в другие типовые конфигурации 1С.

1 стартмани

30.01.2024    1035    3    kwn2000    2    

6

Разное Пользователь Платформа 1С v8.3 Туризм и путешествия Россия Абонемент ($m)

Составление комплекта вещей в поездку, поход, для работы и т.п. Конфигурация разработана для платформы 1С:Предприятие 8.3 (конкретно учебная версия 8.3.13.1644, потому что более новые утомили меня своими сюрпризами).

1 стартмани

19.01.2024    7088    5    AnatolPopov    33    

38

Linux Разное Программист Пользователь Платформа 1С v8.3 Абонемент ($m)

Пример обработки для определения длительности аудиофайла в среде Linux.

1 стартмани

12.01.2024    860    0    ErAK    3    

3

Разное Взаиморасчеты Платформа 1С v8.3 Общественные и некоммерческие структуры Обучение, бизнес-тренинг, курсы Развлечения, искусство, спорт Домашние учет и финансы Управленческий учет Абонемент ($m)

Нано- (даже не микро- !) конфигурация для тех, кто выступает в роли казначея класса/группы/команды, и в чьи задачи входит сбор денег с участников за участие в каких-то мероприятиях, а потом передача собранных денег организаторам этих мероприятий.

1 стартмани

03.11.2023    1191    3    q_i    1    

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

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

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

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

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