python - 有没有办法以编程方式将韩文 unicode 合并为一个?

标签 python unicode nlp ime

使用韩语输入法编辑器 (IME),可以键入 버리 + ,它将自动变为 버려

有没有办法在 Python 中以编程方式执行此操作?

>>> x, y = '버리', '어'
>>> z = '버려'
>>> ord(z[-1])
47140
>>> ord(x[-1]), ord(y)
(47532, 50612)

有没有办法计算 47532 + 50612 -> 47140?

还有一些例子:

가보 + 아 -> 가봐

끝나 + ㄹ -> 끝날

最佳答案

我是韩国人。首先,如果您键入 버리어 + ,它将变为 버리어 而不是 버려버려버리어的缩写,不会自动生成。同样,가보한 不能在输入时自动变为 가봐

其次,相比之下,끝나 + 变为 끝날 因为 没有 jongseong(종성)。请注意,韩文的一个字符由 choseong(초성)、jungseong(중성) 和 jongseong 组成。 choseongjongseong 是辅音,jungseong 是元音。查看更多信息 Wikipedia .所以只有当打字时没有 jongseong 时(比如 끝나),它才有可能有 jongseong(ㄹ)。

如果你想把 버리 + 变成 버려,你应该实现一些韩语语法,特别是对于这种情况,缩写中城。例如 + = , + = 你提供的。 한글 맞춤법 chapter 4. section 5 (我现在找不到英文页面)这样定义缩写。这是可能的,但不是那么容易,尤其是对于非韩国人。

接下来,如果你想要的只是将 끝나 + 转换为 끝날,这可能是一个相对容易的工作,因为有'可以处理 choseongjungseongjongseong 的组合和分解的库。如果是 Python,我找到了 hgtk .您可以这样尝试(非实用代码):

# hgtk methods take one character at a time
cjj1 = hgtk.letter.decompose('나')  # ('ㄴ', 'ㅏ', '')
cjj2 = hgtk.letter.decompose('ㄹ')  # ('ㄹ', '', '')
if cjj1[2]) == '' and cjj2[1]) == '':
    cjj = (cjj1[0], cjj1[1], cjj2[0])
    cjj2 = None

不过,如果没有适当的韩文知识,将很难完成。

关于python - 有没有办法以编程方式将韩文 unicode 合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42479575/

相关文章:

php - 在 PHP 中将字符串拆分为 Unicode 字符数组的最佳方法是什么?

nlp - 使用sentiWordNet 查找特定单词的极性

java - NoClassDefFoundError斯坦福CoreNLP

javascript - 查找相交数组的列表

Python:破解 gc 之谜

python - 仅将字符串拆分为两部分

objective-c - NSString 似乎杀死了 unicode 字符

java - 在 Java 正则表达式中匹配 Unicode 破折号?

查找高频率模式后跟一组文本消息的算法

python - 在图像处理中澄清np.unique()值