| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > как определить язык? (нужен алгоритм) |
| Автор: Li 9.9.2002, 17:59 |
| Привет всем! Есть база данных. Одно из полей - название книг. В другое поле нужно проставить язык, на котором это книга, и определить это нужно по названию книги. Идеальное решение если определяется четыре варианта: русский, украинский (отличается от русского четырьмя буквами), английский и неизвестный язык. Если в такой постановке задача сложная можно упростить до трех языков: рус, укр, англ. Нужно помнить, что есть книги с названиями, содержащими буквы разных алфавитов, например: "Perl. Библиотека программиста". Заранее спасибо за помощь в виде словесного алгоритма решения или программки на Си! |
| Автор: Vit 9.9.2002, 23:02 |
| Со 100% точностью нельзя, но приблизительно можно считать что 1) Если нет букв кириллицы то книга английская 2) Если встречаются буквы специфичные для украинского языка ("Э оборотное", "и" с точкой и с двумя точками) то это украинксий 3) Во всех остальных случаев с какой-то долей вероятности - русский |
| Автор: suborg 10.9.2002, 04:52 |
| В каждом языке можно определить возможные и довольно немыслимые буквосочетания. Таким образом можно разрешить некоторые неопределённости. Например в русском ЧА, ЩА, значит если написано ЧЯ, значит что-то здесь не так |
| Автор: Ampersand 10.9.2002, 14:42 |
| Наиболее работоспособный, но и наиболее трудоемкий - сопоставление со словарем. Трудоемкость тут - в составлении словаря. |
| Автор: Li 10.9.2002, 18:35 |
| Спасибо за идеи! Если упростить первый алгоритм до следующего ЕСЛИ встречается хотя бы одна русская гласная, то (ЕСЛИ встречается укр_и_с_двумя_точками ИЛИ укр_э_оборотное, то это украинский язык, ИНАЧЕ это русский язык), ИНАЧЕ это английский язык. Проверка на укр_и_с_точкой не делать, поскольку код этой буквы может совпасть с англ. Проверка только на гласные, исходя из соображения, что слова без гласных практически не встречаются. ТЕОРЕТИЧЕСКИ, такой алгоритм дает 100% определение языка? Если нет, можно на конкретном примере? |
| Автор: Alex101 12.9.2002, 06:17 | ||
ТЕОРЕТИЧЕСКИ - нет. Представь себе учебник русского языка для англичан... Алгоритм ищет русские слова, и он их найдет |
| Автор: Vit 12.9.2002, 06:31 |
| Любые алгоритмы дают только некое приближение, и могут определить язык только приблизительно - например если это монография по "сравнительной грамматике славянских языков и англосаксонских языков" то там могут быть слова на десятках языков, и даже проще - русский перевод английской книги, выпущенный в Киеве будет иметь русские, английские и украинские(название города и адрес редакции) слова... |
| Автор: Li 12.9.2002, 17:47 |
| Да, согласна. Спасибо! |
| Автор: Step 5.3.2003, 04:04 |
| товарищи лучше всего использовать анализ частоты встречи конкретных символов. так не только язык можно определить. Так определяется кто в действительности написал ту или иную книгу. Например русский язык. чаще всего встерчаються буквы е и н , в других языках по другому. При достаточной длине документа можно достигнуть практически сто процентного результата. Это не я придумал, а лингвисты. Нас к стати этому учили и на лобараторных мы могли идентифицировать учащихся по их докумнетам, а тут целый язык применяется, да есил еще и принять во внимае то что предложил VIT то вообще можно сделать 100 процентник. Кстати в книгах по лингвистике приводятся даже эти частоты, названия книги не помню, но мню что это огромные книги их около 10 томов, то про это столько написано что просто жуть |
| Автор: DENNN 5.3.2003, 05:21 |
| Кажется автор написал, что в базе дданных только название книги а не содержание. Частотный анализ в названии не даст 100% гарантии. Мне кажется что это даже около 50%, так как название не есть типичная, среднестатистическая фраза из языка, а скорее некое обобщение. Если же окажется, что часть односложных русских названий вбита английскими буквами (пример OH) то вообще кошмар для теоретического алгоритма. |
| Автор: Paradox 5.3.2003, 15:33 |
| "10 УРОКОВ WEB-МАСТЕРУ" у меня на полке такая книга стоит... И на каком она языке по-моему предложенные алгоритмы не определят... Только словарный поиск, но никак не побуквенное сравнение |
| Автор: Step 5.3.2003, 21:17 | ||||
вот тут ты ошибаеся, если ты еще языки програмирования заложеш и многое другое и выставишь приоритеты назначения языков, например человеческие с максимальным приоритетом то все будет ок.
|
| Автор: Paradox 5.3.2003, 22:53 | ||
По-моему автор хочет определить по названию книги на каком языке она написана(английский, русскуий и т.д.) Я имел ввиду, что в этом названии все символы можно трактовать как символы латиницы, а не кирилицы и следовательно при посимвольном сравнении букв будет дан ответ, что книга написана на английском, что очевидно не так. |
| Автор: Step 5.3.2003, 22:58 |
| а русский и украинский процентов 50 узнавать будет буква і не так часто встречается. |
| Автор: Molnienosetz 6.3.2003, 01:19 |
| Извините, что везде суюсь, а в какой кодировке название? Если в Unicode, то вроде полегче, а если 8 бит, как отличить, например, русскую ы или украйнскую э наоборот или что там подвернётся. Извините. |