Страница 1 из 3

[Модуль] phpMorphy (morphy)

Добавлено: Вт май 17, 2016 5:00 pm
sergejey
В маркет дополнений добавился пакет поддержки библиотеки phpMorphy -- библиотека морфологического анализа (включены словари русского и английского языков).

Из прикладого использование на данный момент релизовано использование этой библиотеки в шаблонах поведения. Если этот модуль установлен, то в шаблонах поведения появляется новая галочка в настройках шаблона:

Изображение

Как оно работает

При включении этой галочки, совпадение шаблона проверяется не только по исходному тексту, но и по тексту состоящему из базовых форм каждого из слов. Если у какого-то из слов несколько базовых форм, то в поиске учавствуют фразы со всеми комбинациями этого слова.

Покажу на примере. Имеем шаблон: "закрыть дверь". В обычном случае от пользователя требуется точное совпадение формулировки (использование регулярных выражений для подмены окончаний здесь не рассматриваем). В случае же включения галочки использования морфологии, пользователь может сказать "закрой двери" и система всё равно найдёт совпадение по шаблону "закрыть дверь" (слово "закрой" преобразуется в базовую форму "закрыть", а "двери" в "дверь").

В качестве бонуса, при использовании морфологии в коде обработки шаблона на ряду с массивом $matches становится доступен массив $bases, который представляет собой базовые формы слов, входящих в $matches.

P.S. Базовые формы слов можно получить на демо-странице проекта phpMorphy

Re: Библиотека phpMorphy

Добавлено: Ср май 18, 2016 10:08 pm
Smolalex
Сергей, не получается установить из маркета. После нажатия кнопки "Добавить" что то исполняется, но также остается кнопка "Добавить" и модуль отсутствует.

Re: Библиотека phpMorphy

Добавлено: Ср май 18, 2016 10:24 pm
sergejey
Smolalex писал(а):Сергей, не получается установить из маркета. После нажатия кнопки "Добавить" что то исполняется, но также остается кнопка "Добавить" и модуль отсутствует.
Похоже он всё-таки устанавливается, но в виду того, что на самом деле это не модуль в обычном понимании, а библиотека, то система маркета не распознаёт то, что он устанавливается. В общем, надо посмотреть появляется ли описанная галочка в модуле шаблонов поведения и папка с файлами по пути /lib/phpmorphy/

Re: Библиотека phpMorphy

Добавлено: Чт май 19, 2016 1:45 am
m-malva
sergejey писал(а): В качестве бонуса, при использовании морфологии в коде обработки шаблона на ряду с массивом $matches становится доступен массив $bases, который представляет собой базовые формы слов, входящих в $matches.
А можно чтоб в качестве бонуса $bases был доступен в
По истечении времени выполнить: ?
Снимок.PNG
Снимок.PNG (14.95 КБ) 11860 просмотров

Re: Библиотека phpMorphy

Добавлено: Чт май 19, 2016 10:33 am
m-malva
у меня в голове:
Хорошо бы проводить разбор при выходе в «неизвестная команда»
Упала фраза в «неизвестная команда»
Нашли глагол, «базовую форму» закинули в словарь схожих действий
Нашли существительное , закинули в словарь синонимов
Сравнили с шаблонами, нашли ветку где встречается «действие» и «существительное»

Re: Библиотека phpMorphy

Добавлено: Чт май 19, 2016 11:39 am
Smolalex
sergejey писал(а):
Smolalex писал(а):Сергей, не получается установить из маркета. После нажатия кнопки "Добавить" что то исполняется, но также остается кнопка "Добавить" и модуль отсутствует.
Похоже он всё-таки устанавливается, но в виду того, что на самом деле это не модуль в обычном понимании, а библиотека, то система маркета не распознаёт то, что он устанавливается. В общем, надо посмотреть появляется ли описанная галочка в модуле шаблонов поведения и папка с файлами по пути /lib/phpmorphy/
Да , спасибо! всё установилось

Re: Библиотека phpMorphy

Добавлено: Сб май 21, 2016 10:20 am
Amarok
После установки phpMorphy перестали отрабатываться подобные шаблоны:
позвониПоказать

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

if (preg_match('/позвони/is',$original)) {
 $name = explode(" ", $original); $name = $name[1];
 $name = mb_strtolower($name, 'UTF-8');
 $objects = getObjectsByClass("Peoples");
 foreach($objects as $obj) {
  $n2c  = mb_strtolower(gg($obj['TITLE'].".name"),  'UTF-8');
  $n2c1 = mb_strtolower(gg($obj['TITLE'].".name1"), 'UTF-8');
  $n2c2 = mb_strtolower(gg($obj['TITLE'].".name2"), 'UTF-8');
  if ($n2c==$name or $n2c1==$name or $n2c2==$name) {
   $skypename = gg($obj['TITLE'].".Skype");
   say($skypename);
  }
 }
} 
Удаляю модуль - работают.

Re: Библиотека phpMorphy

Добавлено: Вс май 22, 2016 2:58 pm
eeak1
Если включить Use morphology и в коде использовать $original - на выходе получается примерно так: Что именно Включи@@@@ВКЛЮЧИТЬть?

Re: Библиотека phpMorphy

Добавлено: Вс май 22, 2016 3:45 pm
Amarok
Ага. :( Как исправить?

Re: Библиотека phpMorphy

Добавлено: Вт май 31, 2016 3:55 pm
Amarok
up