Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Генерация всевозможных комбинаций 
V
    Опции темы
MoLeX
Дата 18.7.2013, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Добрый день.

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

На примере, есть строка "У Екатерины второй был приступ в XVIII веке.", надо получить все возможные варианты
Цитата

У Екатерины 2 был приступ в 18 веке.
У Екатерины II был приступ в XVIII веке.
У Екатерины второй был приступ в XVIII веке.
У Екатерины II был приступ в восемнадцатом веке.
У Екатерины II был приступ в восемнадцатый веке.
У Екатерины II был приступ в восемнадцатого веке.
У Екатерины II был приступ в восемнадцатому веке.
....


Вот что у меня получилось, но это совершено не то что надо( Да и действия похоже лишние
Код

<?php
$zamena[2] = array('II','второй','второго','второму','вторым','втором','вторая','вторую');
$zamena[18] = array('XVIII','восемнадцатый','восемнадцатого','восемнадцатому','восемнадцатым','восемнадцатом');


$str = "У Екатерины второй был приступ в XVIII веке.";
$zamena = array_reverse( $zamena, true );


foreach( $zamena as $key => $array )
{
    foreach( $array as $srch )
        if( ( $position = stripos( $str, $srch ) ) !== false )
            $str = substr_replace( $str, $key, $position, strlen( $srch ) );
}
echo $str . '<br />';


$dump = array_fill( 0, 20, $str );
preg_match_all( "|(\d+)|", $str, $res );
if( isset( $res[0] ) )
{
    foreach( $res[0] as $dig )
    {
        $dig = ( int )$dig;
        if( isset( $zamena[$dig] ) )
        {
            foreach( $zamena[$dig] as $k => $v )
                $dump[$k + 1] = str_replace( $dig, $v, $dump[$k + 1] );
        }
    }
}


$dump = array_unique( $dump );
print_r( $dump );




--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Fortop
Дата 18.7.2013, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Составь словарь синонимов и загоняй в сфинкс


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
MoLeX
Дата 19.7.2013, 06:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Fortop, ты просто гений. У меня же как раз сфинкс используется, а я что-то туплю по дикому(


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Sanchezzz
Дата 19.7.2013, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Можно еще слова который нужно склонять прогнать через Стеммер Портера

Это сообщение отредактировал(а) Sanchezzz - 19.7.2013, 09:44


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0816 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.