Download the PHP package go/ewp without Composer
On this page you can find all versions of the php package go/ewp. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Package ewp
Short Description Esperanto word parser
License MIT
Homepage https://github.com/vasa-c/esperanto-word-parser
Informations about the package ewp
Разбор эсперанто слов
Эпохальная в своей бессмысленности тулза.
Пытается произвести синтаксический разбор слова на эсперанто.
Например: malfermiĝis
: (mal)ferm<iĝ>[is]
, корень fermi
(закрывать), приставка mal-
(противоположность), -is
- глагол в прошедшем времени, суффикс -iĝ
- становиться.
Додумать смысл слова оставляется пользователю.
В примере, это, по-видимому, "закрылось".
Для русского языка используется словарь на три тысячи корней, основанный на этом.
Для протестированных текстов (несколько книг) определяет около 80% уникальных слов, покрывая при этом до 95% текста. Большинство пропущенных слов - имена и названия.
На данный момент не справляется с составными словами.
Требования, установка и всё такое
Требования: PHP 5.4+
Установка: компосер (go/ewp
) или руками (всё в PSR-4).
Все нижеописанные классы находятся в пространстве имён go\ewp
.
Формат текста
Большинство методов понимают только нормализованную форму текста, то есть:
- Вся диакритика должна быть приведена к
x
-форме. То естьĝ
-gx
и т.д. ŭ
- такжеux
(а неu~
).- Все буквы приведены к нижнему регистру.
Произвольная форма (которую понимают меньшинство методов) подразумевает:
- Возможно наличие диакритики.
- Также рядом с ней могут содержаться буквы в
x
-форме. - Заодно может быть
u~
иU~
. - Регистр может быть любым.
- Допустимы знаки пунктуации.
Конвертация:
Diacritic::diacritic2latin($text)
- текст в произвольной форме в нормализованную.Diacritic::latin2diacritic($text)
- обратно.
Locale
: локаль
Локаль указывает на какой язык переводим. Пока определена только русская. Большинство сервисов доступно через локаль.
Locale::getSysLocale(string)
- получить системную локаль (определённую в библиотеке, доступна толькоru
).new Locale(string $dir)
- создать локаль из каталога (формат каталога описан ниже).
Parser
: анализатор
Парсер доступен через локаль:
Метод parse()
получает слово и возвращает результат его анализа.
На выходе экземпляр класса Result
или NULL
если корень не определён.
Result
: результат разбора
Объект со следующими полями:
root
: основа слова (в примереferm
)prefixes
: массив найденных приставок (в примере [mal
])suffixes
: массив найденных суффиксов (в примере [igx
])part
: часть речи в виде окончания (is
, может бытьNULL
)accus
: аккузатив (винительный падеж) (TRUE/FALSE
)plural
: множественное число (TRUE/FALSE
)
Всё в нормализованной форме.
__toString()
выводит объект в виде (mal)ferm<igx>[is]
.
Перевод
Полученные части слова можно перевести на язык локали.
Перевод корня
Сначала нужно привести основу к базовому корню, потом перевести.
Перевод приставки
Перевод суффикса
Фонетика
Можно даже немного фонетикой побаловаться:
Структура локали
Локаль хранится в каталоге.
Предустановленные локали хранятся в source/locals/$locale
.
roots.txt
- корниprefixes.txt
- приставкиsuffixes.txt
- суффиксыphonetics.txt
- произношение букв
Все файлы представляют собой список элементов по одному на каждой строке, сначала элемент на эсперанто, потом, через двоеточие, перевод:
В приставках и суффиксах, более длинные должны идти раньше более коротких.
Freq
: частотный словарь
Приблуда, позволяющая проверить, насколько успешно анализатор разбирает слова.
Словарю скармливаются тексты (в произвольной форме). Можно посмотреть их статистику:
Возвращает упорядоченный словарь всех найденных слов (в нормализованной форме) и их количество. Например:
$freq->getCount()
- возвращает общее количество найденных слов (не уникальных, которых можно получить из размера предыдущего массива), а именно всех слов.
Этот метод пропускает все слова через переданный ему анализатор. Возвращает объект со следующими полями:
success
- массив всех успешно разобранных слов (в формате'malfermigxis' => '(mal)ferm<igx>[is]'
).fail
- порядковый массив всех слов, которые не удалось разобрать (упорядоченный от самых частотных).uniq
- всего уникальных слов.words
- общее количество слов.puniq
- разобранных слов.pwords
- какое количество составляют разобранные слова.peruniq
- процент разбора уникальных.perwords
- процент разбора среди общего количества.
Пример разбора текста. Успешные слова:
Обломные слова:
Статистика: