Какой формат входного файла я мог бы использовать для создания уравнения?

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

(K1 AND K2) OR K3 NOT "K4" OR "K5 K6"~5

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

Чтобы дать вам более точный пример (? — подстановочный знак из одного символа; * — любое количество символов)

("Game of Thrones" OR "George R. R. Martin") AND (Targaryen? OR Baratheon? NOT Lannister? OR "mother dragon?"~5)

То, что я хотел бы сделать, это предоставить скрипт или программу, которая бы взяла ключевые слова и сформировала уравнение, без необходимости писать все круглые скобки. Я думаю, что это обеспечит более простое сравнение между двумя уравнениями и уменьшит частоту появления ошибок.

Сначала я подумал о листе Excel с оператором по умолчанию «ИЛИ»:

keyword | logical operator | depth of parentheses

Но это не сработало во всех комбинациях — программа не может угадать, когда глубина между двумя строками постоянна, хотя в действительности она равна -1 +1

Я хотел бы вход это проще всего, потому что я, вероятно, отправлю его обычному пользователю. Есть ли у вас какие-либо идеи ? Затем я мог бы сделать переводчик в C ++, Java или даже VBA.

РЕДАКТИРОВАТЬ / Чтобы уточнить, я ищу формат ввода, который позволил бы конечным пользователям не писать круглые скобки и заботиться только о своих ключевых словах и отношениях между ними.

1

Решение

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

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

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

1

Другие решения

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

Как я помню из университета, мы узнали составитель а также Формальные Языки.

Вам нужно будет определить допустимые слова на вашем языке и некоторые правила, чтобы они были допустимым синтаксисом (например, скобки должны быть закрыты, слово должно сопровождаться логическим оператором и т. Д.), И, наконец, вы получите результат выполнения.

При исполнении нужно собрать стек с этими скобками. И поставить ценности, и заглянуть один.

Я надеюсь, что это поможет, и у вас есть несколько ключевых слов, где его искать.

1

Что вам нужно, это сканер и парсер.

Написание сканера и парсера самостоятельно не так сложно. Вы можете сделать простой RECURSIVE DESCENT PARSER (http://en.wikipedia.org/wiki/Recursive_descent_parser) в сто строк.

Однако вы также можете использовать инструмент компилятор-компилятор (например, lex / yacc) для генерации парсера из заданной грамматики.

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector