- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Имеется большое число словосочетаний одно, два, три, очень редко четыре слова. Словосочетания - наименования предметов с дополнениями. Например: "Шар желтый", "Куб красный блестящий" и т.д. Словосочетания часто повторяются, т.е. в анализируемом массиве много раз встречается "Эллипс красный блестящий".
В основном все словосочетания в массиве приведены к форме единственного числа именительного падежа. Но встречаются:
- формы множественного числа
- формы родительного падежа
- формы родительного падежа множественного числа
- опечатки
- другой порядок слов
Требуется придумать алгоритм, который будет понимать, что
"Эллипс красный блестящий" и "Блестящий красный эллипс" и "Эллипса красного блестящего" и даже "Эллипс красный блстящий" - всё это одно и то же.
В первом приближении хотя бы такой, который будет отлавливать первые три пункта, а опечатки и другой порядок слов не столь важно, т.к. они встречаются очень редко.
P.S. Все-таки большую часть анализируемого массива составляют словосочетания из одного слова, реже из двух, очень редко из трех, из четырех - исключительные случай. Алгоритм имеет право на небольшой процент ошибок. Алгоритм должен работать быстро.
посмотрите в сторону http://php.net/soundex http://php.net/levenshtein, http://php.net/metaphone http://php.net/similar_text
Они конечно на буржуйский язык рассчитаны, но может быть помудровав что-то и придумать можно будет.
а отсюда нельзя вытащить словоформы http://php.net/pspell ? Словари должны быть и для русского языка.
http://xpoint.ru/forums/programming/theory_algorythms/thread/36297.xhtml
Вот здесь нашёл sql с окончаниями для русского языка
Требуется придумать алгоритм, который будет понимать, что
"Эллипс красный блестящий" и "Блестящий красный эллипс" и "Эллипса красного блестящего" и даже "Эллипс красный блстящий" - всё это одно и то же.
Берём массив словоформ (нормальный вид слова и множество вариаций - падеж, число...) - см. гугль на "ispell генератор словоформ", приводим все слова словосочетания к нормальной форме, сортируем по алфавиту, вычисляем контрольную сумму или просто ищем в индексированной базе данных.
В тексте много терминов. Не уверен что генератор словоформ просечет.
Я пока думаю сделать так:
Таблица:
1. Форма инфинитива
2. число четких повторов
3. число нечетких повторов
4. число сравнений
Сравниваемое словосочетание приводим к нижнему регистру и сначала просто сравниваем с формами инфинитива, а если четкого совпадения нет - вычисляем левенштейн с формой инфинитива. Если есть нечеткое совпадение по левенштейну - значит проверяемое словосочетание - форма этого инфинитива. Если нет нечеткого совпадения - значит это новая форма инфинитива. Добавляем в таблицу. Если по какой-то форме инфинитива оказывается нечетких совпадений больше чем четких - значит форма инфинитива была выбрана неправильно - меняем. Т.к. массив словосочетаний обладает свойством, что заведомо правильных форм инфинитива минимум 90%.
Хотя сейчас попробую проверить на ниболе сомнительных случаях генератор словоформ.
Solmyr, с морфологией справиться вам поможет phpMorphy http://sourceforge.net/projects/phpmorphy/ с остальным проблем, в принципе, нет.
Берём массив словоформ (нормальный вид слова и множество вариаций - падеж, число...) - см. гугль на "ispell генератор словоформ", приводим все слова словосочетания к нормальной форме, сортируем по алфавиту, вычисляем контрольную сумму или просто ищем в индексированной базе данных.
Что-то я не очень понял, как с помощью ispell привести слово к форме инфинитива...
Что-то я не очень понял, как с помощью ispell привести слово к форме инфинитива...
ispell имеет набор правил генерации словоформ для слов. Строится обратный индекс - словоформа->нормальный вид слова.