Установил sphinx. начал тестировать.Подойдем ли под мои нужды,дальше посмотрим.
После проведенного тестирования Сфинкс и правда поможет,но все равно предется возвращаться к тому что делал раньше,так как сфинкс выдает релевантные запросы как поисковик, а необходимо находить точные совпадения конструкции в предложении и выдергивать их.
допустим
При введении конструкции выдает релевантные\похожие конструкции, но нужно что бы был вывод только похожих конструкций на введенную фразу.
Если уже полностью раскрывать суть задачи что нужно сделать, то я делаю анализатор переведенного текста и его автоматическую правку.
После того как иностранный текст мы переводим на русский, то логичность текста и правильность написания меняется и становиться нечитабельным. С помощью статистического подхода, а именно сравнение переведенного текста с текстом в базе, идет сравнение и неправильные конструкции в переведенном тексте, заменяются на логически правильные из базы.
За совет благодарю,но сделал другим методом, по средством удаления окончания у ключевых слов и выборкой через LIKE %% в Mysql;
Но встала другая задача.
Есть переменная $Str = 'Все выходные я провел дома'
Нужно сравнить со строкой $Str2 = "Выходные все я провел дома"
Если поменять местами слова в $Str - все выходные На выходные все и привести все в нижний регистр, то $Str = (будет равна) $Str2.
Задача стала в том, что бы подаваемую строку $Str сравнивать с предложениями и выявлять похожие конструкции со строкой $Str, но учитывая пример выше.
Допустим Мы подаем строку $Str = 'Все выходные я провел дома'
Сравниваем с предложением 'Все друзья где то были, но выходные все я провел дома '.
Очевидно что если мы подадим $Str в таком виде, то ничего не найдем. Но если мы поменяем слова местами все выходные На выходные все то найдем в тексте
'но выходные все я провел дома';
Сейчас у меня организованно так что подаваемую строку $Str я разделяю на элементы (каждое слово\символ после пробела считается за элемент),перемешиваю
[все выходные я провел дома]
[выходные все я провел дома]
[выходные я все провел дома]
[...... и так далее ]
Помещаю это в массив и дальше подаю каждый элемент массива в предложение для сравнения.
На вход подается строка типа $str = 'Абтомобильный промышленность представила'.
Строка логически не правильна 'Абтомобильный промышленность' .
Имеется база с предложениями (правильные предложения, т.е обычные предложения которые логически правильно построен).
Задача состоит в том, что бы строку $str сравнить с предложениями и если будет неявное,но самое ближайшее сходство, типа " Абтомобильный промышленность представила "~ "Абтомобильная промышленность представила" , заменить на строку из правильного предложения т.е на "Абтомобильная промышленность представила".
Сравнивать каждое предложение со строкой бессмысленно поэтому все делается в 2 этапа.
1 - этап . С помощью ключевого слова (на данном примере ключ. слово Абтомобильный) делается выборка предложений, где есть примерно идентичное слово.(сравнение делается на основе similar_text() ).
2 этап. После выборки идет сравнение строки $str и слов в предложении. Если есть неявное, но близкое сходство по similar_text(), то идет замена слова.
Вот собственно вся задача которую решаю.
Сейчас стал вопрос на Первом этапе, с выборкой предложений по ключевому слову.
Выбор ключевого слова происходит по принципу самого длинного слова в конструкции.
Сейчас все реализовано банально, т.е по средствам одного ключевого слова и прогона его по всей БД. Но чем больше становиться БД тем дольше становиться процесс поиска.
Написал сценарий по обработке текста. Если вкратце, то необходимо сравнивать ключевые слова. Но так как много сравнений то процесс затягивается. Поэтому вопрос. Если я текст перекодирую в коды символов, то это как то ускорит сравнение ? Слышал что для ускорения работы с текстом делают хэш таблицы это текста, но пока что то не могу найти как это делать.
Исходная задача сравнить строки на похожесть. Да, тут ты прав. Что то я не учел что встроенные функции уже откомпилены. Тогда задача становится распараллеливать процесс для ускорения.
Есть функция которая является "Узким местом" в сценарии. Хочу данную функцию переписать на С++ и исполнять ее уже на компилированном языке. Слышал о такой вещи как FastCGI при помощи которой можно запустить компилируемые языки в веб технологии. Просто хотел услышать совет, кто то делал что то типа такого?
API для Яндекс.Перевод я настроил. Для гугла тоже есть свой граббер перевода. А вот для translate.ru нет. Просто тематический перевод у промпта получается лучше иногда чем у гугла.