pyhanlp拼音转换与字符正则化

70次阅读
没有评论

共计 4560 个字符,预计需要花费 12 分钟才能阅读完成。

本篇内容主要讲解“pyhanlp 拼音转换与字符正则化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“pyhanlp 拼音转换与字符正则化”吧!

《汉字转拼音与简繁转换的 Java 实现》

from pyhanlp import *

# 繁简转化

print(HanLP.convertToTraditionalChinese(“以后等你当上皇后,就能买草莓庆祝了”。发现一根白头发))

print(HanLP.convertToSimplifiedChinese( 憑藉筆記簿型電腦寫程式 HanLP))

# 简体转台湾繁体

print(HanLP.s2tw( hankcs 在台湾写代码))

# 台湾繁体转简体

print(HanLP.tw2s( hankcs 在臺灣寫程式碼))

# 简体转香港繁体

print(HanLP.s2hk( hankcs 在香港写代码))

# 香港繁体转简体

print(HanLP.hk2s( hankcs 在香港寫代碼))

# 香港繁体转台湾繁体

print(HanLP.hk2tw( hankcs 在臺灣寫代碼))

# 台湾繁体转香港繁体

print(HanLP.tw2hk( hankcs 在香港寫程式碼))

# 香港 / 台湾繁体和 HanLP 标准繁体的互转

print(HanLP.t2tw( hankcs 在臺灣寫代碼))

print(HanLP.t2hk( hankcs 在臺灣寫代碼))

print(HanLP.tw2t( hankcs 在臺灣寫程式碼))

print(HanLP.hk2t( hankcs 在台灣寫代碼))

「以後等你當上皇后,就能買草莓慶祝了」。發現一根白頭髮

凭借笔记本电脑写程序 HanLP

hankcs 在臺灣寫程式碼

hankcs 在台湾写代码

hankcs 在香港寫代碼

hankcs 在香港写代码

hankcs 在臺灣寫程式碼

hankcs 在香港寫代碼

hankcs 在臺灣寫程式碼

hankcs 在台灣寫代碼

hankcs 在臺灣寫代碼

hankcs 在臺灣寫代碼

汉字转拼音

HanLP 中的汉字转拼音功能也十分的强大。

说明

HanLP 不仅支持基础的汉字转拼音,还支持声母、韵母、音调、音标和输入法首字母首声母功能。

HanLP 能够识别多音字,也能给繁体中文注拼音。

最重要的是,HanLP 采用的模式匹配升级到 AhoCorasickDoubleArrayTrie,性能大幅提升,能够提供毫秒级的响应速度!

算法详解

《汉字转拼音与简繁转换的 Java 实现》

# 汉字转拼音

Pinyin = JClass(com.hankcs.hanlp.dictionary.py.Pinyin)

text = 重载不是重任!

pinyin_list = HanLP.convertToPinyinList(text)

print(原文,, end=)

print(text)

print(拼音(数字音调),, end=)

print(pinyin_list)

print(拼音(符号音调),, end=)

for pinyin in pinyin_list:

    print(%s, % pinyin.getPinyinWithToneMark(), end= )

print(\n 拼音(无音调),, end=)

for pinyin in pinyin_list:

    print(%s, % pinyin.getPinyinWithoutTone(), end= )

print(\n 声调,, end=)

for pinyin in pinyin_list:

    print(%s, % pinyin.getTone(), end= )

print(\n 声母,, end=)

for pinyin in pinyin_list:

    print(%s, % pinyin.getShengmu(), end= )

print(\n 韵母,, end=)

for pinyin in pinyin_list:

    print(%s, % pinyin.getYunmu(), end= )

print(\n 输入法头,, end=)

for pinyin in pinyin_list:

    print(%s, % pinyin.getHead(), end= )

print()

# 拼音转换可选保留无拼音的原字符

print(HanLP.convertToPinyinString( 截至 2012 年,, , True))

print(HanLP.convertToPinyinString( 截至 2012 年,, , False))

原文,重载不是重任!

拼音(数字音调),[chong2, zai3, bu2, shi4, zhong4, ren4, none5]

拼音(符号音调),chóng, zǎi, bú, shì, zhòng, rèn, none, 

拼音(无音调),chong, zai, bu, shi, zhong, ren, none, 

声调,2, 3, 2, 4, 4, 4, 5, 

声母,ch, z, b, sh, zh, r, none, 

韵母,ong, ai, u, i, ong, en, none, 

输入法头,ch, z, b, sh, zh, r, none, 

jie zhi none none none none nian none

jie zhi 2 0 1 2 nian,

拼音转中文

HanLP 中的数据结构和接口是灵活的,组合这些接口,可以自己创造新功能,我们可以使用 AhoCorasickDoubleArrayTrie 实现的最长分词器,需要用户调用 setTrie() 提供一个 AhoCorasickDoubleArrayTrie

StringDictionary = JClass(

    com.hankcs.hanlp.corpus.dictionary.StringDictionary )

CommonAhoCorasickDoubleArrayTrieSegment = JClass(

    com.hankcs.hanlp.seg.Other.CommonAhoCorasickDoubleArrayTrieSegment )

Config = JClass(com.hankcs.hanlp.HanLP$Config)

TreeMap = JClass(java.util.TreeMap)

TreeSet = JClass(java.util.TreeSet)

dictionary = StringDictionary()

dictionary.load(Config.PinyinDictionaryPath)

entry = {}

m_map = TreeMap()

for entry in dictionary.entrySet():

    pinyins = entry.getValue().replace( [\\d,] , )

    words = m_map.get(pinyins)

    if words is None:

        words = TreeSet()

        m_map.put(pinyins, words)

    words.add(entry.getKey())

words = TreeSet()

words.add(绿色)

words.add(滤色)

m_map.put(lvse , words)

segment = CommonAhoCorasickDoubleArrayTrieSegment(m_map)

print(segment.segment( renmenrenweiyalujiangbujianlvse))

print(segment.segment( lvsehaihaodajiadongxidayinji))

[renmenrenweiyalujiangbujian/null, lvse/[ 滤色, 绿色]][lvse/[ 滤色, 绿色], haihaodajiadongxidayinji/null]

字符正则化

演示正规化字符配置项的效果(繁体 - 简体,全角 - 半角,大写 - 小写)。

该配置项位于 hanlp.properties 中,通过 Normalization=true 来开启(现在直接通过 HanLP.Config.Normalization 开启即可)。

切换配置后必须删除 CustomDictionary.txt.bin 缓存,否则只影响动态插入的新词。

在我动笔前一个星期,已经有同学添加了,添加自定义词典之后,自动删除缓存的功能。地址请点击 https://github.com/hankcs/HanLP/pull/954,现在只需要开启正则化即可

CustomDictionary =JClass(com.hankcs.hanlp.dictionary.CustomDictionary)

print(HanLP.Config.Normalization = False\n)

HanLP.Config.Normalization = False

CustomDictionary.insert(爱听 4G , nz 1000)

print(HanLP.segment( 爱听 4g))

print(HanLP.segment( 爱听 4G))

print(HanLP.segment( 爱听4G))

print(HanLP.segment( 爱听4G))

print(HanLP.segment( 愛聽4G))

print(HanLP.segment( 喜欢4G))

print(HanLP.segment( hankcs 在臺灣寫代碼))

print(\nHanLP.Config.Normalization = True\n)

HanLP.Config.Normalization = True

print(HanLP.segment( 爱听 4g))

print(HanLP.segment( 爱听 4G))

print(HanLP.segment( 爱听4G))

print(HanLP.segment( 爱听4G))

print(HanLP.segment( 愛聽4G))

print(HanLP.segment( 喜欢4G))

print(HanLP.segment( hankcs 在臺灣寫代碼))

HanLP.Config.ShowTermNature = False

text = HanLP.s2tw(现在的 HanLP 已经添加了添加自定义词典之后,自动删除缓存的功能, 现在只需要开启正则化即可)

print(text)

print(HanLP.segment(text))

HanLP.Config.ShowTermNature = False

HanLP.Config.Normalization = False

[爱听 4g][爱听 4G][爱, 听, 4, G][爱, 听, 4, G][愛, 聽, 4, G][喜欢, 4, G][hankcs, 在, 臺, 灣寫, 代, 碼]

HanLP.Config.Normalization = True

[爱听 4g][爱听 4g][爱听 4g][爱听 4g][爱听 4g][喜欢, 4, g][hankcs, 在, 台湾, 写, 代码]

現在的 HanLP 已經新增了新增自定義詞典之後,自動刪除快取的功能, 現在只需要開啟正則化即可

[现在, 的, hanlp, 已经, 新增, 了, 新增, 自定义, 词典, 之后, ,, 自动, 删除, 快, 取, 的, 功能, ,, 现在, 只, 需要, 开启, 正, 则, 化, 即可]

到此,相信大家对“pyhanlp 拼音转换与字符正则化”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-28发表,共计4560字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)