用于查询uriel类型数据库的简单库。

lang2vec的Python项目详细描述


lang2vec

一个用于查询uriel类型数据库的简单库, 以及从马拉维亚等人,2017年的学习到的语言向量。

基于patrick littell的lang2vec工具

安装

运行python3-m pip install--index url https://test.pypi.org/simple/--no deps lang2vec

用法

库目前支持一个简单的操作:查询uriel数据库, 以及来自马拉维亚等人的培训语言载体,2017年。 主要操作是get_features(languages,feature_sets,header=false,minimal=false),它返回一个字典,其中包含语言中每种语言的特征向量,用于功能集

一个最小的工作示例是:

>>> import lang2vec.lang2vec as l2v
>>> features = l2v.get_features("eng", "geo")
>>> features["eng"]
[0.7664999961853027, 0.7924000024795532, 0.8277999758720398, 0.7214000225067139,...]

get_features()的第一个参数是iso 639-3代码的列表或空格分隔字符串(例如["deu","eng"])。 任何两个字母代码ISO 639-1都将映射到相应的ISO-639-3代码。

>>> features = l2v.get_features(["eng", "fra"], "geo")
>>> features["fra"]
[0.7378000020980835, 0.7682999968528748, 0.7982000112533569, 0.6941999793052673, ...]

>>> features = l2v.get_features("eng fr", "syntax_wals")
>>> features["eng"]
[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...]
>>> features["fr"]
[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...]

丢失的功能将作为'--'返回。如果语言不可用,库将打印警告消息,例如

>>> features = l2v.get_features("eng", "learned")
Note: Language eng not found in the 'learned' feature set. However, it is available in the URIEL feature sets.
>>> features["eng"][:5]
['--', '--', '--', '--', '--']

您可以使用lang2vec.languageslang2vec.available\languages()列出支持的语言。 uriel语言可以用lang2vec.uriel_languageslang2vec.available_riel_languages()列出。 具有学习向量的语言可以用lang2vec.learned_languageslang2vec.available_learned_languages()列出

第二个参数是一个命名的特征集,以字符串或字符串列表的形式提供,或者是两个特征集的元素联合a b,或者是两个特征集的连接a+b。因此,"geo+syntax_u wals syntax嫒u sswl"给出了与wals和sswl语法特征集的元素联合连接的地理特征向量。

请注意,允许并集的并集,但不允许并集的并集。此外,两个特征集的并集仅限于具有相似大小的集。一个很好的经验法则是,如果两个集合的名称以相同的前缀开头("inventory","phonology","syntax"),那么它们的大小是相似的。同样,丢失的功能(参见上一个示例)将返回为'--'

我们还提供帮助函数fs_union()fs_concatenation()。它们是"重载"的,因此它们可以接收任意数量的特征集参数或特征集列表。一些示例:

>>> l2v.fs_union("syntax_wals", "syntax_sswl")
'syntax_wals|syntax_sswl'

>>> l2v.fs_union(["syntax_wals", "syntax_sswl"])
'syntax_wals|syntax_sswl'

>>> l2v.fs_concatenation( ["geo", l2v.fs_union(["syntax_wals", "syntax_sswl"])])
'geo+syntax_wals|syntax_sswl'

>>> features = l2v.get_features("eng", l2v.fs_concatenation( ["geo", l2v.fs_union(["syntax_wals", "syntax_sswl"])]))
>>> features['eng'][:5]
[0.7664999961853027, 0.7924000024795532, 0.8277999758720398, 0.7214000225067139, 0.8568999767303467]

>>> features = l2v.get_features("eng", "learned+syntax_wals")
Note: Language eng not found in the 'learned' feature set. However, it is available in the URIEL feature sets.
>>> features["eng"][:5]
['--', '--', '--', '--', '--']
>>> features["eng"][512:522]
[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]

可用的功能集可以用lang2vec.feature_setslang2vec.available_feature_sets()列出。 我们也在此列出:

  • 功能和库存数据库中的集合:

    • "语法"
    • "音系学"
    • "语法sWL",
    • "语法民族志"
    • "音系学-民族志"
    • "民族志目录"
    • "库存不可靠"
    • "库存不可靠的通用汽车"
    • "库存品"
    • "库存空间"
    • "库存价格"
    • "库存风险"
    • "库存增加"
  • 集合的平均值:

    • "语法平均值"
    • "音系平均值"
    • "库存平均值"
  • 特征值的knn预测:

    • "语法knn",
    • "音系学"
    • "库存"
  • 语言家族和子家族成员:

    • "fam",
  • 与地球表面固定点的距离

    < UL>
  • "地理位置"
  • 学习向量用于Malaviya等人的类型预测。

    • "学会了"
  • 一个热身份向量:

    • "身份证"
  • 获取功能有两个可选参数(语言,功能集,header=false,minimal=false)。 设置header=true还将返回特殊字典条目'code'中的功能名称。例如:

    >>> features = l2v.get_features("eng", "syntax_wals", header=True)
    >>> features['CODE'][:5]
    ['S_SVO', 'S_SOV', 'S_VSO', 'S_VOS', 'S_OVS']
    

    设置minimal=true将抑制仅包含零、仅包含一或仅包含空的列。

    "最小"转换在任何并集或连接之后应用。(如果没有,同一组中的集合,如语法集合,就不会是相同的维度进行比较。)

    参考文献:

    如果您使用lang2vec,请引用以下文章:

    @inproceedings{littell2017uriel,
      title={Uriel and lang2vec: Representing languages as typological, geographical, and phylogenetic vectors},
      author={Littell, Patrick and Mortensen, David R and Lin, Ke and Kairis, Katherine and Turner, Carlisle and Levin, Lori},
      booktitle={Proceedings of the 15th Conference of the European Chapter of the Association for Computational Linguistics: Volume 2, Short Papers},
      volume={2},
      pages={8--14},
      year={2017}
    }
    

    如果您使用学习向量,请引用以下论文:

    @inproceedings{malaviya17emnlp,
        title = {Learning Language Representations for Typology Prediction},
        author = {Malaviya, Chaitanya and Neubig, Graham and Littell, Patrick},
        booktitle = {Conference on Empirical Methods in Natural Language Processing (EMNLP)},
        address = {Copenhagen, Denmark},
        month = {September},
        year = {2017}
    }
    

    以上不同的功能集来自许多来源:

    • 沃尔斯:源自世界语言结构图集的特征。
    • sswl:源自世界语言句法结构的特征。
    • 民族志:民族志中对散文类型描述的(浅)解析所产生的特征(Lewis等人2015)
    • phoible_aa:aa=非洲字母。从Phoible对非洲语言系统的规范化得到的特征(Hartell 1993,Chanard 2006)。
    • phoible_gm:gm=绿色和莫兰。功能源自phoible对christopher green和steven moran的泛非库存数据库的规范化。
    • PH值:PH值=PH值。由Moran、McCloy和Wright(2012)从phoible proper派生的功能。
    • phoible-ra:ra=拉玛斯瓦米。phoible对《印度语言中的常见语言特征:语音》(Ramaswami 1999)的规范化所衍生的特征。
    • phoible-saphon:saphon=南美语音目录数据库。从Phoible对Saphon的标准化得到的特征(Lev等人,2012)
    • phoible-spa:spa=斯坦福语音档案。spa的phoible标准化特征(crothers等人,1979)。
    • phoble-upsid:upsid=加州大学洛杉矶分校语音段清单数据库。从phoible的upsid标准化(maddieson 1984,maddieson and precada 1990)得到的特征。
    • 学习:通过神经网络从1017种语言的数据中学习512维向量,为类型预测训练(Malaviya等人,2017年)。

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


    热门话题
    在java中将字符串转换为另一个字符串   我有一个功能模型(xml格式)。当遍历所需的特性时,是否有方法为任何给定的特性模型生成java类?   泛型如何在我自己的链表中将迭代器定义为Java中的节点?   Java Lucene对于同一Lucene查询语言,BooleanQuery和QueryParser查询的结果不同   java禁用REST安全性和身份验证Websphere Commerce   我如何访问本地。属性变量?Java Swing正确使用变量   使用Java 1.7为Kotlin配置Gradle   java如何将mvn项目分解为多模块?   java无与伦比的eclipse调试配置。如何删除?   java如何谷歌翻译API,当我尝试时没有提供正确的输出   java有没有更好的方法将变量传递给我的视图?   在变量Java Android中存储用户EditText中的编号   javaapachecamel当反序列化对象时,它抛出一个异常:com。fasterxml。杰克逊。果心JsonParseException:无法识别的令牌   java简单UI循环,找不到bug