Algorithms
Comments 15
0
>нужно учитывать особенности каждого языка, чтобы решить, в каком месте разорвать слово
В примерах указан только русский язык. А как это будет выглядеть для английского, немецкого и китайского языков?
+1
Не знаю, как насчет китайского, словарь не попадался, а для английского и немецкого достаточно взять соответствующий набор правил. Вот например для английского (по шаблонам из TeX):
hel-lo
ap-pli-ca-tion
descrip-tion
UFO landed and left these words here
+3
Не знаю что там знают дворники, но в японском, в отличие от китайского, помимо иероглифов есть еще и кана, которая имеет правила переноса. Например, нельзя переносить «маленькую» кану на новую строчку:


ップロード < — будет неверно

а также еще куча разных спец. значков: удлинения звука в катакане ー, скобок 『 (full-width) и проч. (вкратце, можно почитать тут).

Ну и плюс ко всему есть стилистическое разбиение, например, если строка заканчивается на です, переносить лучше её всю целиком, а не отдельно で и す.
0
То ли я недопонял этот алгоритм, то ли он нерабочий…
Нельзя ли пояснить, как сформлировать в его терминах правило «в каждой из частей перенесённого слова должен быть хотя бы один гласный» (то, что называлось «перенос по слогам» когда я вшколе учился)?
+2
Формулируется не одним правилом, а их набором и приоритетами между ними. Алгоритм не дает 100% гарантии правильности переносов, но качество напрямую зависит от набора шаблонов и их согласованности. Вы можете наделать правил, в которых будет хотя бы одна гласная и разрешить перенос или запретить, можно сделать комбинации для всех возможных гласных и согласных. Пример: правило «1п0р0и1» — запрещает разбивать «при» на куски, но разрешает отделять «при» от остального слова. Разумеется надо следить, чтобы другие правила не ломали предыдущие если у них уровни выше.
0
всё равно не понял. Как мне гарантировать то, что всегда в обеих частях будет по гласной?
Предположим, у меня есть правило
по1
, которое гарантирует возможность переноса в правильном месте слов
поход
полёт
покос
понос
И попалось мне слово полк.
Это правило радостно сообщит мне что да, после приставки «по» надо переносить.
Предлагается рисовать правило
2лк
я верно понял? Но тогда правил таких нужны полчища, и мы в них очень быстро запутаемся.
+2
Да, все верно, правил нужно достаточно много, чтобы охватить самые распространенные сочетания. Поэтому 100% результата никто и не обещает, слишком много правил это медленно и трудоемко для составления. Но однако алгоритм все равно дает неплохие результаты на словаре из TeX, в котором почти 5000 шаблонов.
0
1. разбиение на слоги и правила переноса несколько разные вещи.
например: а-па-ти-я
2. слогоделение — морфо-фонетическое явление, специфичное для каждого языка.
а чуваки изобрели универсальный алгоритм.
+4
Если лень возится с Ляна-Кнутом, и требуется только русский язык, то можно воспользоваться алгоритмом П.Хpистова в модификации Дымченко и Ваpсанофьева.

Всего шесть правил:

«Х-»
«Г-Г»
«ГС-СГ»
«СГ-СГ»
«ГС-ССГ»
«ГСС-ССГ»


Где: Г — гласная, С — согласная, Х — буква из набора «ьъй».

Элементарно реализуется на регекспах.
Утверждается, что покрывает немалую часть правил русского языка.
+2
Ух ты, оказывается 2 года назад я «изобрёл» алгоритм П.Христова :) А ведь искал перед этим в сети, но не нашёл. Честно сказать, набор шаблонов очень небольшой и алгоритм довольно простой. Не проверял на «Войне и мире», конечно, но нареканий по работе не было.
+2
Такой алгоритм подходит только для частных случаев, увы. Анализ с учетом морфологии слов (то есть правил русского языка) куда надежней будет.
0
И как быстро работает на девайсе? Сколько времени надо на обработку страницы среднего шрифта на iPad?
Only those users with full accounts are able to leave comments., please.