Добавлено: Сб Фев 20, 2010 19:34 Заголовок сообщения: Лексический анализ Добрый день уважаемые участники форума! Столкнулся с задачей, которую не могу решить. Задача состоит в следующем: Есть таблица MySQL вида: 1 Язык PHP является современным языком разработки 2 Существует большое количество языков программирования 3 Не стоит прикосаться языком зимой к железу 4 Язык программирования весьма занимательный 5 Таня сегодня случайно прикусила язык 6 Польза программирования на языке PHP очевидна Требуется из этой таблицы извлечь повторяющиеся словосочетания. В данном случае необходимо получить результат: 1 Язык программирования 3 Нам встретились строки 2, 4, 6. Иными словами мы ищем одинаковые слова, которые встречаются в одной строке. В этих 3-х строках нам встречались 2 слова "Язык" и "Программирования"
Размер таблицы? Если тестовая, то поищите на phpclasses скрипт, который получает корень из слова. Выберите все записи, найдите одинаковые по корню. По количеству выбирайте.
Размер таблицы порядка 20 тыс. записей. Я могу найти слова. Слова одинаковые по корню. Отсортировать их по количеству повторений во всех фразах. Но я не могу найти слова, которые с ними чаще всего встречаются. Иными словами я могу найти следующее: 1 Язык 7 2 Программирование 3 Но как мне например получить таблицу 1 Язык программирования 3 2 Язык прикусила 1 3 Язык прикасаться 1 То есть как узнать какое слово чаще всего встречается со словом Язык. Проблема в том, что много строк. Требуется сделать 1 запрос и получить в результате уникальные фразы по мере их повторения в строках. Выделить ключевые фразы из всех строк. Фраза даже может содержать слова которые не вместе, а например в начале строки и в конце. Т.е. найти парные слова или тройные слова. Слова, которые связаны между собой и встречаются в строках.
Дело в том, что я значения не могу получить. Как из всех строк выделить ключевые словосочетания. Не могу понять как запрос сделать, чтобы найти связанные слова
Частота запросов? Словосочетания заданы изначально? Или необходимо найти абсолютно все? Если заданы изначально, можно попробовать так: %корень____________________________корень%
Частота запроса не более 1 в час. Cron. Строки постоянно пишутся в базу. Изначально не известно какие словосочетания самые популярные. Задача состоит в том чтобы проанализировать таблицу и найти в ней самые повторяющиеся словосочетания. После анализа результаты записать в другую таблицу, но это просто. Главное произвести анализ. Я уже неделю мучаюсь. Не могу найти решение. Никак. Как выделить словосочетания. Если абстрогироваться от mysql. Поставим задачу по другому. Есть текст. 10Кб. Как из него выделить самые повторяющиеся ключевые фразы, пусть даже без учета лексем. вот пример: http://be1.ru/stat/?url=php.net Там по середине страницы выведены Словосочетания.
1. бьешь текст в массив слов. 2. далее перебираешь все слова с учетом предыдущего и последующего по парам и пихаешь в другой массив, где суммируешь. 3. сортируешь полученный массив по значениям и получаешь рейтинг пар. 4. пьешь пиво
kuzic если у тебя есть исходные данные, то это конечно гемор. А если новые, то сразу надо это делать. Пришол набор слова, проанализировал в момент когда он пришел, положил в базу результаты.
Не, это он для примера привел. А в реале у него 20к+ записей. Видимо, нужно на части разбивать и результаты постепенно подбивать в базе.