PHP разбирает предложения и сохраняет информацию в переменных - PullRequest
0 голосов
/ 07 мая 2018

В PHP я пытаюсь создать естественную систему распознавания текста, которая может распознавать то, что вы пишете интеллектуальным способом.
Я бы хотел, чтобы оно соответствовало предложению с «шаблоном» и сохраняло некоторую информацию, например, если schedule a {scheduletype} with {person} at {time} сравнивается с Schedule a meeting with Ann at 3pm, код PHP создаст переменные $scheduletype со значением встречи, $person с Энн и $time с 3 вечера. Можно ли заставить его работать, если предложение написано в другом порядке, например, «В 3 часа дня назначить встречу с Энн»?
Я пытался найти это в Google и Stack Exchange, но, к сожалению, ничего не нашел.

Вот мой текущий код:

$pattern = 'schedule a ([a-zA-Z0-9\-\.\/\?_=&;]*) with ([a-zA-Z0-9\-\.\/\?_=&;]*) at ([a-zA-Z0-9\-\.\/\?_=&;]*)';
$content = 'shedule a meeting with Ann at 3pm';


$match = preg_match($pattern, strtolower($content) , $found);
print_r($match);

Проблема в том, что мой код ничего не присваивает $preg_match.

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете использовать этот вид именованного регулярного выражения группы захвата:

#Schedule a (?<scheduletype>\w+)\swith\s(?<person>\w+)\sat\s(?<time>\w+)#

Пример:

<?php

$regex= '#Schedule a (?<scheduletype>\w+)\swith\s(?<person>\w+)\sat\s(?<time>\w+)#';
preg_match($regex, 'Schedule a meeting with Ann at 3pm', $matches);

echo $matches['scheduletype']."\n";
echo $matches['person']."\n";
echo $matches['time']."\n";

Играйте с регулярным выражением здесь: https://regex101.com/r/6QPRsG/1/

Играйте с кодом здесь: https://3v4l.org/OBOnY

...