1

Тема: Реалізація пошуку/заміни/перетворення

З'явилась ідея написати простий код який має міняти написаний текст відповідно правилам, але як виявилось це не так просто.

Наприклад у нас є текст:

$text="Мені подобатися цей форум!";
/*Дальше має бути перевірка правил яка має
дати команду замінити "подобатися" на "подобається"
і вивести перший невірний варіант разом з вірним після 
перевірки*/

Питання яким чином це можна реалізувати в PHP і чи це взагалі можливо? А також якщо зробити декілька масивів куди записати усі слова, є якась можливість перетворити текст в простий список з ключем масивів?

Наприклад

$a1 = ['Я', 'можливості'];
$a2 = ['тестую', 'просто', 'PHP'];

$text="Я просто тестую можливості PHP";
//Має йти перевірка і видача щось в такому виді
$text1 = $a1[0].$a2[1].$a2[0].$a1[1].$a2[2];

Будь-яка інформація буде дуже цінною в вирішенні цього питання.

2

Re: Реалізація пошуку/заміни/перетворення

Якщо ви маєте інтересу в цій темі, можливо, краще було б почати з чогось по "Natural Language Processing" ?

Подякували: Overhand1

3

Re: Реалізація пошуку/заміни/перетворення

Розбити текст на масив зі слів

$text = 'Я просто тестую можливості PHP';
$result = explode(' ', $text);

print_r($result);

А правила бувають різні, умови, регулярні вираження
Проста функція для заміни str_replace(), з регулярками preg_replace()

Подякували: Overhand, plusxx, flatliner3

4

Re: Реалізація пошуку/заміни/перетворення

Якщо ж ви хочете з набору слів складати змістовні речення, то це вже глибша тема.

Подякували: Overhand, flatliner2

5

Re: Реалізація пошуку/заміни/перетворення

VTrim написав:

Якщо ж ви хочете з набору слів складати змістовні речення, то це вже глибша тема.


Так ви усе вірно зрозуміли, тобто з граматично правильною будовою. Тільки не зовсім зрозуміло яким чином можна добавити правила граматики. За допомогою кейсів чи через if та elseif, або ж зовсім другим способом? І як буде здійснюватися пошук і заміна слів які не вірно написані.

6

Re: Реалізація пошуку/заміни/перетворення

Overhand написав:

За допомогою кейсів чи через if та elseif, або ж зовсім другим способом?

Це дещо не ваш рівень поки що. Ні, ви, звісно, можете погратися на цю тему; це навіть непогана тема курсової роботи. От тільки якісних результатів я б на вашому місці не очікував. Бо ви ставите питання рівня "для інтегралів треба плюс чи мінус застосовувати?" - і плюс, і мінус, і ще багато чого. Дуже багато. Кілька років учити. Мабуть, найпростіше для вас буде:
- написати класифікатор слів по частинах мови і формах;
- запрограмувати кілька шаблонів речень;
- перевіряти речення на шаблонах.
Скажімо,
мені подобатися цей форум => (особовий займенник, 1 особа, родовий), (дієслово, інфінітив), (вказівний займенник,  називний), (іменник, називний)

Якщо у вас у шаблонах буде
(особовий займенник, родовий), (дієслово, 3 особа), (вказівний займенник,  називний), (іменник, називний)

то ви зможете встановити, що тут є лише 1 відмінність і підказати, що виправити, однак доведеться тримати величезний словник і купу шаблонів, які ще й не завжди будуть доречні.
"Тобі стрибає такий плюс" - схема та сама, але сенсу нуль.

Подякували: plusxx, flatliner, VTrim, Overhand4