|
Найти самую длинную повторяющуюся фразу в нескольких текстах. Ищу функцию или алгоритм | ☑ | ||
---|---|---|---|---|
0
Мимохожий Однако
07.11.19
✎
08:19
|
Есть ли готовая функция, чтобы прикрутить её в 1С или что-то близкое?
Например, есть 3 текстовых фрагмента. |
|||
1
Cyberhawk
07.11.19
✎
08:57
|
http://algolist.manual.ru/ тут поищи
|
|||
2
ads55
08.11.19
✎
10:44
|
(0) вот так можно, как то делал:
&НаКлиенте Функция РазложитьТекстВМассив(мТекст) Результат = Новый СписокЗначений; ДлинаТекста = СтрДлина(СокрЛП(мТекст)); ПозицияКонец = 0; перемТекст = мТекст; Пока ПозицияКонец <= ДлинаТекста Цикл ПозицияКонец = НайтиБлижайшуюПозициюСимвола(перемТекст, ПолучитьСимволыКонцаПредложения()); Если ПозицияКонец = 0 Тогда Прервать; КонецЕсли; Подстрока = Сред(перемТекст, 0, ПозицияКонец); перемТекст = СокрЛП(Сред(перемТекст, ПозицияКонец + 1)); Результат.Добавить(СтрДлина(Подстрока), Подстрока); КонецЦикла; Результат.СортироватьПоЗначению(НаправлениеСортировки.Убыв); Возврат Результат; КонецФункции &НаКлиенте Функция НайтиБлижайшуюПозициюСимвола(сТекст, сСимвол) спПозиций = Новый СписокЗначений; Для каждого мСмв Из сСимвол Цикл ЧислоПозиции = СтрНайти(сТекст, мСмв); Если ЧислоПозиции > 0 Тогда спПозиций.Добавить(ЧислоПозиции); КонецЕсли; КонецЦикла; спПозиций.СортироватьПоЗначению(НаправлениеСортировки.Возр); Если спПозиций.Количество() > 0 Тогда Возврат (спПозиций[0].Значение); КонецЕсли; Возврат 0; КонецФункции &НаКлиенте Функция ПолучитьСимволыКонцаПредложения() мСимволы = Новый Массив; мСимволы.Добавить(". "); мСимволы.Добавить("! "); мСимволы.Добавить("? "); мСимволы.Добавить("... "); Возврат мСимволы; КонецФункции &НаКлиенте Процедура кмСравнить(Команда) мТекст1 = ""; мТекст2 = мТекст1; мРезультат1 = РазложитьТекстВМассив(мТекст1); мРезультат2 = РазложитьТекстВМассив(мТекст2); Если мРезультат1.Количество() = 0 Или мРезультат2.Количество() = 0 Тогда Сообщить("Ничего не найдено."); Возврат; КонецЕсли; Если мРезультат2.НайтиПоЗначению(мРезультат1[0].Значение) <> Неопределено Тогда мРезультат = (мРезультат2.НайтиПоЗначению(мРезультат1[0].Значение).Представление); КонецЕсли; КонецПроцедуры |
|||
3
Ёпрст
08.11.19
✎
10:54
|
||||
4
Ёпрст
08.11.19
✎
10:56
|
(1) хороший сайт.. суфиксные деревья..ээх.
|
|||
5
Cyberhawk
08.11.19
✎
13:24
|
(4) Да, мне этот сайт как-то тоже помог натолкнуть на мысли в правильное русло) В закладках надежно схоронил.
|
|||
6
bootini
08.11.19
✎
13:31
|
МодельПрогнозаПоискПоследовательностей (PredictionModelSequentialPatterns)
:) |
|||
7
Cyberhawk
08.11.19
✎
13:58
|
(6) Хренасебе что есть в 1С, никогда не курил это
https://its.1c.ru/db/v8316doc#bookmark:dev:TI000000690 |
|||
8
Ёпрст
08.11.19
✎
14:02
|
(7) ага,
Использование в версии: Доступен, начиная с версии 8.0. какой только хрени не понапихано в платформу и никто не пользуется |
|||
9
Новиков
08.11.19
✎
14:12
|
(0)
1. Теория с некоторой реализацией: https://www.geeksforgeeks.org/suffix-tree-application-3-longest-repeated-substring/ 2. Разные реализации и дальнейшие ссылки для изучения: https://stackoverflow.com/questions/10355103/finding-the-longest-repeated-substring |
|||
10
Михаил Козлов
08.11.19
✎
15:05
|
(8) Пробовали в 2007 г. Ничего достойного внимания не выявили.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |