跳转到主要内容

程序访问CLTS

项目描述

pyclts

访问和整理 CLTS 数据 的工具。

Build Status PyPI

CLTS 是尝试创建一个系统,允许翻译和比较不同的音标转录系统,而 pyclts 提供了一个 Python API 来访问数据和比较功能。

安装

pycltsCLTS 数据 提供了一个 Python API。使用 pyclts 需要这些数据本地可用,可以是仓库克隆,也可以是 发布版本 的未压缩下载。

要安装 pyclts,请运行

pip install pyclts

这将安装 Python API 以及一个命令行工具 clts。两者都需要数据位置作为参数

>>> from pyclts import CLTS
>>> clts = CLTS('PATH/TO/clts')

clts --repos PATH/TO/clts stats

为了节省这种努力,数据位置也可以在 cldfcatalog 配置文件 中查找,在 clts 键下。

这样的配置文件(以及仓库克隆)可以通过安装 cldfbench 并运行 cldfbench catconfig(请注意,命令取决于 pyglottologpyconcepticon 库)自动创建。

兼容性

请注意,CLTS 数据发布和 pyclts 版本必须兼容。

  • pyclts < 3.0 与 CLTS 数据 1.4.1 兼容
  • pyclts >= 3.0 与 CLTS 数据 >= 2.0 兼容

概述

使用 pyclts 的示例可以在这段简短的代码片段中看到

>>> from pyclts import CLTS
>>> clts = CLTS('clts/')
>>> asjp = clts.transcriptionsystem('asjpcode')
>>> snd1 = clts.bipa['ts']
>>> snd2 = asjp['c']
>>> snd1.name
'voiceless alveolar sibilant affricate consonant'
>>> snd2.name
'voiceless alveolar sibilant affricate consonant'
>>> clts.bipa.translate('ts a ŋ ə', asjp)
'c E N 3'
>>> asjp.translate('C a y', clts.bipa)
'tʃ ɐ j'

注意

  • 由于 "bipa" 是 CLTS 中的标准转录系统,因此它可以直接作为 CLTSbipa 属性使用。
  • 我们根据所使用的字母表表示声音 tsc

声音

pyclts 不仅能够处理我们数据库中已经存在的声音。相反,它会尝试自动创建 "未知" 声音,并从音标和基音的特征集中推断其特征。

>>> sound = clts.bipa['dʱʷ']
>>> sound.name
'labialized breathy voiced alveolar stop consonant'
>>> sound.generated
True
>>> sound.alias
True
>>> print(sound)
dʷʱ
>>> print(sound.uname)
LATIN SMALL LETTER D / MODIFIER LETTER SMALL W / MODIFIER LETTER SMALL H WITH HOOK
>>> print(sound.codepoints)
U+0064 U+02b7 U+02b1

您可以看到,由于我们以不同的方式表示呼吸音,我们将此声音标记为别名。由于它尚未在我们的数据库中明确编码,我们将它标记为 "生成" 声音。以类似的方式,您也可以从名称生成声音

>>> sound = clts.bipa['pre-aspirated voiced aspirated bilabial stop consonant']
>>> print(sound)
ʰbʰ
>>> sound.generated
True
>>> sound.name
'pre-aspirated aspirated voiced bilabial stop consonant'

请注意,这种声音可能在任何语言中都不存在,但我们从特征组件生成它。请注意,为声音自动给出的 name 自动确定了如何将特征组合在一起以形成声音标识符。原则上,我们的特征包是无序的,但我们尝试为特征决定一些显式顺序以提高比较。

转录系统和声音类别

您还可以使用我们的转录数据将一个转录系统转换为给定的数据集(请注意,反向转换可能不可行,因为转录数据通常有限)

>>> sca = clts.soundclass('sca')
>>> clts.bipa.translate('f a: t ə r', sca)
'B A T E R'

也可以通过直接加载转录数据来完成转换

>>> sca('v a t ə r')
['B', 'A', 'T', 'E', 'R']

包的基本结构

pyclts 提供了对三种基本类型数据的访问

  • 转录系统(pyclts.transcriptionsystems.TranscriptionSystem),一个可以 生成 声音的系统
  • 转录数据(pyclts.transcriptiondata.TranscriptionData):一个包含固定数量声音的数据集
  • 声音类别(pyclts.soundclasses.SoundClasses):一个将声音直接映射到具体字符(声音类别)的数据集

转录数据通过 B(广泛)IPA 转录系统的符号与我们转录系统相关联,该符号作为我们的默认值,并且名称遵循 IPA 的一些修改,这些修改是为了确保我们可以表示在跨语言数据集中经常发现的声音。

解析过程

特征 注意 示例
规范化 ts._norm()ts[sound].normalized 这指的是一对一的字符替换,具有明显错误的Unicode相似字符 λ(错误)与ʎ(正确)
别名 转录系统数据(+表示别名),ts['sound'].alias 这指的是广泛使用且因此被官方接受的“自由”IPA变体,因此通常选择一个变体作为首选 ts(正常)与ʦ(别名)
来源 ts['sound'].source 以未归一化的形式提供给TS的形式 bipa['λ'].source == 'λ'
图形符号 ts[lingpy/'sound'].grapheme 尚未通过别名解决的归一化形式 ```bipa['ʦ'].grapheme == 'ʦ'
字符串/Unicode ts['sound'].__unicode__() 将潜在的别名替换为其“接受”的对应形式后的归一化形式 str(bipa['ʦ']) == 'ts'
名称 bipa['sound'].name 定义声音的特征系统的规范表示,声音类别(辅音、簇、元音、双元音)在最后,特征包按照在pyclts.models中相应声音类别的描述中给出的顺序排列。这种表示作为不同TS之间翻译的基础。 bipa['ts'].name == 'voiceless alveolar sibilant-affricate consonant'
生成 ts['sound'].generated 如果某个声音对于给定的TS尚不为人所知,算法将尝试通过将其分解为其基本部分并基于变音符号向左右添加特征来生成它。如果声音已经被生成,则通过该属性进行追踪。通常,生成的声音需要专家进行双重检查,因为它们的图形符号表示可能是错误的。因此,虽然声音kʷʰ可以在TS(如BIPA)中按常规定义,但用户可能会查询kʰʷ,在这种情况下,声音将在内部生成,图形符号将以其归一化形式(与基本部分相同)存储,但str()表示将包含正确的顺序,并且字符将自动被认定为现有的一个的别名。 str(TS['kʰʷ']) == 'kʷʰ' and TS['kʰʷ'].grapheme == 'kʰʷ' and TS[''kʰʷ'].alias and TS['kʰʷ'].generated
基本部分 ts['sound'].base 如果正在生成声音,解析算法首先尝试识别声音的潜在“基本部分”,即已知并明确定义在给定转录系统中的声音。基于此基本声音,然后根据变音符号向左右构造图形符号。如果所构建的特征包已经在转录系统中存在,则将构建的声音视为别名,如果不存在,则将声音仅标记为已生成。 str(TS['d̤ʷ']) == 'dʷʱ'

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

pyclts-3.2.0.tar.gz (57.9 kB 查看散列值

上传时间

构建分发

pyclts-3.2.0-py2.py3-none-any.whl (57.6 kB 查看哈希值)

上传时间 Python 2 Python 3

支持