语音特征操作库
项目描述
DistFeat Python库
DistFeat是一个用于操作音位特征(分段/区分)的Python库。
安装和使用
该库可以作为任何标准Python库使用pip安装,并按以下示例代码使用
在任何标准Python环境中,可以使用以下命令安装distfeat
$ pip install distfeat
注意,上述命令将安装pyclts
依赖项,但默认情况下不会下载任何版本的CLTS数据。
有关如何使用库的详细说明将在官方文档中提供。代码文档和测试用例详细说明了用法,以及以下部分。
展示
通过一个DistFeat
类提供功能,该类在实例化时将自动加载标准模型
>>> import distfeat
>>> df = distfeat.DistFeat()
最常见功能,获取一个字符的属性字典,是通过.grapheme2features()
方法实现的。
>>> df.grapheme2features('a')
{'anterior': True, 'approximant': True, 'back': False, 'click': False, 'consonantal': False, 'constricted': False, 'continuant': True, 'coronal': True, 'distributed': True, 'dorsal': True, 'high': False, 'labial': False, 'laryngeal': True, 'lateral': False, 'long': None, 'low': True, 'nasal': False, 'pharyngeal': None, 'place': True, 'preaspirated': None, 'preglottalized': None, 'prenasal': None, 'round': None, 'sibilant': False, 'sonorant': True, 'spread': False, 'strident': False, 'syllabic': True, 'tense': True, 'voice': True}
.graphemes2features()
方法默认返回一个包含布尔值的字典,具有排序的属性名称。参数允许跳过真值转换,返回用于其表示的字符串,以及返回值向量为列表。
>>> df.grapheme2features('a', t_values=False)
{'anterior': '+', 'approximant': '+', 'back': '-', 'click': '-', 'consonantal': '-', 'constricted': '-', 'continuant': '+', 'coronal': '+', 'distributed': '+', 'dorsal': '+', 'high': '-', 'labial': '-', 'laryngeal': '+', 'lateral': '-', 'long': '0', 'low': '+', 'nasal': '-', 'pharyngeal': '0', 'place': '+', 'preaspirated': '0', 'preglottalized': '0', 'prenasal': '0', 'round': '0', 'sibilant': '-', 'sonorant': '+', 'spread': '-', 'strident': '-', 'syllabic': '+', 'tense': '+', 'voice': '+'}
>>> df.grapheme2features('a', vector=True)
[True, True, False, False, False, False, True, True, True, True, False, False, True, False, None, True, False, None, True, None, None, None, None, False, True, False, False, True, True, True]
操作相反的方法.features2graphemes()
返回满足一组属性及其值的所有字符列表(这些值可以作为真值或它们的字符串提供)。可以通过drop_na
参数删除未定义的值。
>>> df.features2graphemes({"consonantal": "-", "anterior": "+", "high": "-"})
['a', 'aː', 'ã', 'ãː', 'ă', 'ḁ', 'a̯', 'e', 'eː', 'ẽ', 'ẽː', 'ĕ', 'e̤', 'e̥', 'e̯', 'æ', 'æː', 'æ̃', 'æ̃ː', 'ø', 'øː', 'ø̃', 'ø̃ː', 'œ', 'œː', 'œ̃', 'œ̃ː', 'ɶ', 'ɶː', 'ɶ̃', 'ɶ̃ː']
要区分一组字符,可以使用.minimal_matrix()
方法获取所需的特征的最小矩阵,该方法还允许使用字符串表示真值并使用未定义值。类似于.grapheme2features()
的情况,可以通过传递一个vector
参数来获取值列表。正如预期的那样,字符集越大、异质性越高,所需的特征数量也越多。下面的代码段还使用了辅助的tabulate_matrix()
函数,它是tabulate
库的包装器。
>>> distfeat.tabulate_matrix(df.minimal_matrix(["t", "d"]))
constricted laryngeal spread voice
-- ------------- ----------- -------- -------
d False True False True
t False
>>> distfeat.tabulate_matrix(df.minimal_matrix(["t", "d", "s"]))
constricted continuant laryngeal sibilant spread strident voice
-- ------------- ------------ ----------- ---------- -------- ---------- -------
d False False True False False False True
s True False True True
t False False False False
>>> df.minimal_matrix(["t", "d"], vector=True)
{'d': [False, True, False, True], 't': [None, False, None, None]}
上述操作的逆方法为.class_features()
,它提供了一组字符集构成声类所需的特征和值的字典。请注意,尽管可能,此方法默认不会丢弃未定义值。正如预期的那样,字符集越大、异质性越高,共同的特征/值对就越少。
>>> df.class_features(["t", "d"])
{'anterior': True, 'approximant': False, 'click': False, 'consonantal': True, 'continuant': False, 'coronal': True, 'distributed': False, 'dorsal': False, 'labial': False, 'lateral': False, 'nasal': False, 'place': True, 'sibilant': False, 'sonorant': False, 'strident': False, 'syllabic': False, 'tense': False}
>>> df.class_features(["t", "d", "s"])
{'anterior': True, 'approximant': False, 'click': False, 'consonantal': True, 'coronal': True, 'distributed': False, 'dorsal': False, 'labial': False, 'lateral': False, 'nasal': False, 'place': True, 'sonorant': False, 'syllabic': False, 'tense': False}
还提供了一个简单的命令行工具用于查询数据库。
以下提供了对段落距离的实验性支持,如所示。它需要sklearn
库,该库未被列为要求,因此默认情况下不会安装。由于模型和回归器未进行缓存,训练阶段可能比预期的时间长。
>>> df.distance("a", "e")
5.501464265353438
>>> df.distance("a", "u")
6.773080283814581
>>> df.distance("w", "u")
0.9799320477423237
>>> df.distance("s", "ʒ")
10.139607771554383
更改日志
版本 0.2
- 添加了对段落距离的初始支持
版本 0.1.1
- 添加了默认模型中缺失的不圆开口前元音
- 添加了一个从Phoible派生的模型
版本 0.1
- 首次公开发布
待办事项
- 允许指定、检查和推导几何形状
- 决定是否让
.features2graphemes()
默认为布尔值(即t_values=True
) - 决定在使用真值时如何指定未定义,例如在
.features2graphemes()
中(考虑到None
不能作为值传递) - 将命令行工具扩展到调用大多数(如果不是所有)函数
社区准则
虽然可以直接联系作者寻求支持,但建议第三方使用GitHub标准功能,例如问题报告和拉取请求,以进行贡献、报告问题或寻求支持。
贡献准则,包括行为准则,可在CONTRIBUTING.md
文件中找到。
作者和引用
该库由Tiago Tresoldi开发(tresoldi@shh.mpg.de)。
作者已从欧洲研究委员会(ERC)获得资金,资金来源于欧盟的“地平线2020”研究和创新计划(协议号ERC Grant #715618,计算机辅助语言比较)。
如果您使用distfeat
或与其一起分发的标准特征模型,请按以下方式引用它:
Tresoldi, Tiago (2020). DistFeat,一个用于操作段音和区别音的Python库。版本0.1.1。耶拿。DOI: 10.5281/zenodo.3902005
在BibTeX中
@misc{Tresoldi2020distfeat,
author = {Tresoldi, Tiago},
title = {DistFeat, a Python library for manipulating segmental and distinctive features. Version 0.1.},
howpublished = {\url{https://github.com/tresoldi/distfeat}},
address = {Jena},
year = {2020},
doi = {10.5281/zenodo.3902005}
}
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建发行版
distfeat-0.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e88b880be2bc8f1eec8df821a28c139121a675b104b9afa968056178c659e000 |
|
MD5 | 716a18e01d7d4a4e457c8a67d88c9f80 |
|
BLAKE2b-256 | 9ba35a0dd1f9bd683cafa0567e26a8f86651bc079a65b22acd3a7194172e979d |
distfeat-0.2-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e1eea4f5ad42bd13061b04a31b471e26c265871ee3e5f59f3745a00980abd05a |
|
MD5 | 69b75d6728998928d98317259b26bd13 |
|
BLAKE2b-256 | b649c3be0127bb2f77e39b57b4422461a1c4609c9fc43c651d0cb6b100c48c5f |