r语言 - 根据官方'Revised Romanization of Korean'罗马化韩文



我想用hangul脚本将韩国地名罗马化。函数stringi::stri_trans_general支持hangul罗马化,但显然不符合广泛应用的官方修订的朝鲜语罗马化方案。

下面的代码揭示了一些潜在的转换问题:

library(stringi)
Sys.setlocale(category="LC_ALL", locale="Korean")
#Read hangul "서울특별시 종로구 사직동" pasted in win10 notepad file because directly pasting in console doesn't work
x <- readLines("hangul.txt", encoding="UTF-8")
#Try the two different tranform identifiers I have found in stri_trans_list for hangul-to-latin
stri_trans_general(x, "Hangul-Latin")
[1] "seoulteugbyeolsi jonglogu sajigdong"
stri_trans_general(x, "Hang-Lat")
[1] "seoulteugbyeolsi jonglogu sajigdong"

根据修订的朝鲜语罗马化,输出应该是";seoulteuKbyeolsi jongNogu sajiKdong";而不是";seoulteuGbyeolsi-jongLogu-sajiGdong";(大写表示强调(。使用stringi或其他方式,如何在R中实现所需的罗马化?

手册说stri_trans_general使用ICU库做音译,ICU手册说使用"韩国文化部;旅游翻译与条款8的可逆性变体";。我不知道这与你想要的方案有多大不同,但在stringi的最新开发版本1.6.2.9004中,可以修改音译。

要获得此版本,请使用

remotes::install_github("gagolews/stringi")

这将需要编译,因此您可能需要安装一些额外的工具才能使用它。运行它需要一段时间。。。

一旦你有了它,你就可以做这样的事情(从stri_trans_general的修订帮助页面(:

x <- "uC11CuC6B8uD2B9uBCC4uC2DCu0020uC885uB85CuAD6Cu0020uC0ACuC9C1uB3D9"
stringi::stri_trans_general(x, "Hangul-Latin")
## [1] "seoulteugbyeolsi jonglogu sajigdong"
# Deviate from the ICU rules of Romanisation of Korean,
# see https://en.wikipedia.org/wiki/%E3%84%B1
id <- "
:: NFD;
u11A8 > k;
u11AE > t;
u11B8 > p;
u1105 > r;
:: Hangul-Latin;
"
stringi::stri_trans_general(x, id, rules=TRUE)
## [1] "seoulteukbyeolsi jongrogu sajikdong"

最新更新