一、问题的缘起
最近,有网友在我的视频下面留言,问我可否把英语单词进行音节的划分?我以前也有同样的想法,但是始终没有得到解决。但是,我想使用python,学习英语的人都很多,说不定有人已经编写了类似的模块供我们调用呢?
问题截图
于是,我就抱着试试看的心情,在网上搜了一下,果然,某搜索引擎上,已经给出了答案,经过测试,我发现这个pyphen是一个不错的模块,它可以自动把任意单词按照音节来划分,不同的音节中间添加"-",正好符合网友的要求,于时我就尝试探索了一下,结果还不错。
二、下载安装pyphen
这个模块需要在cmd下使用以下命令进行安装:
pip install pyphen
然后通过以下代码导入这个模块:
from pyphen import Pyphen
接着我们需要传入语言代码,英语的语言代码是:en_US,根据官网(http://pyphen.org)显示,这个模块支持37种语言。语言列表如下所示,这里面包括德语、法语、捷克语、丹麦语等,基本上都是欧洲的语言,可谓功能十分强大。
序号 | 英文 | 中文 |
1 | Afrikaans | 南非荷兰语 |
2 | Albanian | 阿尔巴尼亚语 |
3 | Belarusian | 白俄罗斯语 |
4 | Bulgarian | 保加利亚语 |
5 | Catalan | 加泰罗尼亚语 |
6 | Croatian | 克罗地亚语 |
7 | Czech | 捷克语 |
8 | Danish | 丹麦语 |
9 | Dutch | 荷兰语 |
10 | English (Great-Britain and United-States) | 英语(英美) |
11 | Esperanto | 世界语 |
12 | Estonian | 爱沙尼亚语 |
13 | French | 法语 |
14 | Galician | 加利西亚语 |
15 | German (Austria, Germany and Switzerland) | 德语(奥地利、德国和瑞士) |
16 | Greek | 希腊语 |
17 | Hungarian | 匈牙利语 |
18 | Icelandic | 冰岛语 |
19 | Indonesian | 印度尼西亚语 |
20 | Italian | 意大利语 |
21 | Lithuanian | 立陶宛语 |
22 | Latvian | 拉脱维亚语 |
23 | Mongolian | 蒙古语 |
24 | Norwegian (Bokmål and Nynorsk) | 挪威语(书面语和新挪威语) |
25 | Polish | 波兰语 |
26 | Portuguese (Brazil and Portugal) | 葡萄牙语(巴西和葡萄牙) |
27 | Romanian | 罗马尼亚语 |
28 | Russian | 俄语 |
29 | Serbian (cyrillic and latin) | 塞尔维亚语(西里尔字母和拉丁字母) |
30 | Slovak | 斯洛伐克语 |
31 | Slovenian | 斯洛文尼亚语 |
32 | Spanish | 西班牙语 |
33 | Swedish | 瑞典语 |
34 | Telugu | 泰卢固语 |
35 | Thai | 泰语 |
36 | Ukrainian | 乌克兰语 |
37 | Zulu | 祖鲁语 |
三、给英语单词划分音节
导入了这个划分音节的模块,下一步就可以轻松划分音节了。以下是人工智能给出的部分代码:
from pyphen import Pyphen
# 创建一个Pyphen对象,需要传入语言代码和可选的字典文件
# 如果不指定字典文件,pyphen将会使用在线服务
# 这里使用英语,并假设你已经有了英语的字典文件
# 文件路径可以是相对路径或者绝对路径
ph = Pyphen(lang='en_US', dict_path='path_to_your_dictionary_file.dict')
# 使用音节划分功能
word = 'revolution'
hyphenated = ph.inserted(word) # 返回音节划分后的单词
print(hyphenated) # 输出可能会是're-volu-tion'
对于英语单词音节的划分,我们可以省去导入字典,简化上述代码如下:
from pyphen import Pyphen
ph = Pyphen(lang='en_US')
# 使用音节划分功能
word = 'application'
hyphenated = ph.inserted(word) # 返回音节划分后的单词
print(hyphenated) # 输出可能会是'ap-pli-ca-tion'
以下是在Win7系统下测试成功的截图:
测试成功截图
如果是对于多个单词的音节切分,我们可以先把单词格式化为列表,再用for循环来遍历完成,这里就不再赘述。
四、学后总结
经过以上的操作,我终于可以在我多个软件中实现对单词音节的划分了,一下子把软件提升了一个档次。
这种音节划分无疑为学生牢固掌握单词的发音,熟悉单词的音节,更好练好口语提供了较好的方法。
更多的模块信息大家可以参考其在github上的仓库:GitHub - Kozea/Pyphen: Hy-phen-ation made easy