| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Prolog > поиск по базе знаний, работа со строками |
| Автор: toshkaexe 29.4.2007, 22:43 |
| Не могу понять с чего подступиться к такой задаче. Есть база, где с фактами Код firma($MOSENERGO$). firma($GUM$). firma($tsum$). firma($Zolotoi petuschok$). firma($Moscow state university$). нужно написать правило,согласно которому определяется есть данный факт в базе или нет. Банальное сравнение я реализовал. Теперь нужно реализовать следующее, если фирма, которую я ввожу для сравнения есть в базе, но регистр у букв в названии фирмы не совпадает, то все равно считать, что такая фирма есть в базе. Так же нужно учеть возможность перестановок, то есть $Moscow state university$ и $ state MOScow university$ это одно и тоже. Подскажите, плиз. К подступиться к этой задаче. Может быть строить какой-нить лексический анализатор? |
| Автор: LuMee 30.4.2007, 10:57 | ||
Первое, что приходит на ум, чтобы реализовать такое сравнение: преобразовать базу знаний, чтобы вместо строк хранились списки строк в верхнем регистре, скажем, вот так:
Для поиска фактов входную строку точно также приводить к верхнему регистру, делать из нее список слов, а потом уже искать такой же список в базе знаний. |
| Автор: toshkaexe 30.4.2007, 11:47 | ||||
не могу понять, существует ли встроенная функция в SWI-пролог, котоая преобразует из нижнего регистра буквы в верхний? |
| Автор: LuMee 30.4.2007, 12:55 |
| Я лично не нашел. Возможно, придется писать его руками. |
| Автор: toshkaexe 1.5.2007, 22:10 |
| О, мегаспасибо!!!! |