![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Li |
|
|||
|
Unregistered |
Привет всем!
Есть база данных. Одно из полей - название книг. В другое поле нужно проставить язык, на котором это книга, и определить это нужно по названию книги. Идеальное решение если определяется четыре варианта: русский, украинский (отличается от русского четырьмя буквами), английский и неизвестный язык. Если в такой постановке задача сложная можно упростить до трех языков: рус, укр, англ. Нужно помнить, что есть книги с названиями, содержащими буквы разных алфавитов, например: "Perl. Библиотека программиста". Заранее спасибо за помощь в виде словесного алгоритма решения или программки на Си! |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Со 100% точностью нельзя, но приблизительно можно считать что
1) Если нет букв кириллицы то книга английская 2) Если встречаются буквы специфичные для украинского языка ("Э оборотное", "и" с точкой и с двумя точками) то это украинксий 3) Во всех остальных случаев с какой-то долей вероятности - русский -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| suborg |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 29.4.2002 Где: Москва Репутация: нет Всего: нет |
В каждом языке можно определить возможные и довольно немыслимые буквосочетания. Таким образом можно разрешить некоторые неопределённости. Например в русском ЧА, ЩА, значит если написано ЧЯ, значит что-то здесь не так
|
|||
|
||||
| Ampersand |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 20.5.2002 Репутация: нет Всего: нет |
Наиболее работоспособный, но и наиболее трудоемкий - сопоставление со словарем. Трудоемкость тут - в составлении словаря.
|
|||
|
||||
| Li |
|
|||
|
Unregistered |
Спасибо за идеи!
Если упростить первый алгоритм до следующего ЕСЛИ встречается хотя бы одна русская гласная, то (ЕСЛИ встречается укр_и_с_двумя_точками ИЛИ укр_э_оборотное, то это украинский язык, ИНАЧЕ это русский язык), ИНАЧЕ это английский язык. Проверка на укр_и_с_точкой не делать, поскольку код этой буквы может совпасть с англ. Проверка только на гласные, исходя из соображения, что слова без гласных практически не встречаются. ТЕОРЕТИЧЕСКИ, такой алгоритм дает 100% определение языка? Если нет, можно на конкретном примере? |
|||
|
||||
| Alex101 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 891 Регистрация: 8.4.2002 Где: Москва Репутация: нет Всего: 10 |
ТЕОРЕТИЧЕСКИ - нет. Представь себе учебник русского языка для англичан... Алгоритм ищет русские слова, и он их найдет -------------------- С уважением, А. Фролов. |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Любые алгоритмы дают только некое приближение, и могут определить язык только приблизительно - например если это монография по "сравнительной грамматике славянских языков и англосаксонских языков" то там могут быть слова на десятках языков, и даже проще - русский перевод английской книги, выпущенный в Киеве будет иметь русские, английские и украинские(название города и адрес редакции) слова...
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Li |
|
|||
|
Unregistered |
Да, согласна.
Спасибо! |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
товарищи лучше всего использовать анализ частоты встречи конкретных символов. так не только язык можно определить. Так определяется кто в действительности написал ту или иную книгу.
Например русский язык. чаще всего встерчаються буквы е и н , в других языках по другому. При достаточной длине документа можно достигнуть практически сто процентного результата. Это не я придумал, а лингвисты. Нас к стати этому учили и на лобараторных мы могли идентифицировать учащихся по их докумнетам, а тут целый язык применяется, да есил еще и принять во внимае то что предложил VIT то вообще можно сделать 100 процентник. Кстати в книгах по лингвистике приводятся даже эти частоты, названия книги не помню, но мню что это огромные книги их около 10 томов, то про это столько написано что просто жуть -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Кажется автор написал, что в базе дданных только название книги а не содержание.
Частотный анализ в названии не даст 100% гарантии. Мне кажется что это даже около 50%, так как название не есть типичная, среднестатистическая фраза из языка, а скорее некое обобщение. Если же окажется, что часть односложных русских названий вбита английскими буквами (пример OH) то вообще кошмар для теоретического алгоритма. |
|||
|
||||
| Paradox |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1135 Регистрация: 18.11.2002 Где: Россия Репутация: нет Всего: 1 |
"10 УРОКОВ WEB-МАСТЕРУ"
у меня на полке такая книга стоит... И на каком она языке по-моему предложенные алгоритмы не определят... Только словарный поиск, но никак не побуквенное сравнение -------------------- --- |
|||
|
||||
| Step |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
вот тут ты ошибаеся, если ты еще языки програмирования заложеш и многое другое и выставишь приоритеты назначения языков, например человеческие с максимальным приоритетом то все будет ок.
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
||||
|
|||||
| Paradox |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1135 Регистрация: 18.11.2002 Где: Россия Репутация: нет Всего: 1 |
По-моему автор хочет определить по названию книги на каком языке она написана(английский, русскуий и т.д.) Я имел ввиду, что в этом названии все символы можно трактовать как символы латиницы, а не кирилицы и следовательно при посимвольном сравнении букв будет дан ответ, что книга написана на английском, что очевидно не так. -------------------- --- |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
а русский и украинский процентов 50 узнавать будет буква і не так часто встречается.
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Molnienosetz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 6.3.2003 Где: Россия, Королёв, комитетский лес Репутация: нет Всего: нет |
Извините, что везде суюсь, а в какой кодировке название? Если в Unicode, то вроде полегче, а если 8 бит, как отличить, например, русскую ы или украйнскую э наоборот или что там подвернётся. Извините.
--------------------
"Вы только появились на форуме, но уже стали весьма популярны. Правда не как профессионал, а большой зазнайка."Это про меня! :) (В том смысле, что писалось не про меня.) |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |