NLP—中文预处理之繁简体转换及获取拼音
在日常的中文NLP中,经常会涉及到中文的繁简体转换以及拼音的标注等问题,本文将介绍这两个方面的实现。
首先是中文的繁简体转换,不需要使用额外的Python模块,至需要以下两个Python代码文件即可:
-
langconv.py 地址: https://raw.githubusercontent.com/skydark/nstools/master/zhtools/langconv.py
-
zh_wiki.py 地址:https://raw.githubusercontent.com/skydark/nstools/master/zhtools/zh_wiki.py
示例代码如下(将代码文件与langconv.py与zh_wiki.py放在同一目录下):
from langconv import * # 转换繁体到简体 def cht_2_chs(line): line = Converter('zh-hans').convert(line) line.encode('utf-8') return line line_cht= ''' 台北市長柯文哲今在臉書開直播,先向網友報告自己3月16日至24日要出訪美國東部4城市,接著他無預警宣布, 2月23日要先出訪以色列,預計停留4至5天。雖他強調台北市、以色列已在資安方面有所交流,也可到當地城市交流、 參觀產業創新等內容,但柯也說「也是去看看一個小國在這麼惡劣環境,howtosurvive,他的祕訣是什麼?」這番話, 也被解讀,頗有更上層樓、直指總統大位的思維。 ''' line_cht = line_cht.replace('\n', '') ret_chs = cht_2_chs(line_cht) print(ret_chs) # 转换简体到繁体 def chs_2_cht(sentence): sentence = Converter('zh-hant').convert(sentence) return sentence line_chs = '忧郁的台湾乌龟' line_cht = chs_2_cht(line_chs) print(line_cht)
输出的结果如下:
台北市长柯文哲今在脸书开直播,先向网友报告自己3月16日至24日要出访美国东部4城市,接着他无预警宣布,2月23日要先出访以色列,预计停留4至5天。虽他强调台北市、以色列已在资安方面有所交流,也可到当地城市交流、参观产业创新等内容,但柯也说「也是去看看一个小国在这么恶劣环境,howtosurvive,他的祕诀是什么?」这番话,也被解读,颇有更上层楼、直指总统大位的思维。
接着是获取中文汉字的拼音,这方面的Python模块有xpinyin, pypinyin等。本文以xpinyin为例,展示如何获取汉字的拼音。示例代码如下:
from xpinyin import Pinyin p = Pinyin() # 默认分隔符为- print(p.get_pinyin("上海")) # 显示声调 print(p.get_pinyin("上海", tone_marks='marks')) print(p.get_pinyin("上海", tone_marks='numbers')) # 去掉分隔符 print(p.get_pinyin("上海", '')) # 设为分隔符为空格 print(p.get_pinyin("上海", ' ')) # 获取拼音首字母 print(p.get_initial("上")) print(p.get_initials("上海")) print(p.get_initials("上海", '')) print(p.get_initials("上海", ' '))
输出结果如下:
shang-hai shàng-hǎi shang4-hai3 shanghai shang hai S S-H SH S H