Может ли сортировка японских слов кандзи выполняться программно? - PullRequest
16 голосов
/ 04 февраля 2011

Я недавно обнаружил, к моему удивлению (никогда раньше не задумывался об этом), что машинная сортировка имен собственных японских, по-видимому, невозможна.

Я работаю над приложением, которое должно позволить пользователювыберите больницу из интерфейса с 3 меню.Первое меню - префектура, второе - название города, а третье - больница.Каждое меню должно быть отсортировано, как и следовало ожидать, чтобы пользователь мог найти в меню то, что он хочет.

Позвольте мне изложить то, что я нашел, в преамбуле к моему вопросу:

  1. Ожидаемый порядок сортировки японских слов зависит от их произношения.Кандзи не имеют внутреннего порядка (используются десятки тысяч кандзи), но у японских фонетических слогов есть порядок: あ あ い 、 う 、 、 え 、 、 き き 、 こ こ こ こ.и для пятидесяти традиционных различных звуков (некоторые из которых устарели в современном японском языке).Этот порядок сортировки называется 五十 音 順 (годзюу на июнь, или «50-звуки»).

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

  3. Кикер: канонического способа определить произношение данного слова, написанного на кандзи, не существует.Никогда не знаешь.Некоторые кандзи имеют десять или более различных произношений, в зависимости от слова.В словаре содержится много общих слов, и я, вероятно, мог бы собрать вместе способ поиска их в одной из бесплатных словарных баз данных, но в словаре нет собственных имен (например, названий больниц).

Итак, в моем заявлении у меня есть список всех префектур, городов и больниц в Японии.Для того, чтобы отсортировать эти списки, что является обязательным требованием, мне нужен соответствующий список каждого из этих имен в фонетической форме (кана).

Я не могу придумать ничего, кроме как заплатить кому-нибудь, свободно говорящему по-японски(Я только так себе), чтобы вручную транскрибировать их.Прежде чем я сделаю это, хотя:

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

  • Существует ли общедоступное отображение названий префектур / городов от правительства или что-то еще?Это уменьшило бы ручное сопоставление, которое мне нужно было бы делать только с названиями больниц.

  • У кого-нибудь есть какие-либо другие советы о том, как решить эту проблему?Любой язык программирования хорош - я работаю с Ruby on Rails, но я был бы рад, если бы я мог просто написать программу, которая бы принимала ввод кандзи (скажем, 40000 имен собственных) и затем выводила фонетические представления в виде данных, которые я могла быимпорт в мое приложение Rails.

宜 し く お 願 い し ま す。

Ответы [ 4 ]

7 голосов
/ 24 февраля 2011

просто краткое объяснение возможного фактического решения, которое мы использовали. Спасибо всем, кто порекомендовал mecab - похоже, это удалось.

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

Итак, что мы сделали:

  1. Мы преобразовали все исходные данные (список из 4000 больниц с названием, адресом и т. Д.) В формат .csv (конечно, в кодировке UTF-8).
  2. Затем для разработчиков мы написали скрипт ruby, который:
    1. Использует mecab для перевода содержимого этого файла в фонетические чтения на японском языке. (точная использованная команда была mecab -Oyomi -o seed_hospitals.converted.csv seed_hospitals.csv, которая выводит новый файл с кандзи, замененным фонетическим эквивалентом, выраженным в катакане полной ширины).
    2. Стандартизирует все йомиката в хирагане (поскольку пользователи, как правило, вводят хирагану при ручном вводе йомикаты, а хирагана и катакана сортируют по-разному). Ruby делает это легко, как только вы его найдете: NKF.nkf("-h1 -w", katakana_str) # -h1 means to hiragana, -w means output utf8
    3. Используя потрясающе удобную новую версию CSV для Ruby 1.9.2, объедините входной файл с файлом, переведенным в mecab, чтобы в результирующий файл были добавлены дополнительные столбцы, такие как NAME, NAME_YOMIGANA, ADDRESS, ADDRESS_YOMIGANA и т. на.
  3. Используйте данные из полученного файла .csv, чтобы заполнить наше приложение rails встроенными значениями.

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

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

ОБНОВЛЕНИЕ: Результаты в ... это довольно хорошо, но не идеально. Тем не менее, похоже, что он правильно фонетизировал 95% + квази-случайных адресов в моем списке.

Большое спасибо всем, кто мне помог!

7 голосов
/ 04 февраля 2011

Для данных, копайте файлы данных Google Японский IME (Mozc) здесь.

Там есть много интересных данных, включая словари IPA.

Редактировать :

И вы также можете попробовать Mecab, он может использовать словарь IPA и может конвертировать кандзи в катакану для большинства слов

и естьдля этого тоже есть рубиновые привязки.

и вот кто-то проверял, рубин с mecab с tagger -Oyomi

4 голосов
/ 04 февраля 2011

Приятно слышать, что люди работают с японцами.

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

  1. Взять список кандзи
  2. Выведите (угадайте) йомигану
  3. Сортировка йомигана по годзюону.

Трудная часть, очевидно, второй шаг. У меня в лаборатории два парня: 高橋 и 高 谷. Естественно, что при сортировке отчетов и т. Д. По названию они появляются рядом друг с другом.

EDIT

Если вы свободно говорите по-японски, посмотрите здесь: http://mecab.sourceforge.net/

Это довольно популярный инструмент, поэтому вы также сможете найти документацию на английском языке (страница man для mecab содержит информацию на английском языке).

3 голосов
/ 06 февраля 2011

Я не знаком с MeCab, но думаю, что использовать MeCab - хорошая идея.

Затем я представлю другой метод.Если ваше приложение написано в Microsoft VBA, вы можете вызвать функцию «GetPhonetic».Он прост в использовании.

см .: http://msdn.microsoft.com/en-us/library/aa195745(v=office.11).aspx


Сортировка префектур по их произношению не распространена.Большинство японцев привыкли к префектурам, отсортированным по 「都 道 府 県 コ ー ド」.например, 01: 北海道, 02: 青森 県,…, 13: 東京 都,…, 27: 大阪 府,…, 47: 沖 縄 県 Эти коды определены в «JIS X 0401» или «ISO-3166-2 JP».см. (Википедия по-японски): http://ja.wikipedia.org/wiki/%E5%85%A8%E5%9B%BD%E5%9C%B0%E6%96%B9%E5%85%AC%E5%85%B1%E5%9B%A3%E4%BD%93%E3%82%B3%E3%83%BC%E3%83%89

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...