`

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

 
阅读更多

 

 

汉字转拼音

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

说明

<!--[if !supportLists]--><!--[endif]-->HanLP不仅支持基础的汉字转拼音,还支持声母、韵母、音调、音标和输入法首字母首声母功能。

<!--[if !supportLists]--><!--[endif]-->HanLP能够识别多音字,也能给繁体中文注拼音。

<!--[if !supportLists]--><!--[endif]-->最重要的是,HanLP采用的模式匹配升级到AhoCorasickDoubleArrayTrie,性能大幅提升,能够提供毫秒级的响应速度!

算法详解

<!--[if !supportLists]--><!--[endif]-->《汉字转拼音与简繁转换的Java实现》

<!--[if !supportLists]-->1. <!--[endif]--># 汉字转拼音

<!--[if !supportLists]-->2. <!--[endif]-->Pinyin = JClass("com.hankcs.hanlp.dictionary.py.Pinyin")

<!--[if !supportLists]-->3. <!--[endif]-->text = "重载不是重任!"

<!--[if !supportLists]-->4. <!--[endif]-->pinyin_list = HanLP.convertToPinyinList(text)

 

<!--[if !supportLists]-->5. <!--[endif]-->print("原文,", end=" ")

<!--[if !supportLists]-->6. <!--[endif]-->print(text)

<!--[if !supportLists]-->7. <!--[endif]-->print("拼音(数字音调),", end=" ")

<!--[if !supportLists]-->8. <!--[endif]-->print(pinyin_list)

<!--[if !supportLists]-->9. <!--[endif]-->print("拼音(符号音调),", end=" ")

<!--[if !supportLists]-->10. <!--[endif]-->for pinyin in pinyin_list:

<!--[if !supportLists]-->11. <!--[endif]-->print("%s," % pinyin.getPinyinWithToneMark(), end=" ")

<!--[if !supportLists]-->12. <!--[endif]-->print("\n拼音(无音调),", end=" ")

<!--[if !supportLists]-->13. <!--[endif]-->for pinyin in pinyin_list:

<!--[if !supportLists]-->14. <!--[endif]-->print("%s," % pinyin.getPinyinWithoutTone(), end=" ")

<!--[if !supportLists]-->15. <!--[endif]-->print("\n声调,", end=" ")

<!--[if !supportLists]-->16. <!--[endif]-->for pinyin in pinyin_list:

<!--[if !supportLists]-->17. <!--[endif]-->print("%s," % pinyin.getTone(), end=" ")

<!--[if !supportLists]-->18. <!--[endif]-->print("\n声母,", end=" ")

<!--[if !supportLists]-->19. <!--[endif]-->for pinyin in pinyin_list:

<!--[if !supportLists]-->20. <!--[endif]-->print("%s," % pinyin.getShengmu(), end=" ")

<!--[if !supportLists]-->21. <!--[endif]-->print("\n韵母,", end=" ")

<!--[if !supportLists]-->22. <!--[endif]-->for pinyin in pinyin_list:

<!--[if !supportLists]-->23. <!--[endif]-->print("%s," % pinyin.getYunmu(), end=" ")

<!--[if !supportLists]-->24. <!--[endif]-->print("\n输入法头,", end=" ")

<!--[if !supportLists]-->25. <!--[endif]-->for pinyin in pinyin_list:

<!--[if !supportLists]-->26. <!--[endif]-->print("%s," % pinyin.getHead(), end=" ")

 

<!--[if !supportLists]-->27. <!--[endif]-->print()

<!--[if !supportLists]-->28. <!--[endif]--># 拼音转换可选保留无拼音的原字符

<!--[if !supportLists]-->29. <!--[endif]-->print(HanLP.convertToPinyinString("截至2012年,", " ", True))

<!--[if !supportLists]-->30. <!--[endif]-->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,

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

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

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, 已经, 新增, 了, 新增, 自定义, 词典, 之后, ,, 自动, 删除, 快, 取, 的

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

 

 

分享到:
评论

相关推荐

    基于Python和Java语言的汉语言处理工具HanLP设计源码

    该项目为基于Python和Java语言的汉语言处理工具HanLP的设计源码,总计包含588个文件,其中Python文件419个,Markdown文件146个,reStructuredText文件8个,Java文件6个,YAML文件2个,Python扩展文件2个,Git忽略...

    拼音转换日语工具dictory

    《拼音转换日语工具dictory详解》 学习一门新的语言总是充满挑战,而对于中文和日语这两种拥有不同书写系统和发音规则的语言而言,更是如此。在学习和研究日语的过程中,一个能够将中文拼音转换为日语汉字及读音的...

    汉语言处理包

    HanLP是由一系列模型与算法组成的Java工具包,目标是普及自然语言处理在生产环境中的应用。不仅仅是分词,而是提供词法分析、句法分析、语义理解等完备的功能。HanLP具备功能完善、性能高效、架构清晰、语料时新、可...

    Python-汉字拼音转换工具Python版

    总之,Python中的汉字拼音转换工具,如`pypinyin`库,是处理中文文本的重要工具,它简化了汉字到拼音的转换过程,极大地便利了自然语言处理任务的实现。无论是在搜索引擎优化、文本分析还是语音识别等领域,都能看到...

    汉字转换拼音 java

    在IT行业中,尤其是在文本处理和自然语言处理领域,汉字转换拼音是一个常见的需求。Java作为一种广泛使用的编程语言,提供了丰富的库和工具来实现这一功能。本文将深入探讨如何使用Java进行汉字转换拼音,以及如何...

    python-pinyin, 汉字拼音转换工具 Python 版(pypinyin)。.zip

    总的来说,Python-pinyin(pypinyin)库是Python开发人员处理汉字与拼音转换的强大工具,它简化了这个过程,为各种应用场景提供了便捷的支持。开源特性使得它不断进化和完善,适应更多新的需求。如果你在工作中涉及...

    VB拼音转换及输出程序.rar

    拼音转换可将整篇文章迅速转换成带有声调的拼音,支持全拼显示、按字显示、按词显示、汉拼上下对照显示,以一词一拼音的方式显示,以字、拼音上下对照的方式显示,以一字一拼音的方式显示,全部显示拼音等。...

    文章译成拼音工具

    《文章译成拼音工具》是一款旨在简化汉字拼音转换过程的软件,提供了一个集查字、查词和全文拼音转换于一体的平台。该工具界面设计简洁明了,使用方便,旨在为有需要的用户提供一个高效、便捷的汉字拼音转换服务。...

    易语言文本和16进制相互转换工具

    《易语言文本与16进制转换工具详解》 在计算机科学中,数据的表示形式多样,其中文本和16进制是常见的两种表达方式。易语言作为一种中文编程语言,为开发者提供了方便的接口和方法来实现这两种形式的转换。本文将...

    汉语拼音数据集以及工具

    这个数据集及工具集旨在提供一个高效、准确的资源,用于获取汉字对应的拼音信息,适用于多种应用场景,如语音识别、自然语言处理、搜索引擎优化等。 首先,我们需要理解汉语拼音的基本概念。汉语拼音是中华人民...

    c++拼音处理类.rar

    本资源“c++拼音处理类.rar”提供了一个专为C++设计的拼音处理类,它允许开发者轻松地进行汉字到拼音的转换,这对于需要处理中文文本的项目尤其有用。下面将详细探讨这个C++拼音处理类的功能、实现方式以及可能的...

    汉语拼音转换汉字假名软件

    这样,用户便可以轻松进行大量的语言转换工作,而不需要手动查找每一个转换对应关系。 从学习者的角度出发,这款软件能够帮助他们更有效地掌握日语发音,从而提高学习效率。例如,学习者可以通过该软件确认自己发音...

    汉字转换为拼音 汉字转换成拼音

    在IT领域,汉字转换为拼音是一项重要的技术,特别是在自然语言处理、语音识别、搜索引擎优化(SEO)以及中文软件开发中有着广泛的应用。本篇将详细探讨这个主题,以VC++编程语言为背景。 首先,汉字转换为拼音,也...

    汉语言文学论文.doc

    【汉语言文学的内容与教育】 汉语言文学涵盖了汉语的研究以及以其为基础的文学创作。汉语言是研究的对象,包括语音、词汇、语法、修辞等方面;而汉语言文学则关注文学作品的创作、分析、欣赏和批评,涉及诗歌、小说...

    汉字拼音转换工具(Python 版)-python

    总的来说,这个Python版的汉字拼音转换工具是自然语言处理领域的一个实用工具,它简化了开发者处理汉字拼音的工作,提高了代码的可读性和可维护性,同时也拓宽了中文信息处理的可能性。无论是在教育、科研还是商业...

    汉语言文学信息化发展与才情培养策略精品文档.doc

    "汉语言文学信息化发展与才情培养策略" 本文探讨了汉语言文学信息化发展与才情培养策略,旨在探索汉语言文学信息化发展的重要趋势,并提出策略性探讨,以满足社会发展需求和人才培养需求。 1. 信息化对于学科的...

    汉语言文学专业职业生涯规划书

    汉语言文学专业职业生涯规划书

    把汉字转换成拼音的PHP类

    在PHP编程语言中,处理汉字转换为拼音的需求是常见的,特别是在中文网站的SEO优化、关键词提取或者搜索引擎友好接口设计等方面。这个"把汉字转换成拼音的PHP类"提供了一个便捷的解决方案,允许开发者将汉字字符串...

    简单音汉转换

    "简单音汉转换"这个项目显然专注于提供一种工具或算法,使得用户能够便捷地进行汉字与拼音之间的相互转换。以下是根据标题和描述详细阐述的几个关键知识点: 1. **常用汉字库的音汉转换**:这涉及到一个庞大的汉字...

    汉语言文学专业大学生职业生涯规划书

    汉语言文学专业大学生职业生涯规划书

Global site tag (gtag.js) - Google Analytics