Обращение к TextToGraph API выполняется через Интернет по адресу вида:
https://t2graph.ru/api/<команда>
где <команда> - одна из команд, описанных в разделе 3. Команды TextToGraph API.
Команды и их параметры могут быть переданы методами GET или POST.
При обращении к API должны быть переданы аутентификационные параметры и, если требуется командой, дополнительные параметры. Результат возвращается в виде JSON объекта (Response-объект), различные поля которого содержат информацию о результатах отработки команды. Результат всех команд содержит поля:
Обращение к API требует предоставления аутентификационных данных – адреса электронной почты (user) и API-ключа (api_key). Эти параметры определяются при регистрации пользователя на сайте https://t2graph.ru.
Эти параметры должны передаваться всегда и не описываются ниже при описании команд.
PHP
// Функция выполняющая запрос parse методом POST и возвращающая строку в формате JSON-объекта, содержащую err_code, err_str и result.
// Аргументы функции: $API_key = API-key пользователя, $user = указанная при регистрации электронная почта, $text = текст для анализа
function parse($API_key,$user,$text){
$url="https://t2graph.ru/api/parse";
$request = curl_init();
curl_setopt($request, CURLOPT_URL,$url);
curl_setopt($request, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($request, CURLOPT_POST, 1);
curl_setopt($request, CURLOPT_POSTFIELDS,
"API_key=".$API_key."&user=".$user."&text=".$text);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
$curl_result = curl_exec($request);
curl_close ($request);
return $curl_result;
}
PHP
//Пример ниже извлекает из смысловой модели текста указанную характеристику и связанные с ней объекты или действия.
//Для строки "Менеджер обеспечивает подготовку коммерческих предложений, проведение переговоров, заключение договоров" и характеристики (prop_act) ACT_ACTOR результат работы примера будет следующий:
//обеспечивает ( 0. актор - UNKN<менеджер> 1. объект - подготовку - проведение - заключение ) - актор - UNKN<менеджер> ()
$API_key=<API_key>;
$user=<mail>;
$text="Менеджер обеспечивает подготовку коммерческих предложений, проведение переговоров, заключение договоров";
//Получаем JSON-объект с результатом анализа текста $text. Функция parse() приведена ниже
$response=parse($API_key,$user,$text);
$response_оbj=json_decode($response,false);
if ($response_оbj->err_code==0){
//Формируем массив для навигации, содержащий key - id элемента, value - JSON-объект элемента
$model_obj_arr=array();
$model_obj=$response_оbj->result->model;
foreach ($model_obj as $model_obj_elem) {
$model_obj_arr[$model_obj_elem->id]=$model_obj_elem;
}
//задаем, какая характеристика интересует - ACT_ACTOR, ACT_TIME, ACT_OBJECT и др.
$search_property="ACT_ACTOR";
//Функция prop_action выполняет поиск в модели заданных характеристик ($search_property) и связанных с ними объектов, после чего выводит результат на экран через команду echo
prop_action($model_obj_arr,$search_property);
} else {
echo "Ошибка: ".$response_оbj->err_code." - ".$response_оbj->err_str;
}
//Функция, выполняющая поиск переданной характеристики $search_property и связанных с ней объектов
function prop_action($model_obj_arr,$search_property){
foreach ($model_obj_arr as $model_obj_arr_elem){
if (isset($model_obj_arr_elem->prop_act) && isset($model_obj_arr_elem->prop_arg) && isset($model_obj_arr_elem->prop_res)) {
if ($model_obj_arr_elem->prop_act[0]==$search_property){
$arg_nm_arr=explode(":",$model_obj_arr[$model_obj_arr_elem->prop_arg[0]]->nm);
$arg_id=$model_obj_arr[$model_obj_arr_elem->prop_arg[0]]->id;
$res_nm_arr=explode(":",$model_obj_arr[$model_obj_arr_elem->prop_res[0]]->nm);
$res_id=$model_obj_arr[$model_obj_arr_elem->prop_res[0]]->id;
//Функция collectData выполняет поиск связанных с переданным id элемента ($id) характеристик и объектов
echo $arg_nm_arr[0]." (".collectData($model_obj_arr,$arg_id).")";
echo " - ".$model_obj_arr_elem->nm." - ";
echo $res_nm_arr[0]." (".collectData($model_obj_arr,$res_id).")";
echo "<br>";
}
}
}
}
//Функция, выполняющая поиск связанных с переданным id элемента ($id) характеристик и объектов
function collectData($model_obj_arr,$id){
$property_arg="";
$property_res="";
$return_arr=array();
$return_str="";
$prop_arr=array();
$prop_arr=$model_obj_arr[$id]->properties;
$name=$model_obj_arr[$id]->nm;
foreach ($prop_arr as $prop_arr_elem){
$result_data_arr=array();
$property_arr=array();
$property_name=$model_obj_arr[$prop_arr_elem]->nm;
if ($property_name != ""){
if ($model_obj_arr[$prop_arr_elem]->type=="property"){
foreach ($model_obj_arr[$prop_arr_elem]->prop_arg as $prop_id){
$property_arr[]=$prop_id;
}
foreach ($model_obj_arr[$prop_arr_elem]->prop_res as $prop_id){
$property_arr[]=$prop_id;
}
}
if ($model_obj_arr[$prop_arr_elem]->type=="action" || $model_obj_arr[$prop_arr_elem]->type=="object"){
foreach ($model_obj_arr[$prop_arr_elem]->properties as $prop_id){
$property_arr[]=$prop_id;
}
}
foreach ($property_arr as $property_arr_elem) {
$property_arr_elem_name=$model_obj_arr[$property_arr_elem]->nm;
if ($property_arr_elem_name==$name) {
$property_arr_elem_name="";
} else {
$property_arr_elem_name=explode(":",$property_arr_elem_name);
$property_arr_elem_name=$property_arr_elem_name[0];
}
$result_data_arr[]="<b>".$property_name."</b>";
$result_data_arr[]=$property_arr_elem_name;
}
$result_data_arr=array_unique($result_data_arr);
$result_data_arr=array_filter($result_data_arr);
$return_arr[]=implode(" - ",$result_data_arr);
}
}
foreach ($return_arr as $key => $return_arr_elem) {
$return_str.=" ".$key.". ".$return_arr_elem." ";
}
return $return_str;
}
// Функция выполняющая запрос методом POST и возвращающая строку в формате JSON-объекта, содержащую err_code, err_str и result.
function parse($API_key,$user,$text){
$url="https://t2graph.ru/api/parse";
$request = curl_init();
curl_setopt($request, CURLOPT_URL,$url);
curl_setopt($request, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($request, CURLOPT_POST, 1);
curl_setopt($request, CURLOPT_POSTFIELDS,
"API_key=".$API_key."&user=".$user."&text=".$text);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
$curl_result = curl_exec($request);
curl_close ($request);
return $curl_result;
}