漢語言處理工具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, 已經, 新增, 了, 新增, 自定義, 詞典, 以後, ,, 自動, 刪除, 快, 取, 的

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

相關文章
相關標籤/搜索