LINUX.ORG.RU

Как находить ссылки в тексте на китайском (без пробелов)?

 , линкификатор


1

1

https://github.com/markdown-it/linkify-it/issues/15

Вопрос к знатокам китайского. Есть алгоритм, который находит в тексте куски, выглядящие как ссылки (чтобы сделать их кликающимися). Это работает весьма неплохо, но есть нюансы с китайским языком.

На китайском обычно пишут без пробелов, поэтому стандартные механизмы определения конца ссылки не пашут. По ссылке есть различные примеры, как проявляется проблема.

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

PS. Насколько я знаю, проект по ссылке - самый навороченный из опенсорсных. Вроде говорили что фейсбук лучше справляется с китайским, но сорцы они не выкладывали.

★★★★★

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

Как неспециалист в этой предметной области: когда хотят разбить CJK-языки на слова, обычно пользуются сегментатором (это уже NLP). Конкретно для китайского я не в курсе, который в моде, в японском как general purpose часто пользуются mecab'ом.

x3al ★★★★★
()

https://github.com/diasks2/pragmatic_segmenter в этом проекте сравнительно простые правила разбивки текста на предложения, можно стащить их оттуда.

Свой сегментатор есть и в современных браузерах (особенно в webkit), но я без понятия, есть ли из JS доступ к нему.

x3al ★★★★★
()
Последнее исправление: x3al (всего исправлений: 1)

Искать TLD и надеяться что угадал.

Но если там еще путь, то никак в общем случае, если там все без пробелов и ссылки написаны юникодом.

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 1)
Ответ на: комментарий от invy

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

Vit ★★★★★
() автор топика
Ответ на: комментарий от x3al

Если я правильно понял, сегментатор бьет на фразы, а искать в ссылках фразы особого смысла нет.

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

Я просто не очень разбираюсь во всем разнообразии, как ссылки на китайском и т.п. могут быть написаны.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

А китайские скобки можно было бы не разрешать вообще.

Вот эти китайские скобки (「」) и висят в списке границ сегмента по ссылке. Попробуй прогнать через него свои примеры, он должен их разбить на отдельные куски, один из которых и нужно посчитать url.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Юникодный класс китайской пунктуации и так известен. Вопрос в том, бывают ли на китайском реальные ссылки с подобными символами или нет. Например в английском бывают, но только парные. Или одинарные без пробелов (запятая, точка).

Дело ж не в прогоне текста через волшебную тулзу, а в критерии применимости конкретно для ссылок.

Vit ★★★★★
() автор топика
Ответ на: комментарий от invy

Когда пробелы есть - проблем вообще нет. Но по ссылке есть примеры без пробелов, вполне реальные.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Deathstalker

IMHO это слишком обобщенное утверждение, примерно как «для решения этой задачи используются регулярные выражения и яваскрипт». Вроде и корректно, но без конкретики.

Меня пока интересуют критерии для китайского и побольше примеров с реальных сайтов. А каким именно алгоритмом реализовывать эти критерии - другой вопрос.

Vit ★★★★★
() автор топика

tazhate наше всё

anonymous
()
Ответ на: комментарий от Vit

Ну тогда никак. Тут даже человек не определит, а ты хочешь компьютер научить.

Как без разделителя ещё определить, отнеситмя ли символ(иероглиф) к аддрему или уже к описанию?

Пртмер: http://example.com/thisisstilladdressandthisisalreadyacomment

Тут только по смыслу понятно где конец аддреса. И то с трудом.

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 1)
Ответ на: комментарий от invy

У тебя пример на английском, а на английском таких не бывает. Надо ведь чтобы работали не произвольные варианты, а только из реальной жизни.

На китайском - потому и спрашивал кто шарит, т.к. я не знаю всех вариантов как они ссылки пишут. Может у них не модно в урлах на китайском писать. Тогда по смене языка можно детектить.

В общем, нет задачи придумать решение на ходу коллективным разумом. Нужен человек, который знает какие бывают ссылки на китайском.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

Может у них не модно в урлах на китайском писать.

По стандарту можно, значит есть и те, кто пишет.

У тебя пример на английском

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

invy ★★★★★
()
Ответ на: комментарий от invy

Пример исключительно чтобы продемонстрировать, что в общем случае задача нерешаемая.

Это от неправильного понимания задачи. Ее не надо решать в общем случае. Надо решать для кучи частных, как любую эвристику. Народ этим кодом прогоняет огромные потоки текстов. И уже не осталось проблем кроме тех что в трекере. А выдуманные примеры, которые все ломают, сочинить не проблема, но они никому не нужны.

PS. Кстати, таки вспомнил китайца, с которым активно общались по маркдауну. Он пообещал посмотреть, что можно сделать.

Vit ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.