LINUX.ORG.RU

Как можно определить на каком языке строка?

 , ,


1

1

В openstreetmap есть:

city_name
city_name_ru
city_name_uk

Бывает такое, что есть city_name, но нет city_name_ru или нет city_name_uk. А в city_name может быть и русское и украинское название населенного пункта. Нужно определить на каком языке строка в city_name и перенести это название в city_name_ru или в city_name_uk. Определить язык, на котором строка - нужно на python3

★★★

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

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

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

это сокращение от названия языка, а не код страны.

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

По словарям сначала попробуй.

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

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

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

Украинский от русского на коротких текстах он точно не различит, юзаю эту либу на коротких текстах очень часто тупит.

pi11 ★★★★★
()

Определить язык, на котором строка - нужно на python3

Если есть i, і, ї, ґ, є, значит украинский. Если есть ы, ъ, э, ё, значит русский. Иначе может быть любой.

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

потому что uk - ukranian, собсно как для англичан было бы en - english, это сокращение для языка, а не страны.

AKonia ★★
()

А зачем?

anonymous
()

Выгрузи откуда-нибудь все города (например, ФИАС/КЛАДР для РФ, для Украины - не подскажу) и сверяйся со списками.

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

ну вот сотни городов передают привет твоему алгоритму.

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

вот какой вопрос, такие и ответы.

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

ну вот сотни городов передают привет твоему алгоритму.

Так у многих городов и название идентичное. «Херсон» - это русское или украинское название?

а, например: по урлу, языку браузера, местоположению, айпи адресу, языку системы, раскладке, часовому поясу

В базе данных???

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

В базе данных???

я же сказал, что задача поставлена по дебильному!

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

и да, может быть он хочет определить на каком языке написано «Прага». вот только нахрена?

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

и да, может быть он хочет определить на каком языке написано «Прага». вот только нахрена?

С Прагой проще:

name=*: for the name of the city in the primary language for the territory (с) документация OpenStreetMap.

Поэтому там name = Praha.

А вот со странами CНГ и primary language всё слегка хуже. Хотя почти всегда можно трактовать любые сомнения в пользу государственного языка.

бывает такое, что есть city_name, но нет city_name_ru или нет city_name_uk

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

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

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

ну тогда от «Херсона» у некоторых жопа точно сгорит. я за переименовывание в Хiрсон!

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

ну тогда от «Херсона» у некоторых жопа точно сгорит. я за переименовывание в Хiрсон!

???

Он по-украински Херсон.

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

как и по русски, сам же его в пример привел. а все русское - плохо!

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

как и по русски, сам же его в пример привел. а все русское - плохо!

А произносят как раз по-русски [xʲɪrˈson], а по-украински [xerˈsɔn], так что Хiрсон будет прогибом перед «агрессором».

Умные люди утверждают что греческое)

Не.. по-гречески Χερσόνησος

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

ну так то оно так конечно. не беда. значит будет Херсiн. для современной Украины переименовать - не проблема.

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

а по вопросу непонятно почему разве?

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

ТС недосказал 90% информации.

Что-то из той информации может нам (или ему) помочь угадать язык в поле name?

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

да ТС вообще проще день потратить и руками проверить списки, в/на Украине городов не так много, делается это один раз и потом только исправляется если очередному идиоту у власти приспичит что-то переименовать, мне кажется ТС слишком жирнит выдумывая проблему.

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

«За что купил, за то продал».

OpenStreetMap использует топологическую структуру данных, состоящую из объектов:

node (точка) — точка с указанными координатами;
way (линия) — упорядоченный список точек, составляющих линию или полигон;
relation (отношение) — группы точек, линий и других отношений, которым назначаются некоторые свойства;
tag (тег) — пары «ключ — значение», могут назначаться точкам, линиям и отношениям.
anonymous
()

Нужна база соответствий. Иначе никак. Бывают названия населенных пунктов, которые различаются в написании даже без специфичных для языка символов. Например «Сотницкое» и «Сотницьке».

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

такое легко проверяется, потому что в русском языке этого нет.

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

Ему не язык названия скорее всего нужен, а данные о месте нахождения «Хутора близ диканьки» … /страна, область, район, …/

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

Почему кстати uk, а не ua?

Потому что «на украину», а не «в».

slovazap ★★★★★
()

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

  • Алфавиту - какие-то буквы есть только в одном алфавите, это точный способ, он неполный (не всегда можно получить однозначный результат)
  • Словарю (нужны реестры названий НП на известном языке)
  • Статистически (как фоллбэк, ненадёжно)
slovazap ★★★★★
()

Кури машинное обучение. Если langdetect (наивный байес с улучшениями) тебе недостаточно хорош, то придётся самому велосипедить, а на чём будет основано твоё определение языка это отдельная история, есть SVM, есть нейронки, есть словари, есть fuzzy logick, есть деревья решений и леса деревьев решений, а есть генетические алгоритмы (список того что можно употребить для решения этой задачи далеко не полный). Что будет лучше работать и на основе чего надо строить грамотную систему это очень сложная задача, которая требует опыта, кучи знаний и времени. Для начала попробуй потыкать каждую базовую модель, посмотри результаты, посчитай F-меру, оцени что тебе важнее охват или точность, выбери хороший по скорости/точности алгоритм и пляши вокруг него. Адекватная модель, решающая задачу классификации будет у тебя через год примерно или 2 если всё плохо, если ты плотненько ей займёшься параллельно раскуривая предметную область, статьи на тему и теорию, учитывая твою глубину постановки вопроса.

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

ты понтонуться решил или просто тупой совет дать? или чукча не читатель? через сколько миллиардов лет ты научишь бота определять на каком языке написано «Лондон»?

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

Я уже учил на очень похожей задаче, так что там не миллиарды лет, а гораздо меньше, за день можно, если знать что делать (а вот это не тривиально) и откуда данных для обучения с учителем можно набрать. Конкретно Лондон от London очень просто отличать. А вот происхождение слова в случае, если оно написано, например, всегда английскими буквами посложнее, но тоже можно, хотя ошибки будут довольно большие (я бы даже сказал очень большие, потому что есть одинаковые названия и родственные языки), но если тебе дать названия всяких мухосрансков из разных бананостанов про которые ты заведомо не знаешь, то ты не меньше ошибок сделаешь, а больше, так что нормально всё.

Всякие вордпис модели и статистика по частотам характерных для языка n-грамм уже неплохо помогают в определении языка.

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

а теперь открой википедию и посмотри на скольки языках «Лондон» выглядит одинаково. и еще раз попробуй ответить на вопрос ТСа…

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