从带有参数的条目表创建范例。

pyradigms的Python项目详细描述


吡咯烷酮

从带有参数的条目表创建范例。在

入门

pip install pyradigms

使用

有两种不同的方法;read_file从一个带有参数的表单列表的.csv文件创建一个三维字典,print_paradigms从这样的字典中创建人类可读的范例,也是.csv格式。 您可以先读取文件,然后打印所需的范例,也可以直接从三维散列中打印范例。在

read_file

为了指定应该投影到哪个维度上的参数,必须传递参数xy和{}。 它们每个都有一个字符串列表,字符串是.csv文件中的列名。 z表示输出中垂直或多个文件中列出的多个范例表。 y表示单个范例表的行。 x表示单个范例表的列。 这些维度必须都是字符串的列表,如果一个列表包含多个字符串,那么这些参数将在结果范例中组合。 范例单元格中打印的是Form列中的值;如果您的.csv文件使用不同的标签,请使用read_file(target_string=<label>)指定它

示意用法:

import pyradigms
pd = pyradigms.Pyradigms()
pd.read_file(
    "input.csv",
    x = ["X1", "X2"],
    y = ["Y"],
    z = ["Z"],
)
pd.print_paradigms()

以下是所附示例的说明: 文件examples/latin_verbs.csv包含Form Person Number Tense Verb Mood列:

FormPersonNumberTenseVerbMood
portoː1SGPRSportaːreIND
portaːs2SGPRSportaːreIND
portat3SGPRSportaːreIND
portaːmus1PLPRSportaːreIND
portaːtis2PLPRSportaːreIND
portant3PLPRSportaːreIND
terːeoː1SGPRSterːeːreIND

例如,人们可能想把人和数字,以及时态和情绪结合起来。 每个动词都应该有一个单独的范例。 实现方法如下:

^{pr2}$

这导致了以下范例列表(在“拉丁语动词_范例.csv“):

^{tb2}$
terːeːre1SG2SG3SG1PL2PL3PL
PRS:INDterːeoːterːeːsterːetterːeːmusterːeːtisterːent
PST.IPFV:INDterːeːbamterːeːbaːsterːeːbatterːeːbaːmusterːeːbaːtisterːeːbant
FUT:INDterːeːboːterːeːbisterːeːbitterːeːbimusterːeːbitisterːeːbunt
PRS:SUBJterːreamterːeaːsterːeatterːeaːmusterːeaːtisterːeant
PST.IPFV:SUBJterːeːremterːeːresterːeretterːeːreːmusterːeːreːtisterːeːrent
petere1SG2SG3SG1PL2PL3PL
PRS:INDpetoːpetispetitpetimuspetitispetunt
PST.IPFV:INDpeteːbampeteːbaspeteːbatpeteːbaːmuspeteːbaːtispeteːbant
FUT:INDpetampeteːspetetpeteːmuspeteːtispetent
PRS:SUBJpetampetaːspetatpetaːmuspetaːtispetant
PST.IPFV:SUBJpeteːbarpeteːbaːris; peteːbaːrepeteːbaːturpeteːbaːmuspeteːbaːminiːpeteːbaːtur

您可以根据需要排列和组合参数。 如果要过滤某个参数,可以添加任意数量的filtered_parameters,然后过滤特定的值。 如果一个参数没有出现在这三个轴上,而且不在filtered_parameters列表中,它将被完全忽略,pyradigms将只采用满足所有条件的第一个形式!(目前)

read_file()的其他选项:

  • 选项multiple_files=True将输出分配到多个文件中,这些文件表示z轴。在
  • 选项display=True在命令行输出中打印一个漂亮的表。在
  • 选项x_sort_ordery_sort_order列出了将用于沿该轴对输出进行排序的列表。在

例如:下面的代码在x轴上组合了person和mood,并对该轴使用了非常特殊的排序顺序。 数字在y轴上,动词在z轴上;只考虑现在时形式。 输出在终端中打印得很好;z轴分布在三个文件中。在

pd.read_file(
    "latin_verbs.csv",
    x = ["Person", "Mood"],
    y = ["Number"],
    z = ["Verb"],
    filtered_parameters = {"Tense": "PRS"}
)
pd.print_paradigms(
	name="example_output",
	display=True,
	single_file=False,
	x_sort_order=["1IND", "2IND", "3IND", "3SUBJ", "2SUBJ", "1SUBJ"]
)
portaːre1IND2IND3IND3SUBJ2SUBJ1SUBJ
SGportoːportaːsportatportetporteːsportem
PLportaːmusportaːtisportantportentporteːtisporteːmus
terːeːre1IND2IND3IND3SUBJ2SUBJ1SUBJ
SGterːeoːterːeːsterːetterːeatterːeaːsterːream
PLterːeːmusterːeːtisterːentterːeantterːeaːtisterːeaːmus
petere1IND2IND3IND3SUBJ2SUBJ1SUBJ
SGpetoːpetispetitpetatpetaːspetam
PLpetimuspetitispetuntpetantpetaːtispetaːmus

print_paradigms

如果您在自己的应用程序中使用pyradigms,那么您可能已经准备好了一个三维字典,而不是用pyradigms来构造它。 在这种情况下,可以将参数tables传递给print_paradigms();其余的工作原理相同。 如果没有传递tables参数,则使用read_file()创建的字典。 以下面的伯尔尼德语动词形式词典为例。 它有三个维度,第一个维度是动词的意义,第二个维度是数字,第三个维度是人。在

bernese_verbs = {"to go": {
    "SG": {"1": "kɑː",
        "2": "kɛjʃ",
        "3": "kɛjtː"},
    "PL": {"1": "kœː",
        "2":"kœːtː",
        "3":"kœː"}
}, "to say": {
    "SG": {"1": "sækə",
        "2": "sɛjʃ",
        "3": "sɛjtː"},
    "PL": {"1": "sækə",
        "2":"sækətː",
        "3":"sækə"}
    }
}

使用print_paradigms(bernese_verbs),生成一个包含以下内容的.csv文件:

to go123
SGkɑːkɛjʃkɛjtː
PLkœːkœːtːkœː
to say123
SGsækəsɛjʃsɛjtː
PLsækəsækətːsækə

.csv文件中,三维散列的第一层用z维表示,即垂直堆叠的范式表,第二层用单个表的y轴表示,第三层用x轴表示。在

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

推荐PyPI第三方库


热门话题
HTTP标头的java InputStream未终止   java测试SpringWebListener   具有定义的替换编号Java的regex ReplaceAll   在java中使用contains()方法   java在选择查询中使用JoinColumn字段   具有用户的java Start-stop demon不是以给定用户启动   java glBufferData生成GL\u无效\u操作   java中循环代码的循环   Java位无符号移位(>>>>)会产生奇怪的结果   java HQL使用点分隔符从select获取结果   条纹、弹簧、玩耍(或?):使用哪种高性能Java框架?   广播接收机中的java停止服务   java回收器视图占据整个屏幕。不在上面显示我的UI元素   java使MySQL查询更快   java MappedByteBuffer查询   java递归算法问题