Разработка алгоритма: взятие слов, смещение букв и формирование предложения из них - PullRequest
3 голосов
/ 01 апреля 2011

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

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

Самым большим уловом будет сопоставление слов и грамматики.Я нашел один список слов, но я не верю, что этот содержит различные формы глаголов.Я постараюсь найти больше таких, но я надеюсь, что есть альтернатива с каким-то существующим грамматическим механизмом или API. Подвох: это нужно сделать на голландском, а не на английском языке .

Фактическое формирование предложения (как в порядке слов) имеет меньшее значение.Если выходные данные представляют собой список «предложений», которые игнорируют порядок слов, я могу отфильтровать те, которые не имеют никакого смысла вручную, а затем поменять местами слова, чтобы они имели смысл.

Это будетБуду очень признателен, если кто-то с правильным набором навыков сможет направить меня в правильном направлении или помочь мне другим путем.

Включите эти умозаключения :-) С уважением

Ответы [ 2 ]

0 голосов
/ 02 апреля 2011

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

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

Во-вторых, вам нужно попробовать все возможные способы создания допустимых фраз из нового списка слов.

Первая проблема вполне выполнима. Я думаю, что даже делать это без какой-либо оптимизации все еще хорошо, хотя для его вычисления может потребоваться некоторое время (имейте в виду, что даже просто 7-буквенное слово, например, будет иметь ~ 5000 возможных перестановок, хотя, безусловно, подавляющее большинство из них не приводить к действительным словам). Вам потребуется доступ к копии словаря (только слова, а не определения), и вы, вероятно, захотите сохранить его в дереве или, по крайней мере, в хэш-наборе для быстрого доступа, поскольку вам нужно быстро проверять каждую перестановку, если это верное слово.

Вторая проблема заключается в том, что ИМО на самом деле не прогулка в парке. Я думаю, вы получите довольно большой список слов. Тогда:

  • Вам необходимо проверить возможные способы упорядочения этих слов, чтобы составить правильную фразу. Это не простая проблема. Даже для относительно короткой фразы будет много возможных структур фраз (я имею в виду расположение возможных синтаксических функций).
  • для каждого из этих аранжировок (думайте о них как о способах расстановки ящиков), будет много способов вставить ваши слова в них. (например, у каждого существительного может быть предмет). Также непросто выяснить, какую функцию может выполнять каждое слово, вам понадобится некоторая библиотека синтаксического анализа на естественном языке, чтобы помочь вам понять это.
  • Наконец, вы получите МНОЖЕСТВО возможных фраз, большинство из которых не будет иметь никакого смысла. Как проверить, имеют ли они смысл? Это совсем не тривиально :) И если вы не можете сделать это и должны вручную пройтись по всем из них, я думаю, что это довольно много работы.

Я думаю, что, возможно, был бы какой-то способ «обмануть» эти сложные проблемы, выяснив семантическую и, возможно, даже сгенерировав фразы, и просто воспользуйтесь поиском Google, чтобы помочь вам разобраться с фразами. Например, используйте функцию автозаполнения и автокоррекции, чтобы определить, правильна ли ваша фраза. Я мог видеть некоторые подходы, идущие таким образом ..

В целом, я думаю, что у вас есть проблема, которая возрастает в геометрической прогрессии (все возможные комбинации букв -> все возможные комбинации результирующих слов) и требует довольно небольшой интеллектуальной фильтрации, чтобы исключить все недействительные записи и сохранить ее от становится слишком большим. Это определенно то, что можно сделать, но это требует немало работы.

Мне любопытно услышать другие мысли по этому поводу :)

0 голосов
/ 01 апреля 2011

Есть онлайн-поиск анаграмм, который будет работать с голландским здесь .Максимально допустимая длина ввода - 35 символов (зависит от нагрузки на сервер), но вы можете связаться с ними и поговорить или подкупить их для решения проблемы с более длинным набором ввода.

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