Elixir / Erlang - разделить абзац на предложения, основанные на языке - PullRequest
0 голосов
/ 14 октября 2019

В Java есть класс BreakItterator, который позволяет мне передавать абзац текста на любом языке (язык, на котором он написан, известен), и он разбивает текст на отдельные предложения. Волшебство заключается в том, что он может принимать в качестве аргумента локаль языка, на котором написан текст, и он будет разбивать текст в соответствии с правилами этих языков (если вы посмотрите на него, на самом деле это очень сложная проблема даже на английском языке - этоконечно, это не случай «деления на полные остановки / периоды»).

Кто-нибудь знает, как бы я сделал это в эликсире? Я ничего не могу найти в поиске Google.

Я почти на пороге развертывания очень тонкого общедоступного API, который выполняет только ту базовую задачу, к которой я могу обратиться из эликсира - но это действительно нежелательно.

Любая помощь будет очень признательна.

1 Ответ

1 голос
/ 14 октября 2019
Для этого должна использоваться библиотека

i18n . Просто исходя из приведенных примеров, так как у меня нет опыта его использования, должно работать что-то вроде следующего (:en - это код локали):

str = :i18n_string.from("some string")
iter = :i18n_iterator.open(:en, :sentence)
sentences = :i18n_string.split(iter, str)

Там также Cldr ,который реализует множество зависящих от локали алгоритмов Unicode непосредственно в Elixir, но, похоже, на данный момент он не включает в себя итерацию, в частности (возможно, вы захотите поднять проблему там).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...