![]() 19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241
|
|
Как отличить «слово» от бессмысленного набора символов?12.03.2016, 20:45. Показов 12949. Ответов 14
Метки нет Все метки)
(
Здравствуйте.
Ребята, подскажите пожалуйста, какие инструменты (без привязки к языкам программирования) можно применить для определения того, что введенные символы являются словом, а не бессмысленным набором символов "влдатдукывта вызвтк". Перебор заготовленных ранее словарей не является решением задачи. И ещё один вопрос. Можно ли здесь использовать Теорию вероятностей?
0
|
12.03.2016, 20:45 | |
Ответы с готовыми решениями:
14
Как открыть файл в виде набора символов? Как сгенерировать случайную строку из набора символов? |
![]() 66 / 66 / 31
Регистрация: 11.03.2016
Сообщений: 252
|
|
12.03.2016, 20:58 | |
OdessaNA, просто без словарей сам вопрос не имеет особого смысла. Конечно, вы можете описать слова русского языка какими-то правилами (вот тут суффикс, вот тут приставка, это идёт за этим), но это заведомо не охватывает ВСЕ слова (как минимум заимствования) и уж точно не охватывает неологизмы — а, как я понял, вы на них и нацелены.
Так как я не специалист в лингвистике, то я бы пошёл по топорному пути — реализовал бы генетический алгоритм, который формирует новые слова из имеющихся, сравнивая результаты со словарём и отбрасывая заведомо не-слова (например, некоторые наборы букв подряд не встречаются ни в одном слове русского языка). Если на форуме есть специалисты по нейронным сетям — я думаю, им тоже есть что сказать ![]()
0
|
61 / 61 / 15
Регистрация: 18.05.2015
Сообщений: 322
|
|
12.03.2016, 20:59 | |
Если нет перебора словаря, то можно создать алгоритмы, например, проанализировав те же словари, но их результат все равно будет сугубо вероятностным, т.к. всегда можно будет придумать странное слово, которое алгоритм пропустит (т.е. похожее на настоящее, но которого нет), и есть неплохой риск отфильтровать нормальные слова, которые являются специфичными и встречаются редко.
1
|
681 / 555 / 74
Регистрация: 20.09.2014
Сообщений: 3,639
|
|
12.03.2016, 21:30 | |
Зачем какой-то интеллект для этой задачи? Интеллект будет долго обучаться. Между тем мы уже можем быстро сформулировать несколько правил.
Я бы лучше решил противоположную задачу, я бы доказывал, что набор букв - это не слово. Например, предлагаю очень простой алгоритм: если идет три и более подряд гласных или согласных - считать набор букв "несловом". Еще можно зацепиться за буквы ь, ы, ъ - они тоже плохо сочетаются с гласными и некоторыми согласными... Любой алгоритм, в том числе словарный алгоритм, не смогут достичь 100% надежности. Зато предлагаемый метод - простой как пень. Теория вероятностей (точнее лингвистическая статистика) тоже может давать неплохие оценки, на мой взгляд. Буква "ы" не может часто попадаться. А лучше конечно анализировать сочетания букв, например, "ый" может встречаться часто, чаще чем другие сочетания с буквой "ы".
1
|
Модератор
![]() 3088 / 2237 / 466
Регистрация: 26.03.2015
Сообщений: 8,770
|
|
12.03.2016, 22:10 | |
Перебор заготовленных ранее словарей является единственным возможным решением данной задачи.
Видимо, Вам нужно решение какой-то другой задачи. И не забудьте сформулировать, что в рамках Вашей задачи является "словом". Например, "эйафьятлайокудль" является словом русского языка. Добавлено через 2 минуты И "lisp", "c#" - тоже нельзя отнести к "бессмысленным наборам символов".
1
|
![]() 19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241
|
|
12.03.2016, 22:37 [ТС] | |
Да, перебор заготовленных ранее словарей - лучшее решение (тем более, что предметная область ограничивает количество возможных вариантов).
Но в том-то и заключается сложность этой задачи - вариант со словарями, как решение, не рассматривается. По вопросу формулировки. Могут быть использованы только имена существительные без специальных символов.
0
|
Модератор
![]() 3088 / 2237 / 466
Регистрация: 26.03.2015
Сообщений: 8,770
|
|
13.03.2016, 04:18 | |
Решения нет при подобной формулировке. Не существует способа (кроме сравнения со словарём) определить, какое из двух слов "клод" и "клад" (или "слон" и "слан") является словом, а какое бессмысленным набором букв.
1
|
681 / 555 / 74
Регистрация: 20.09.2014
Сообщений: 3,639
|
|
13.03.2016, 07:41 | |
Топикстартер намеренно приводил пример другого характера:
Хочу обратить внимание, предлагаемый мною простейший алгоритм четко обработал бы этот пример, но не справился бы с КЛОД-КЛАД, СЛОН-СЛАН. И еще хочу обратить внимание: что "мой" алгоритм и алгоритм, основанный на лингвистической статистике, являются разновидностью словарного алгоритма. Например, в моем алгоритме имеется "словарь" гласных и согласных букв. P.S. Я бы поставил не менее востребованную практическую задачу: определить по имени пользователя, является ли он спам-ботом? Примерный список:
1
|
Модератор
![]() 3088 / 2237 / 466
Регистрация: 26.03.2015
Сообщений: 8,770
|
|
13.03.2016, 13:57 | |
Если есть набор букв, построенный с учётом фонетики русского языка, то вероятность примерно 50%. Больше для более коротких слов, меньше для более длинных. 50% Вас устраивает?
Если Вы просто ищете наборы букв, которые выглядят и звучат как слово русского языка (и Вам всё равно, есть ли у этого набора букв смысл), то это совсем другая задача. И у этой задачи есть простое решение, основанное на статистике. Добавлено через 7 минут "клод" - это тоже бессмысленный набор символов, как и "влдатдукывта вызвтк" "клад" - это тоже слово, как и "эйафьятлайокудль" В задаче написано "бессмысленный набор символов" и ничего про "благозвучный набор символов" и т.п. Конечно, многие отвечают в стиле "автор просит одно, но мне лучше знать, что ему надо, поэтому я отвечу про другое" (и часто угадывают), но у меня нет желания гадать.
1
|
1641 / 1543 / 257
Регистрация: 19.02.2010
Сообщений: 4,122
|
|
13.03.2016, 22:28 | |
![]() Решение
Если бы задача была для достаточно длинного текста (а не слова или, максимум, короткого предложения) - то я бы предложил сравнение частоты встречаемости букв во введённом тексте и "в среднем" в текстах нужного языка. Либо - сравнение матриц переходных вероятностей (от буквы к букве) в марковских цепях.
Т.е. на вопрос из стартового поста о применении теории вероятности - да, считаете частоты или вероятности и проверяете статистические гипотезы о равенстве или различии частот либо вероятностей. А для слова - только словарь, может, с проверкой-коррекцией возможных опечаток (расстояние Левенштейна).
1
|
13.03.2016, 22:28 | ||||||
Помогаю со студенческими работами здесь
15
Написать программу, которая удаляет из данного набора символов все вхождения символов S и s Для каждой строки из заданного набора S проверить: верно ли, что она содержит как подстроку одну из строк из набора T В тексте удалить каждое слово с четным числом символов, продублировать каждое слово с нечетным числом символов
Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
|
Реляционная модель и правила Кодда: фундамент современных баз данных
Codd 05.04.2025
Конец 1960-х — начало 1970-х годов был периодом глубоких трансформаций в области хранения и обработки данных. На фоне растущих потребностей бизнеса и правительственных структур существовавшие на тот. . .
|
Асинхронные операции в Django с Celery
py-thonny 05.04.2025
Разработчики Django часто сталкиваются с проблемой, когда пользователь нажимает кнопку отправки формы и. . . ждёт. Секунды растягиваются в минуты, терпение иссякает, а интерфейс приложения замирает. . . .
|
Использование кэшей CPU: Максимальная производительность в Go
golander 05.04.2025
Разработчикам хорошо известно, что эффективность кода зависит не только от алгоритмов и структур данных, но и от того, насколько удачно программа взаимодействует с железом. Среди множества факторов,. . .
|
Создаем Telegram бот на TypeScript с grammY
run.dev 05.04.2025
Одна из его самых сильных сторон Telegram — это интеграция ботов прямо в экосистему приложения. В отличие от многих других платформ, он предоставляет разработчикам мощный API, позволяющий создавать. . .
|
Паттерны распределённых транзакций в Event-Driven микросервисах
ArchitectMsa 05.04.2025
Современные программные системы всё чаще проектируются как совокупность взаимодействующих микросервисов. И хотя такой подход даёт множество преимуществ — масштабируемость, гибкость, устойчивость к. . .
|
Работа с объемным DOM в javascript
Htext 04.04.2025
Сегодня прочитал статью тут о расходах памяти в JS, ее утечках и т. п. И вот что вспомнил из своей недавней практики. Может, кому пригодится. Хотя, в той статье об этом тоже есть.
Дело в том, что я. . .
|
Оптимизация производительности Node.js с помощью кластеризации
run.dev 04.04.2025
Масштабирование приложений для обработки тысяч и миллионов запросов — обыденная задача для многих команд. Node. js, благодаря своей асинхронной событийно-ориентированной архитектуре, стал популярной. . .
|
Управление зависимостями в Python с Poetry
py-thonny 04.04.2025
Стандартный инструмент для установки пакетов в Python - pip - прекрасно справляется с базовыми сценариями: установил пакет командой pip install и используешь его. Но что произойдёт, когда разные. . .
|
Мониторинг с Prometheus в PHP
Jason-Webb 04.04.2025
Prometheus выделяется среди других систем мониторинга своим подходом к сбору и хранению метрик. В отличие от New Relic, который использует агентный подход и отправляет данные во внешнее хранилище,. . .
|