python获取同音字

利用汉字转拼音项目,简单实现获取一个汉字的同音字

1. 安装汉字转拼音包

pip install pypinyin

2.  获取所有汉字的拼音表示,相同拼音的汉字存储在以拼音为key的字典中,考虑声调

from pypinyin import pinyin, lazy_pinyin, Style
import os
import pickle


def get_all_char_pinyin():
    path = "all_3500_chars.txt"
    pinyin_dict = {}
    with open(path, "r", encoding="utf-8") as f:
        for line in f.readlines():
            ch = line.strip()
            ch_pinyin = pinyin(ch, style=Style.TONE3, heteronym=False)
            # heteronym 是否启用多音字模式
            for p_li in ch_pinyin:
                for p in p_li:
                    if p not in pinyin_dict:
                        pinyin_dict[p] = [ch]
                    else:
                        pinyin_dict[p].append(ch)
    return pinyin_dict

all_3500_chars.txt 是常见的3500汉字,一行一个汉字,例如:

的
年
是
一
为
在
中
国
于
人
有
大
和
个
了

3. 获取同音字

if __name__ == '__main__':
    pinyin_dict = get_all_char_pinyin()

    # 获取同音汉字
    similarity_dict = {}
    match_char = "明"
    ch_pinyin = pinyin(match_char, style=Style.TONE3, heteronym=False)
    res = []
    for p_li in ch_pinyin:
        for p in p_li:
            print(p)
            if match_char in pinyin_dict[p]:
                pinyin_dict[p].remove(match_char)
            res.extend(pinyin_dict[p])
    print(res)

4. 输出

ming2
['名', '铭', '鸣', '冥']

相关链接

NLP(四十七)文本纠错之获取形近字_山阴少年的博客-CSDN博客

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旺旺棒棒冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值