Можно ли программировать японские слова кандзи?
Недавно я обнаружил, к моему удивлению (никогда не думал об этом раньше), машинная сортировка японских существительных, по-видимому, невозможна.
Я работаю над приложением, которое должно позволить пользователю выбрать больницу из интерфейса из 3-х меню. Первое меню - префектура, второе - название города, а третья - больница. Каждое меню должно сортироваться, как и следовало ожидать, поэтому пользователь может найти то, что им нужно в меню.
Позвольте мне изложить то, что я нашел, в качестве преамбулы к моему вопросу:
-
Ожидаемый порядок сортировки для японских слов основан на их произношении. Кандзи не имеют неотъемлемого порядка (используются десятки тысяч кандзи), но у японских фонетических слогов есть порядок: あ, い, う, え, お, か, き, く, け, こ.. и для пятидесяти традиционных различных звуков (некоторые из которых устарели в современном японском языке). Этот порядок сортировки называется 五十 音 順 (gojuu on jun, или '50 -sound order ').
-
Поэтому слова кандзи следует сортировать в том же порядке, в каком они были бы, если бы они были написаны в хирагане. (Вы можете представить любое слово кандзи в фонетическом хирагане на японском языке.)
-
Кикер: канонического способа определения произношения данного слова, написанного в кандзи, нет. Никогда не знаешь. В некоторых кандзи есть десять или более разных произношений, в зависимости от слова. В словаре есть много общих слов, и я мог бы, вероятно, взломать способ поиска их из одной из баз бесплатных словарей, но в словаре нет соответствующих существительных (например, имена больниц).
Итак, в моем заявлении у меня есть список каждой префектуры, города и больницы в Японии. Чтобы отсортировать эти списки, что является требованием, мне нужен соответствующий список каждого из этих имен в фонетической форме (kana).
Я не могу придумать ничего, кроме как заплатить кому-то, кто говорит по-японски (я только так себе), чтобы вручную их расшифровать. Прежде чем сделать это, хотя:
-
Возможно ли, что я полностью в огне, и на самом деле есть какой-то способ сделать эту сортировку, не создавая собственных привязок слов кандзи к фонетическим показаниям, которые я почему-то забыл?
/li > -
Существует ли общедоступное отображение имен префектуры/города, от правительства или чего-то еще? Это уменьшит ручное сопоставление, которое мне нужно будет сделать только для имен больниц.
-
Есть ли у кого-нибудь другие советы о том, как подойти к этой проблеме? Любой язык программирования хорош - я работаю с Ruby on Rails, но я был бы рад, если бы смог написать программу, которая будет принимать ввод кандзи (скажем, 40 000 собственных существительных), а затем выводить фонетические представления как данные, которые я мог бы импортируйте в мое приложение Rails.
宜 し く お 願 い し ま す.
Ответы
Ответ 1
Для данных, скопируйте файлы данных японского IME (Mozc) Google здесь.
Здесь есть много интересных данных, включая словари IPA.
Edit
И вы также можете попробовать Mecab, он может использовать словарь IPA и может конвертировать kanjis в katakana для большей части слов
и для этого есть привязки ruby.
и вот кто-то протестирован, ruby с mecab с tagger -Oyomi
Ответ 2
просто быстрое описание, чтобы объяснить возможное фактическое решение, которое мы использовали. Спасибо всем, кто рекомендовал mecab - это, похоже, сделало трюк.
У нас есть бэкэнд большей части Rails, но в наших обстоятельствах нам не нужно было решать эту проблему на бэкэнд. Для введенных пользователем данных, например. создавая новые сущности с японскими именами, мы модифицировали пользовательский интерфейс, чтобы потребовать от пользователя ввода фонетической йогиганы в дополнение к имени кандзи. Пользователи привыкли к этому. Проблема заключалась в том, что большой объем данных, встроенных в приложение - больница, компания и имена мест, в основном.
Итак, что мы сделали:
- Мы преобразовали все исходные данные (список 4000 больниц с именем, адресом и т.д.) в формат .csv(конечно, кодировано как UTF-8).
- Затем для использования разработчиком мы написали ruby script, который:
- Использует mecab для перевода содержимого этого файла в японские фонетические показания
(использовалась точная команда
mecab -Oyomi -o seed_hospitals.converted.csv seed_hospitals.csv
, которая выводит новый файл с заменой кандзи на фонетический эквивалент, выраженный в полноразмерной катакане).
- Стандартизирует всю йоматику в хирагану (потому что пользователи, как правило, входят в хирагану, когда вручную вводят йоматику, а хирагана и катакана - по-разному). Ruby делает это легко, как только вы его найдете:
NKF.nkf("-h1 -w", katakana_str) # -h1 means to hiragana, -w means output utf8
- Используя удивительно удобную новую версию CSV Ruby 1.9.2, объедините входной файл с файлом mecab-translated, так что в результирующий файл добавлены дополнительные столбцы: a la NAME, NAME_YOMIGANA, ADDRESS, ADDRESS_YOMIGANA и т.д. на.
- Используйте данные из полученного CSV файла, чтобы засеять наше приложение rails со встроенными значениями.
Время от времени клиент обновляет исходные данные, поэтому нам нужно будет делать это каждый раз, когда это произойдет.
Насколько я могу судить, этот вывод хорош. Мой японский язык недостаточно хорош, чтобы быть на 100% уверенным, но некоторые из моих японских коллег сняли его и сказали, что все в порядке. Я помещал слегка обфусканный образец преобразованных адресов в этот смысл, чтобы кто-нибудь, кто позаботился прочесть это, может сам убедиться.
ОБНОВЛЕНИЕ: Результаты в... это довольно хорошо, но не идеально. Тем не менее, похоже, что он правильно фонетизировал 95% + квази-случайных адресов в моем списке.
Большое спасибо всем, кто помог мне!
Ответ 3
Приятно слышать, что люди работают с японцами.
Я думаю, что вы заметили сложность проблемы. Я просто спросил одного из японских парней в своей лаборатории, и способ сделать это, кажется, так, как вы описываете:
- Возьмите список кандзи
- Выводьте (догадывайтесь) yomigana
- Сортируйте йогигану gojuon.
Жесткая часть - это, очевидно, второй шаг. У меня в моей лаборатории два парня: 高橋 и 高 谷. Естественно, при сортировке отчетов и т.д. По имени они нигде не приближаются друг к другу.
ИЗМЕНИТЬ
Если вы свободно говорите по-японски, посмотрите здесь: http://mecab.sourceforge.net/
Это довольно популярный инструмент, поэтому вы также сможете найти английскую документацию (страница man
для mecab
имеет английскую информацию).
Ответ 4
Я не знаком с 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".
см. (Wikipedia Japanese):
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