韩国语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如何在Salesforce中查询自定义对象?   RichFaces 4中的java ExtendedDataTable:数据模型处理   java Android类层次结构和带有片段的接口   java如何在文件中保存JLabel的颜色/大小?   java编辑类中的返回值而不修改类本身?   安卓如何替换字符串java中的ï»   1.3.7.发布>1.4.1。发布| java。lang.NoSuchMethodError:org。springframework。靴子建设者SpringApplicationBuilder。展示横幅   java列表保存在模型中,而不在setter中进行设置   java如何打开一个窗口。windows中的ks文件?   Java HashMap获取值(其中大部分值)   vps的javascript Websocketurl?   使用byte buddy或某些库进行java评测   java Dom4j获取单节点文本值