5

有一种简单的方法可以将拉丁字母转换为希腊字母,使用stringiR 包,这里依赖于 ICU 的音译:

library(stringi)
stri_trans_general("abcd", "latin-greek")

有没有类似的简单方法将拉丁语转换为古希腊语(αβγδ)而不是希腊语(ἀβκδ)?

4

2 回答 2

2

我猜您想要做的(至少,作为您任务的一部分)是删除所有重音。

这是一种使用stringi.

library("stringi")
stri_flatten(
   stri_extract_all_charclass(
       stri_trans_nfkd(
          stri_trans_general("abcd", "latin-greek")
       ),
   "\\p{L}")[[1]]
)
## [1] "αβκδ"

首先,我们将 stringi 音译为希腊文字。然后我们执行 Unicode 规范化 NFKD——这将重音字符分别拆分为字符和重音符号。接下来是提取所有字母并连接结果的时候了。高温高压

于 2014-10-15T10:18:06.890 回答
1

现代和古希腊字母之间没有真正的区别。也许最大的一个是古希腊字母没有小写字母。所以 αβγδ 和 ἀβκδ 都是现代希腊语(由于 alpha 的重音可能与发音有关,现代希腊语不再有它)。

现在,stri_trans_general在尝试考虑发音的同时进行音译:

可发音:如果该过程只是简单地映射字符而不考虑其发音,则音译就没有那么有用了。简单地将“αβγδεζηθ...”映射到“abcdefgh...”将产生可能完整且明确但不能发音的字符串。(见这里

音译有不同的标准,例如 ISO 843 和 UN(参见此处此处)。c可音译为“κ”或“σ”,选择前者。


由于 SO 是关于编程的,如果你想制作自己的映射,这里有一些代码:

## You have to complete the mapping
map <- data.frame(latin = c("a", "b", "c", "d", "e", "f", " "),
                  greek = c("α", "β", "γ", "δ", "ε", "φ", " "),
                  stringsAsFactors=FALSE)

mapChars <- function(latin) {
    a <- strsplit(latin, "")[[1]]
    res <- sapply(a, function(x) map$greek[map$latin == x])
    paste(res, sep="", collapse="")
}

mapChars("abcd")
## [1] "αβγδ"

希望这对你有帮助,

亚历克斯(或άλεξ)

于 2014-07-28T16:03:22.380 回答