韩国语jamo的一个库被分割并矢量化。

jamotools的Python项目详细描述


Build StatusGitHub TagPyPI versionPython versionLicense

韩国语jamo的一个库被分割并矢量化。

安装

pip install jamotools

韩语的Unicode

根据Unicode联盟的9.0.0版数据库, unicode中hangul(朝鲜语)中指定的块如下。

  • 朝鲜文Jamo:1100~11ff
  • 中签货币符号:20A9
  • 朝鲜文中日韩符号和标点符号中的点音标记:302e~302f
  • 朝鲜文兼容jamo:3130~318f
  • 朝鲜文,随函附上中日韩文字和月份:3200~321E,3260~327F
  • 朝鲜文Jamo扩展-a:a960~a97f
  • 朝鲜文音节:ac00~d7af
  • 朝鲜文Jamo扩展-b:d7b0~d7ff
  • 半形和全形半形朝鲜文变体:ffa0~ 飞行数据中心
  • 全角半宽和全角形式的Won签到:ffe6

杰莫

朝鲜文由名为jamo的基本字母组成。在unicode中,jamo是 定义为包含旧朝鲜文的几种 现在。jamotools只支持以下现代朝鲜文jamo区域。

  • Hangul Jamo:由 初声,中声,终声。它分为现代韩国语和古代韩国语 现在不用的朝鲜文。Jamotools支持现代 朝鲜文Jamo区。
    • 1100~1112(初声)
    • 1161~1175(中声)
    • 11A8~11C2(钟声)
  • Hangul Compatibility Jamo:是韩国人。 与朝鲜文字符兼容的朝鲜文语言区 标准(Ks x 1001)。它不分初声,中声, 终声
  • 3131~3163(现代朝鲜文Jamo区)
  • Halfwidth Hangul variants:这是 韩国语半角符号区。只有现代韩国尊宝存在。这个 一般韩国语特征化方法是全宽度。
  • ffa1~ffdc
  • 操纵韩式jamo

    用于拆分音节和将jamos连接到音节的api基于 hangul-utils

    • split_syllables:将一个音节字符串转换为一个 jamos,可以选择哪个转换unicode类型。
    • join_jamos:将jamos字符串转换为音节字符串。
    • normalize_to_compat_jamo:将jamos字符串规范化为字符串 关于朝鲜文兼容性jamo
    >>>importjamotools>>>print(jamotools.split_syllable_char(u"안"))('ㅇ','ㅏ','ㄴ')>>>print(jamotools.split_syllables(u"안녕하세요"))ㅇㅏㄴㄴㅕㅇㅎㅏㅅㅔㅇㅛ>>>sentence=u"앞 집 팥죽은 붉은 팥 풋팥죽이고, 뒷집 콩죽은 햇콩 단콩 콩죽.우리 집깨죽은검은깨죽인데사람들은햇콩단콩콩죽깨죽죽먹기를싫어하더라.">>>s=jamotools.split_syllables(sentence)>>>print(s)ㅇㅏㅍㅈㅣㅂㅍㅏㅌㅈㅜㄱㅇㅡㄴㅂㅜㄺㅇㅡㄴㅍㅏㅌㅍㅜㅅㅍㅏㅌㅈㅜㄱㅇㅣㄱㅗ,ㄷㅟㅅㅈㅣㅂㅋㅗㅇㅈㅜㄱㅇㅡㄴㅎㅐㅅㅋㅗㅇㄷㅏㄴㅋㅗㅇㅋㅗㅇㅈㅜㄱ.ㅇㅜㄹㅣㅈㅣㅂㄲㅐㅈㅜㄱㅇㅡㄴㄱㅓㅁㅇㅡㄴㄲㅐㄲㅐㅈㅜㄱㅇㅣㄴㄷㅔㅅㅏㄹㅏㅁㄷㅡㄹㅇㅡㄴㅎㅐㅅㅋㅗㅇㄷㅏㄴㅋㅗㅇㅋㅗㅇㅈㅜㄱㄲㅐㅈㅜㄱㅈㅜㄱㅁㅓㄱㄱㅣㄹㅡㄹㅅㅣㅀㅇㅓㅎㅏㄷㅓㄹㅏ.>>>sentence2=jamotools.join_jamos(s)>>>print(sentence2)팥죽은붉은풋팥죽이고,뒷집콩죽은햇콩단콩콩죽.우리깨죽은검은깨죽인데사람들은햇콩단콩콩죽깨죽죽먹기를싫어하더라.>>>print(sentence==sentence2)True

    jamotools的api支持朝鲜文jamo的多个unicode区域 操纵。还包括用于操作朝鲜语的附加api 杰莫。

    >>>sentence=u"자모">>>jamos1=jamotools.split_syllables(sentence,jamo_type="JAMO")>>>print([hex(ord(c))forcinjamos1])['0x110C','0x1161','0x1106','0x1169']>>>sentence1=jamotools.join_jamos(jamos1)>>>print(sentence1)안녕하세요.hello1>>>jamos2=jamotools.split_syllables(sentence,jamo_type="COMPAT")>>>print([hex(ord(c))forcinjamos2])['0x3148','0x314F','0x3141','0x3157']>>>sentence2=jamotools.join_jamos(jamos2)>>>print(sentence2)안녕하세요.hello1>>>jamos3=jamotools.split_syllables(sentence,jamo_type="HALFWIDTH")>>>print([hex(ord(c))forcinjamos3])['0xFFB8','0xFFC2','0xFFB1','0xFFCC']>>>sentence3=jamotools.join_jamos(jamos3)>>>print(sentence3)안녕하세요.hello1>>>print(sentence==sentence1==sentence2==sentence3)True>>>normalize1=jamotools.normalize_to_compat_jamo(jamos1)>>>normalize2=jamotools.normalize_to_compat_jamo(jamos2)>>>normalize3=jamotools.normalize_to_compat_jamo(jamos3)>>>print(jamos1==jamos2==jamos3)False>>>print(normalize1==normalize2==normalize3)True

    将韩式jamo矢量化

    jamotools支持遵循规则的矢量化函数。每个规则都是 定义了如何将句子拆分为jamo并转换哪种类型的符号。它 可以使用字符级韩文文本处理。

    • Vectorizationer:用于按规则和pad对文本进行矢量化的类。
    >>>v=jamotools.Vectorizationer(rule=jamotools.rules.RULE_1, \
                                      max_length=None, \
                                      prefix_padding_size=0)>>>print(v.vectorize(u"안녕"))[13,21,45,4,27,62]

    自定义规则

    jamotools可以按照以下步骤添加用户的自定义规则类。

    1. 在中生成继承RuleBase(例如Rule2)的自定义规则类 rules.py 就像规则1。
    2. 为自定义规则添加常量,如 RULE_1
    3. 修改 get_rule 函数返回自定义规则类。

    然后它可以使用与规则1相同的用法。

    >>>v=jamotools.Vectorizationer(rule=jamotools.rules.RULE_2, \
                                      max_length=None, \
                                      prefix_padding_size=0)

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


    热门话题
    java从文件扫描二维字符串数组   java SOAP请求xml内容作为字符串:prolog中不允许内容,并且文件过早结束错误   java从db类获取列表<string>,并存储在其他类中   java libgdx progressbar未显示在主屏幕上   如何正确地为在Java中的ArrayList中实现Compariable的对象实现方法?   在JavaSwing中删除JTable中的复选框   Web请求中的java默认地址:sendRedirect:绝对路径与相对路径   java找不到符号。正在查找超类而不是子类   java如何从开放位置代码获取完整代码   java在Android中有没有一种在seekbar上画线的方法?   java如何访问索引页?   java设置POI XWPFParagraph行间距   java在使用jCo(3.x))访问SAP表时未获取数据   使用POST客户端的java JSON字符串   Raspberry Pi3b+上嵌入的java JavaFX:在触摸屏上多次按下后,错误的按钮被激活   java控制操作的奇怪形式   maven java。lang.NoSuchMethodError:在。项目实体预订预订getOrCreateDayDetail   java注释HBM的长度是多少?   持久化实体对象时发生java Hibernate IllegalArgumentException:无法将字段“id”设置为实体对象?