[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Лексический анализатор
redreem
Всем привет!

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

Что умеет:

1. Язык пока только русский, но сделать любой язык - всего лишь поменять регулярку по парсингу слов.
2. Раскладывает поток слов в некую структуру в БД MySQL myISAM.

Примечательные свойства структуры:

1. Структура рассчитана на огромные массивы текста, на небольших объемах эффективнее конечно простые регулярки.
2. Чем больший объем текста вносится в структуру, тем меньше прирост объема структуры.
3. Обширные исследования я не проводил, но теоретически при стремлении объема текста к "условной бесконечности", структура стремится к объему в 15-20 Мб. Чем менее разнообразны тексты, тем меньший рост демонстрирует структура.
4. Скорость выборок (описанных ниже) фактически не зависит от количества хранимого в структуре текста (другими словами если на 3000 слов регулярки будут быстрее делать выборку, то скажем при размере текстов в 300 000 слов скорость моих выборок останется практически такой же, а регулярки загнутся).
5. В зависимости от поставленных задач есть приличный ресурс для оптимизации алгоритма.

Что следует из структуры путем тривиальных, немногочисленных выборок (т.е. алгоритм сразу очевиден, оптимален и однозначен для нее):

1. построение словаря по алфавиту
2. построение словаря по частоте слов
3. построение словаря по условию "длина слова от ... букв до ... букв"
4. проверка существования слова в словаре
5. выборка похожих слов
6. выборка по шаблонам: например выбрать все слова, где 2-я буква такая-то, а 5-я такая-то.
7. легко комбинируются все вышеперечисленные условия выборок в комлесное условие и выборку.
8. привязка идентификации источников текста к вышеуказанным выборкам.

Какие мысли по применению:

1. Поиск по первым буквам и похожие слова.
2. Статистический анализ для сеошников например.
3. Легко сделать алгоритм построения кроссвордов по словарю.
4. Некий сервис по внешнему поиску для сайтов.

Выложил небольшую демку, без оптимизации под конкретные задачи.
Можно загрузить свой текст (UTF'ом не кормите - не занимался конвертацией кодировок) - посмотреть обработку. Ограничение на объем - так как хостинг 502 генерит от нагрузки при загрузке текста.

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

ДЕМКА



Спустя 7 минут, 55 секунд (7.02.2012 - 20:24) Игорь_Vasinsky написал(а):
Свернутый текст
вот ты чем занимался)

Спустя 19 часов, 8 минут, 30 секунд (8.02.2012 - 15:32) redreem написал(а):
Свернутый текст
угу

Спустя 17 минут, 38 секунд (8.02.2012 - 15:50) vital написал(а):
Нихрена не понял зачем оно wink.gif

Спустя 6 минут, 21 секунда (8.02.2012 - 15:56) inpost написал(а):
redreem
Посмотрел демку. Норм, лишнее то, что захватывает много чего лишнего, в том числе предлоги к,в,на , которые для анализа вообще не нужны.
Нечто подобное раньше видел, ссылку только поискать надо. Лично мне не интересно потому, что мне всё это не надо.
Тут проблема в том, что не определяет тематику и не работает в сфере тематики, а сделать такое будет крайне сложно.
Анализ нужно проводить не только с содержанием, но и сравнивать с мета-ключами и мета-заголовком, на основании этого выделять основное.

Спустя 4 часа, 30 минут, 53 секунды (8.02.2012 - 20:27) redreem написал(а):
насчет привязки к тематике - надо подумать, почему нет, и насчет сложности - не думаю что сложно. весь вопрос сводится к наличию объективной статистической базы, не более того.

Спустя 19 минут, 39 секунд (8.02.2012 - 20:47) johniek_comp написал(а):
а что я один не понимаю что такое лексический анализатор?

Спустя 48 секунд (8.02.2012 - 20:48) Игорь_Vasinsky написал(а):
анализатор лексики.

Спустя 15 минут, 46 секунд (8.02.2012 - 21:04) redreem написал(а):
johniek_comp
Игорь_Vasinsky
ну в данной сборке это пока не лексический анализатор, а просто "составитель словаря" с неким хорошим потенциалом по обработке его в дальнейшем.

Спустя 2 минуты, 2 секунды (8.02.2012 - 21:06) redreem написал(а):
vital
johniek_comp
решите простую задачу: есть текст из 100 000 слов.
нужно сделать горячий поиск (как у меня в демке), т.е. вводишь буквы, и вылазят подсказки - какие слова есть ввообще в искомом тексте, которые начинаются на введеные буквы и чуть сложнее - похожи на слова по введеным буквам.
хотябы на уровне идеи.

Редактирую:
есть не 1 текст из 100 000 слов, а 100 000 разных текстов, по 1000 - 3000 слов в тексте. smile.gif

Спустя 41 секунда (8.02.2012 - 21:06) Игорь_Vasinsky написал(а):
т.е. берёт контент, обрабатывает и собирает слова?

чёт тоже захотелось на файлах словарь сделать по буквам..

тока и жаргон и опечатки попадут и т.д.....

Спустя 2 минуты, 38 секунд (8.02.2012 - 21:09) redreem написал(а):
Игорь_Vasinsky

1. берет контент, составляет словарь.
2. выполняет запрашиваемую выборку по словарю.

Спустя 3 минуты, 21 секунда (8.02.2012 - 21:12) Игорь_Vasinsky написал(а):
словарь в БД пакуешь? или на лету?

Спустя 1 минута, 57 секунд (8.02.2012 - 21:14) redreem написал(а):
словарь в базе

Спустя 1 месяц, 11 дней, 1 час, 6 минут, 10 секунд (19.03.2012 - 22:20) Сделайте словарь рифм написал(а):
Или целую систему стихосложения

Спустя 2 часа, 33 минуты, 54 секунды (20.03.2012 - 00:54) caballero написал(а):
и чем не устпаивает SOLR или Sphinx?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.