Страница 7 из 9

Re: [Скрипт] Алиса и Википедия

Добавлено: Вт дек 11, 2018 10:59 pm
abc
Svetлая писал(а):
Пн май 07, 2018 12:54 am
СпойлерПоказать

Код: Выделить всё

$keywords = preg_split("/[\s,]+/",$original);  // помещаем запрос в массив
$totalz=count($keywords);
for($i=2;$i<$totalz;$i++) {  // i=2 отсекаем голосовую команду (шаблон). в моем случае "что такое" или "кто такой". Значение i= равна кол-ву слов в голосовой комманде.
$message_textz=$message_textz." ".$keywords[$i];
}

say("$message_textz,ожидайте,ищу по вики ",2); 

// Установка свойства объекта на основании полученной переменной
sg("Объект.Свойство",$message_textz);
context_getuser();
context_clear();
context_activate(ID);

$zap="$message_textz";
$zapurl=urlencode($zap);
$url='https://ru.wikipedia.org/w/api.php?action=opensearch&search='.$zapurl.'&prop=info&format=xml&inprop=url';
$answ=file_get_contents($url);

$data_xml = simplexml_load_string($answ); //загружаем ответ от вики в массив
$otvet=$data_xml->Section[0]->Item[0]->Description[0]; //получаем первый найденный вариант
$description = $data_xml->Section[0]->Item[0]->Description[0]; //получаем определение слова 
if (empty($description)) { //если ничего не нашлось
    say ("по прямому запросу ничего нет. уточните запрос",2);
	 
 	for ($i=1; $i<50;) { // максимальное количество выводимых найденых вариантов запросов. можно сократить.
		$description = $data_xml->Section[0]->Item[$i]->Description[0]; //получаем определение слова 
		if (!empty($description)) { //если  определение есть, продолжаем
			$otvet2=$data_xml->Section[0]->Item[$i]->Text[0]; // записываем следующий вариант запроса
//удаление спецсимволов
			$otvet2=iconv("UTF-8","CP1251//IGNORE",$otvet2);
			$otvet2=iconv("CP1251","UTF-8",$otvet2);
			$otvet2="Вариант ".$i.":".$otvet2." "; // подготавливаем для озвучивания/ вывода на экран
			say($otvet2,2);
			$i++;
		} else { 
         	say("Больше вариантов нет.",2);
         	$i=100;
        }
	}
} else {
//удаление спецсимволов
	$otvet=iconv("UTF-8","CP1251//IGNORE",$otvet);
	$otvet=iconv("CP1251","UTF-8",$otvet);
	say($otvet,2);
//Сохраняем запросы в файл. это лог. на работу скрипта не влияет. можно удалить
	$data = fopen('wiki.xml', 'a'); //открываем файл для до записи 'a' для перезаписи 'w'
	$message_textz = "\n#######\n".$message_textz." = ".$otvet."\n\n";
	fwrite($data, $message_textz); //записываем результат выполнения
	fclose($data); //закрываем
 }

Почти во всех ответах с вики есть часть ответа в скобках. Алиса не всегда читает ее так как прочитал бы человек. Например, по запросу что такое китай:
Кита́й (Кита́йская Наро́дная Респу́блика, КНР; кит. трад. 中華人民共和國, упр. 中华人民共和国, пиньинь: Zhōnghuá Rénmín Gònghéguó, палл.: Чжунхуа Жэньминь Гунхэго) — государство в Восточной Азии.

Можно обрезать часть ответа в скобках. Для этого после 46 строчки перед say($otvet,2); надо вписать $otvet = preg_replace("/\(.*\)/i", "", $otvet);
и все что идет в скобках будет обрезано и останется: Китай — государство в Восточной Азии.

Re: [Скрипт] Алиса и Википедия

Добавлено: Вт дек 11, 2018 11:15 pm
xor
abc писал(а):
Вт дек 11, 2018 10:59 pm


Почти во всех ответах с вики есть часть ответа в скобках. Алиса не всегда читает ее так как прочитал бы человек. Например, по запросу что такое китай:
Кита́й (Кита́йская Наро́дная Респу́блика, КНР; кит. трад. 中華人民共和國, упр. 中华人民共和国, пиньинь: Zhōnghuá Rénmín Gònghéguó, палл.: Чжунхуа Жэньминь Гунхэго) — государство в Восточной Азии.

Можно обрезать часть ответа в скобках. Для этого после 46 строчки перед say($otvet,2); надо вписать $otvet = preg_replace("/\(.*\)/i", "", $otvet);
и все что идет в скобках будет обрезано и останется: Китай — государство в Восточной Азии.
всё уже решено
viewtopic.php?f=23&t=2392&start=30#p82270 без доработок 12 строк кода

Re: [Скрипт] Алиса и Википедия

Добавлено: Ср дек 12, 2018 7:45 am
directman66
xor писал(а):
Вт дек 11, 2018 11:15 pm
всё уже решено
viewtopic.php?f=23&t=2392&start=30#p82270 без доработок 12 строк кода
какой код знакомый )))

по моему мой пример работает только на одно слово, а дед мороз как раз не отвечает. Хотя уже не помню.

Re: [Скрипт] Алиса и Википедия

Добавлено: Ср дек 12, 2018 7:53 am
xor
directman66 писал(а):
xor писал(а):
Вт дек 11, 2018 11:15 pm
всё уже решено
viewtopic.php?f=23&t=2392&start=30#p82270 без доработок 12 строк кода
какой код знакомый )))

по моему мой пример работает только на одно слово, а дед мороз как раз не отвечает. Хотя уже не помню.
Да, это из Вашего примера с моим избавлением от ударений и умляутов.
(Ссылка на автора присутствует))).
Работает и Дед мороз. Больно смотреть, как люди мучаются с давным-давно готовым решением

Там плохо только то, что возвращается только первое определение, если ответ многозначен.
Отправлено с моего Redmi 4X через Tapatalk




Re: [Скрипт] Алиса и Википедия

Добавлено: Ср дек 12, 2018 8:47 am
abc
xor писал(а):
Вт дек 11, 2018 11:15 pm
всё уже решено
viewtopic.php?f=23&t=2392&start=30#p82270 без доработок 12 строк кода
Этот вариант у меня почему-то не заработал

Код: Выделить всё

08:45 Алиса: 
08:45 Алиса: Запрашиваю у Wikipedia информацию о 
08:45 Admin: вики Дед Мороз
Поэтому взял вариант, о котором писал выше

Re: [Скрипт] Алиса и Википедия

Добавлено: Ср дек 12, 2018 12:23 pm
xor
abc писал(а):
xor писал(а):
Вт дек 11, 2018 11:15 pm
всё уже решено
viewtopic.php?f=23&t=2392&start=30#p82270 без доработок 12 строк кода
Этот вариант у меня почему-то не заработал

Код: Выделить всё

08:45 Алиса: 
08:45 Алиса: Запрашиваю у Wikipedia информацию о 
08:45 Admin: вики Дед Мороз
Поэтому взял вариант, о котором писал выше
Ну, не знаю, у меня ок.Изображение

Отправлено с моего Redmi 4X через Tapatalk


Re: [Скрипт] Алиса и Википедия

Добавлено: Ср дек 12, 2018 2:30 pm
abc
xor писал(а):
Ср дек 12, 2018 12:23 pm
Ну, не знаю, у меня ок.
Да, заработал, у меня была ошибка

В общем, и в вашем, и в моем варианте скобки режутся неправильно, когда в ответе они в нескольких местах. Например, в запросе США скобки встречаются 5-6 раз. В итоге Алиса получает такой сильно урезанный текст:

Код: Выделить всё

Соединённые Штаты Америки, часто кратко именуемые США или Соединёнными Штатами (англ.
Моих знаний в регулярках недостаточно, чтобы сделать все правильно.

И еще оба варианта по запросу США или сша возвращают разные ответы.

Re: [Скрипт] Алиса и Википедия

Добавлено: Ср дек 12, 2018 4:34 pm
xor
Ну, мы все знаем, что такое США)
Наворачивать искусственный разум, если в 90% случаев 12 строк дают верный результат, я считаю излишним. А если уж приспичит что-то важное узнать, можно и ручками поискать.

Отправлено с моего Redmi 4X через Tapatalk


Re: [Скрипт] Алиса и Википедия

Добавлено: Ср дек 12, 2018 5:06 pm
newz20
abc писал(а):
Ср дек 12, 2018 2:30 pm
xor писал(а):
Ср дек 12, 2018 12:23 pm
Ну, не знаю, у меня ок.
Да, заработал, у меня была ошибка

В общем, и в вашем, и в моем варианте скобки режутся неправильно, когда в ответе они в нескольких местах. Например, в запросе США скобки встречаются 5-6 раз. В итоге Алиса получает такой сильно урезанный текст:

Код: Выделить всё

Соединённые Штаты Америки, часто кратко именуемые США или Соединёнными Штатами (англ.
Моих знаний в регулярках недостаточно, чтобы сделать все правильно.

И еще оба варианта по запросу США или сша возвращают разные ответы.
Судя по коду берется раздел дескрипшн из xml, а он содержит
Соединённые Шта́ты Аме́рики (англ. United States of America), часто кратко именуемые США (англ. USA) или Соединёнными Штатами (англ.
Учитывая что последняя скобка не закрыта, то все отработало правильно.
Сам запрос тут https://ru.wikipedia.org/w/api.php?acti ... inprop=url
А полная версия https://ru.wikipedia.org/wiki/США превращается в https://ru.wikipedia.org/wiki/%D0%A1%D0 ... 0%BA%D0%B8
Так что тут либо писать ВИКИ о неверном описании, либо смириться. Описание полностью должно содержать Соединённые Шта́ты Аме́рики (англ. United States of America), часто кратко именуемые США (англ. USA) или Соединёнными Штатами (англ. United States, U.S., в просторечии — Америкой) как минимум
Проверьте на слове РЕКА там тоже есть 2 скобки и правильное описание идет.

Re: [Скрипт] Алиса и Википедия

Добавлено: Пн дек 17, 2018 8:01 pm
Svetлая
abc писал(а):
Вт дек 11, 2018 10:59 pm
Почти во всех ответах с вики есть часть ответа в скобках. Алиса не всегда читает ее так как прочитал бы человек.
xor писал(а):
Ср дек 12, 2018 12:23 pm
Ну, не знаю, у меня ок.
У меня голосовой движок от яндекса. "Деда Мороза" знает и уважает))
Из всего выложенного ранее у меня не заработало.

Думаю в формировании отказов участвует всё. Голосовой движок (именно он отвечает за распознание, интонацию, ударение), сборка сервера (изначальная! месяц назад поставила на новом железе свежую. простой перенос бакапом не помог) и ... ))

Так что, пробуем несколько предложенных вариантов и допиливаем если что ;)