03.04.2020, 06:47 [+3 UTC]
в нашей команде: 4 325 чел. | участники онлайн: 3 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.83 (12.03.2020)
JS-v.1.35 | CSS-v.3.37

Общие новости:
28.03.2020, 20:29

Форум:
28.03.2020, 21:05

Последний вопрос:
02.04.2020, 20:19
Всего: 151914

Последний ответ:
03.04.2020, 05:08
Всего: 259919

Последняя рассылка:
02.04.2020, 21:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
03.04.2012, 18:44 »
Иванов Анатолий Николаевич
+5 Отлично! [вопрос № 185738, ответ № 270407]
18.04.2017, 09:53 »
svrvsvrv
Большое спасибо за консультацию и ссылку на фильм. [вопрос № 190896, ответ № 274918]

РАЗДЕЛ • PHP / Perl / Python

Создание программ на языках PHP, Perl и Python.

[администратор рассылки: Коцюрбенко Алексей Владимирович (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Старший модератор
Рейтинг: 849
SAW
Статус: 9-й класс
Рейтинг: 201
Асмик Гаряка
Статус: Советник
Рейтинг: 82

Перейти к консультации №:
 

Консультация онлайн # 72896
Раздел: • PHP / Perl / Python
Автор вопроса: Ling
Отправлена: 27.01.2007, 18:47
Поступило ответов: 2

Добрый день, уважаемые эксперты.
Я только начинаю работать с php и часто не могу подобрать функцию..
В двух словах задача такова - добавить xml-разметку определенных слов в текстовом документе. То есть создаю из текста одномерный массив, ищу слова, переписываю строку, вставляя xml-разметку, обратно собираю массив в строку и переписываю исходный файл.
Загвоздка в том, что нельзя искать "в лоб", ведь у одного слова много форм и все надо найти. Подскажите функцию поиска в элементе массива по сочетанию букв. Пример: по сочетнию "ход" будут (должны быть) найдены элементы массива = "пароход", "проход", ходить", походами" и п.т. Важно, чтобы возвращался именно элемент массив (или его №), а не свпадение..

Спасибо!

Состояние: Консультация закрыта

Ответ # 139575 от Cimus

Здравствуйте, Ling!
Дело в том, что для нахождения всех словоформ Вам надо прежде всего найти основу слова, а потом уже формировать всю парадигму.
Хорошая морфология не бесплатна. Из некоммерческих
проектов довольно широкое распространение получила морфология
на основе словаря Лебедева для UNIX-программы ispell подробнее тут
Предназначение программы - проверка орфографии, поэтому,
вообще говоря, морфология на базе этого словаря сильно уступает
морфологическим модулям, специально разрабатываемых для поис-
ковых систем. Но, тем не менее, этого словаря обычно хватает. Словарь состоит из двух частей:
собственно словаря и набора правил словообразования (аффикс-
файл) подробнее тут

Ряд идей по организации поиска обсуждались на форумах
PHPClub и xpoint:
http://phpclub.ru/talk/showthread.php?s=&threadid=45100
http://xpoint.ru/archive/threads/97/19558.html
http://xpoint.ru/archive/threads/37/7492.html
http://xpoint.ru/archive/topic7/62/12482.html
Некоторые весьма интересные обсуждения, статьи и ссылки
можно найти на сайте www.searchengines.ru

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


Консультировал: Cimus
Дата отправки: 28.01.2007, 00:19

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 139600 от HookEst

Здравствуйте, Ling!
Для поиска по массиву, также может пригодится функция:
preg_grep(pattern, input [, flags] )
она возвращает массив, состоящий из элементов входящего массива input, которые соответствуют заданному шаблону pattern.
(если установлен flag: PREG_GREP_INVERT - вернутся элементы, которые НЕ соответвуют pattern)
причем с PHP 4.0.4, результат, возвращаемый функцией preg_grep() использует те же индексы, что и массив исходных данных.

например:
$result=preg_grep('/ход/i',$words);

теперь $result - массив из элементов $words в которых есть 'ход' и индексы этих элементов одинаковы в обоих массивах.

Конечно, pattern может быть не обязательно таким простым, и во многих случаях использование preg_grep будет эффективнее простого перебора всего массива.
Успехов.


Консультировал: HookEst
Дата отправки: 28.01.2007, 06:06

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.16942 сек.

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.83 от 12.03.2020
Версия JS: 1.35 | Версия CSS: 3.37