- 使用
pypinyin
包
import pypinyin
from pypinyin import pinyin, lazy_pinyin
import itertools
text = '追剧、听音乐'
# heteronym 开启多音字选项, NORMAL不带声调
ans = list(itertools.product(*pinyin(text, heteronym=True, style=pypinyin.NORMAL)))
print(ans)
输出:
代码语言:javascript复制[('zhui', 'ju', '、', 'ting', 'yin', 'yue'),
('zhui', 'ju', '、', 'yin', 'yin', 'yue'),
('zhui', 'ju', '、', 'yi', 'yin', 'yue'),
('dui', 'ju', '、', 'ting', 'yin', 'yue'),
('dui', 'ju', '、', 'yin', 'yin', 'yue'),
('dui', 'ju', '、', 'yi', 'yin', 'yue'),
('tui', 'ju', '、', 'ting', 'yin', 'yue'),
('tui', 'ju', '、', 'yin', 'yin', 'yue'),
('tui', 'ju', '、', 'yi', 'yin', 'yue')]
吐槽一下,这个包输出的多音字有些是不对的,如上面的听
字不对
另外,注意 itertools.product
的结果是指数级增长的,多音字符数过多,会计算不出来结果(组合数太多,内存溢出、计算时间长)