跳转到主要内容

语言学的特性集代数

项目描述

Latest PyPI Version License Supported Python Versions Format Readthedocs

Travis Codecov

Features是Python中特性集代数的一个简单实现。

语言分析通常使用一组二进制或性质特征的集合来指代不同的语言对象组:例如,一组共享某些音韵特征的音素,如[-consonantal, +high],或者一组出现在特定人/数组合的上下文中的词素,如[-participant, GROUP]。通常,特征是以一种方式应用的,即只有其中的一些组合是有效的,而其他组合则不可能(即指代无对象)——例如[+high, +low],或[-participant, +speaker]

使用本包,可以通过简单的应急 表格定义(特征矩阵)来定义这些功能系统,并将其存储在简单的明文 配置文件 的一个部分名称下。然后,可以通过名称 加载 每个功能系统,并提供其自己的 FeatureSet 子类,该子类根据给定的定义(兼容性、蕴涵、交集、统一等)实现其特征集之间的所有 比较和操作

特征系统创建每个功能系统可能特征集之间的 完整格结构,并允许您使用 Graphviz 图布局软件 浏览和 可视化它们的关系

安装

此包在 Python 2.7 和 3.5+ 下运行,使用 pip 进行安装

$ pip install features

这将还会安装从 PyPI 提供的 concepts 包,它提供了此包基于的 形式概念分析(FCA)算法。

快速入门

通过名称加载 预定义的功能系统(在这种情况下,为六向人/数字区分的功能,参照所附 config.ini 中的定义,位于 源存储库 中)。

>>> import features

>>> fs = features.FeatureSystem('plural')

>>> print(fs.context)  # doctest: +ELLIPSIS
<Context object mapping 6 objects to 10 properties [3011c283] at 0x...>
      |+1|-1|+2|-2|+3|-3|+sg|+pl|-sg|-pl|
    1s|X |  |  |X |  |X |X  |   |   |X  |
    1p|X |  |  |X |  |X |   |X  |X  |   |
    2s|  |X |X |  |  |X |X  |   |   |X  |
    2p|  |X |X |  |  |X |   |X  |X  |   |
    3s|  |X |  |X |X |  |X  |   |   |X  |
    3p|  |X |  |X |X |  |   |X  |X  |   |

从字符串或字符串序列创建 特征集。使用 特征字符串解析,获取字符串序列和特征或范围字符串,并按照其规范顺序(定义顺序)返回

>>> fs('+1 +sg'), fs(['+2', '+2', '+sg']), fs(['+sg', '+3'])
(FeatureSet('+1 +sg'), FeatureSet('+2 +sg'), FeatureSet('+3 +sg'))

>>> fs('SG1').concept.intent
('+1', '-2', '-3', '+sg', '-pl')

>>> fs('1').string, fs('1').string_maximal, fs('1').string_extent
('+1', '+1 -2 -3', '1s 1p')

使用 特征代数:交集(join),并/统一(meet),集合包含(extension/subsumption)。执行特征集比较(逻辑连接词)。

>>> fs('+1 +sg') % fs('+2 +sg')
FeatureSet('-3 +sg')

>>> fs('-3') ^ fs('+1') ^ fs('-pl')
FeatureSet('+1 +sg')

>>> fs('+3') > fs('-1') and fs('+pl') < fs('+2 -sg')
True

>>> fs('+1').incompatible_with(fs('+3')) and fs('+sg').complement_of(fs('+pl'))
True

导航 所有有效特征集 创建的子集 Hasse 图

>>> fs('+1').upper_neighbors, fs('+1').lower_neighbors
([FeatureSet('-3'), FeatureSet('-2')], [FeatureSet('+1 +sg'), FeatureSet('+1 +pl')])

>>> fs('+1').upset()
[FeatureSet('+1'), FeatureSet('-3'), FeatureSet('-2'), FeatureSet('')]

>>> for f in fs:  # doctest: +ELLIPSIS
...     print('[%s] <-> {%s}' % (f.string_maximal, f.string_extent))
[+1 -1 +2 -2 +3 -3 +sg +pl -sg -pl] <-> {}
[+1 -2 -3 +sg -pl] <-> {1s}
...
[-1] <-> {2s 2p 3s 3p}
[] <-> {1s 1p 2s 2p 3s 3p}

查看 文档 了解如何定义、加载和使用 您自己的功能系统

进一步阅读

另请参阅

  • concepts – 使用 Python 的形式概念分析

  • fileconfig – 将配置文件部分作为对象

  • graphviz – Graphviz 的简单 Python 接口

许可协议

Features 以 MIT 许可证 分发。

项目详情


下载文件

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

源代码分布

features-0.5.12.zip (126.4 kB 查看哈希值)

上传时间 源代码

构建分布

features-0.5.12-py2.py3-none-any.whl (15.8 kB 查看哈希值)

上传时间 Python 2 Python 3

支持