Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

10 Май 2021, 11:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2   Вниз
  Печать  
Автор Тема: Число повторений определенного слова в ячейке  (Прочитано 1100 раз)
0 Пользователей и 1 Гость смотрят эту тему.
radius
Форумчанин
***
Offline Offline

Сообщений: 58


« Ответ #15: 21 Март 2021, 15:38 »

Исходные строки - это некое описание товаров на русском языке, весьма специфическое. Как правило, слова в описании не связаны друг с другом по смыслу, точнее говоря не образуют осмысленную фразу. Стоит задача перевода на английский, с ограничением на длину строки 120 символов. Часть исходного русского текста длиннее 120 знаков. Из-за того, что русский язык велик и могуч, после перевода на английский получаются такие казусы - вместо сочетания "малышка детка младенец грудничок" получается набор "baby babe babe baby", вместо "энергетика энергия" получается "energy energy". Плюс изначально, еще в русском варианте некоторые слова могли дублироваться. Поэтому стоит задача удалить слова, повторяющиеся два и более раза, что бы поместились другие слова. В файле выше приведены реальные примеры.
Записан
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 3 263



« Ответ #16: 21 Март 2021, 15:43 »

Лови сеошника
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 545



« Ответ #17: 21 Март 2021, 16:25 »

Понято. Но "несвязный" текст в любом случае придётся "увязывать" глазами. Подсчёт повторений – это только дополнительная помощь для проверки на ошибки. Такую проверку делают и для вполне связного текста. Зачем понадобилась процедура, на которую вы дали ссылку выше (@JohnSUN)? Разве того, что здесь предложили недостаточно, если всё равно весь текст надо просмотреть? Важны ведь повторы в принципе, а не количество слов…
Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 545



« Ответ #18: 21 Март 2021, 17:17 »

@radius, предлагаю более простой вариант организации работы, если только я увидел все детали (это сложно).
Регулярное выражение:
(?i)\b(\w+)\b(?=.+\b\1\b)
Поставьте эту формулу в ячейку справа и пока не получите ноль, работайте со строкой:
=IF(ISERROR(REGEX(Текст;"(?i)\b(\w+)\b(?=.+\b\1\b)"));0;1)
"Единичка" будет сигнализировать о наличие повторов любого слова (одного или нескольких n раз) как семафор, пока вы работаете с текстом строки.

Кстати, эти "единички" вы можете отфильтровать.

UPD1:
Повтор любого "слова", в том числе и союза "и" или числа (одинакового набора цифр) в тексте, будет выдавать "единичку".

UPD2:
А формула ещё правее будет показывать первое проблемное слово. Исправите одно, появится другое (если есть такое):
=REGEX(Текст;"(?i)\b(\w+)\b(?=.+\b\1\b)")

UPD3:
Загрузил ваш пример с моей формулой.

* SUBSTITUTE.ods (10.22 Кб - загружено 4 раз.)
« Последнее редактирование: 21 Март 2021, 18:20 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
radius
Форумчанин
***
Offline Offline

Сообщений: 58


« Ответ #19: 21 Март 2021, 17:56 »

Зачем понадобилась процедура, на которую вы дали ссылку выше

Я пока в поиске наименее трудоемкого решения. И оно пока не найдено. Наверное, можно обойтись одной процедурой.
Записан
radius
Форумчанин
***
Offline Offline

Сообщений: 58


« Ответ #20: 21 Март 2021, 17:57 »

@radius, предлагаю более простой вариант организации работы

Спасибо, осмыслю позже.
Записан
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 545



« Ответ #21: 21 Март 2021, 18:01 »

Пример в сообщении #18
Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 545



« Ответ #22: 21 Март 2021, 18:47 »

Кое-что исправил...
Обратите внимание: в файле подсчитывается количество не вашего, а того слова, которое повторяется (найдено).

UPD:
процедура, на которую вы дали ссылку выше (@JohnSUN)
Функция getDblWord() извлекает только первые повторяющиеся слова с учётом регистра.
В моём примере извлекается то же самое: первое повторяющееся слово, но без учёта регистра.
B1="(?i)\b(\w+)\b(?=.+\b\1\b)"
С4=IFERROR(REGEX(A4;$B$1);"")

То есть для строки "Да, нет, да, нет." REGEX вернёт "Да".
Для строки "Да, нет, нет." REGEX вернёт "нет".

* Example02 (regex vs substitute).ods (16.41 Кб - загружено 5 раз.)
« Последнее редактирование: 22 Март 2021, 00:01 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
radius
Форумчанин
***
Offline Offline

Сообщений: 58


« Ответ #23: 22 Март 2021, 09:34 »

Огромное спасибо, на первый взгляд - это то что нужно. Позже начну работать и отпишусь.
Записан
Страниц: « 1 2   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!