汉语言处理工具pyhanlp的拼音转换与字符正则化

汉字转拼音java

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

说明github

  1. HanLP不只支持基础的汉字转拼音,还支持声母、韵母、音调、音标和输入法首字母首声母功能。
  2. HanLP可以识别多音字,也能给繁体中文注拼音。
  3. 最重要的是,HanLP采用的模式匹配升级到AhoCorasickDoubleArrayTrie,性能大幅提高,可以提供毫秒级的响应速度!

算法详解算法

  1. 《汉字转拼音与简繁转换的Java实现》
  1. # 汉字转拼音
  2. Pinyin = JClass("com.hankcs.hanlp.dictionary.py.Pinyin")
  3. text = "重载不是重任!"
  4. pinyin_list = HanLP.convertToPinyinList(text)

 

  1. print("原文,", end=" ")
  2. print(text)
  3. print("拼音(数字音调),", end=" ")
  4. print(pinyin_list)
  5. print("拼音(符号音调),", end=" ")
  6. for pinyin in pinyin_list:
  7. print("%s," % pinyin.getPinyinWithToneMark(), end=" ")
  8. print("\n拼音(无音调),", end=" ")
  9. for pinyin in pinyin_list:
  10. print("%s," % pinyin.getPinyinWithoutTone(), end=" ")
  11. print("\n声调,", end=" ")
  12. for pinyin in pinyin_list:
  13. print("%s," % pinyin.getTone(), end=" ")
  14. print("\n声母,", end=" ")
  15. for pinyin in pinyin_list:
  16. print("%s," % pinyin.getShengmu(), end=" ")
  17. print("\n韵母,", end=" ")
  18. for pinyin in pinyin_list:
  19. print("%s," % pinyin.getYunmu(), end=" ")
  20. print("\n输入法头,", end=" ")
  21. for pinyin in pinyin_list:
  22. print("%s," % pinyin.getHead(), end=" ")

 

  1. print()
  2. # 拼音转换可选保留无拼音的原字符
  3. print(HanLP.convertToPinyinString("截至2012年,", " ", True))
  4. print(HanLP.convertToPinyinString("截至2012年,", " ", False))

 

1.原文, 重载不是重任!缓存

2.拼音(数字音调), [chong2, zai3, bu2, shi4, zhong4, ren4, none5]数据结构

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

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

5.声调, 2, 3, 2, 4, 4, 4, 5,接口

6.声母, ch, z, b, sh, zh, r, none,get

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

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

9.jie zhi none none none none nian none

10.jie zhi 2 0 1 2 nian ,

拼音转中文

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

 

1.StringDictionary = JClass(

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

3.CommonAhoCorasickDoubleArrayTrieSegment = JClass(

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

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

6.

7.TreeMap = JClass("java.util.TreeMap")

8.TreeSet = JClass("java.util.TreeSet")

9.

10.dictionary = StringDictionary()

11.dictionary.load(Config.PinyinDictionaryPath)

12.entry = {}

13.m_map = TreeMap()

14.for entry in dictionary.entrySet():

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

16.words = m_map.get(pinyins)

17.if words is None:

18.words = TreeSet()

19.m_map.put(pinyins, words)

20.words.add(entry.getKey())

21.words = TreeSet()

22.words.add("绿色")

23.words.add("滤色")

24.m_map.put("lvse", words)

25.

26.segment = CommonAhoCorasickDoubleArrayTrieSegment(m_map)

27.print(segment.segment("renmenrenweiyalujiangbujianlvse"))

28.print(segment.segment("lvsehaihaodajiadongxidayinji"))

 

1.[renmenrenweiyalujiangbujian/null, lvse/[滤色, 绿色]]

2.[lvse/[滤色, 绿色], haihaodajiadongxidayinji/null]

 

字符正则化

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

该配置项位于hanlp.properties中,经过Normalization=true来开启(如今直接经过HanLP.Config.Normalization开启便可)。

 

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

在我动笔前一个星期,已经有同窗添加了,添加自定义词典以后,自动删除缓存的功能。地址请参阅github.com/hankcs/HanLP/pull/954,如今只须要开启正则化便可

 

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

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

3.HanLP.Config.Normalization = False

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

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

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

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

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

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

10.

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

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

 

13.

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

15.HanLP.Config.Normalization = True

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

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

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

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

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

21.

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

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

24.

25.HanLP.Config.ShowTermNature = False

27.text = HanLP.s2tw("如今的HanLP已经添加了添加自定义词典以后,自动删除缓存的功能,如今只须要开启正则化便可")

28.print(text)

29.print(HanLP.segment(text))

30.HanLP.Config.ShowTermNature = False

 

1.HanLP.Config.Normalization = False

2.

3.[爱听4g]

4.[爱听4G]

5.[爱, 听, 4, G]

6.[爱, 听, 4, G]

7.[愛, 聽, 4, G]

8.[喜欢, 4, G]

9.[hankcs, 在, 臺, 灣寫, 代, 碼]

10.

11.HanLP.Config.Normalization = True

12.

13.[爱听4g]

14.[爱听4g]

15.[爱听4g]

16.[爱听4g]

17.[爱听4g]

18.[喜欢, 4, g]

19.[hankcs, 在, 台湾, 写, 代码]

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

21.[如今, 的, hanlp, 已经, 新增, 了, 新增, 自定义, 词典, 以后, ,, 自动, 删除, 快, 取, 的

---------------------

相关文章
相关标签/搜索