Pareidoscope - 语言结构关联工具

news2024/12/27 22:15:19

文章目录

    • 关于 Pareidoscope
    • 安装
    • 使用方法
      • 输入格式
        • 语料库
        • 查询
      • 将语料库转换为 SQLite3 数据库
      • 两种语言结构之间的关联
      • 简单词素分析
      • 关联共现和伴随词素分析
      • 相关的更大结构
        • 可视化关联结构


关于 Pareidoscope

Pareidoscope 是一组 用于确定任意语言结构之间 关联的工具,例如词语(搭配)、词语和结构(共构)或更大语言结构之间的关联。关于底层共现模型,参见 Proisl (2019)。

安装

Pareidoscope 可在 PyPI 上找到,并可以使用 pip 进行安装:

pip3 install Pareidoscope

或者,您可以下载并解压缩:最新版本 或克隆 Git 仓库:

git clone https://github.com/tsproisl/Pareidoscope.git

在新的目录中,运行以下命令:

python3 setup.py install

使用方法

输入格式

语料库

语料库可以提供两种不同的格式:CoNLL-U 格式或 CWB-treebank 格式。

CoNLL-U 是用于 Universal Dependencies 项目 (Nivre 等人,2016) CWB-treebank 语料库的格式。
格式在UD 文档中指定。以下是一个从文档中改编的示例:

1    他们     他们    PRON    PRP    _    2    nsubj    2:nsubj|4:nsubj    _
2    买      买     VERB    VBP    _    0    root     0:root             _
3    和      和     CONJ    CC     _    4    cc       4:cc               _
4    卖      卖     VERB    VBP    _    2    conj     0:root|2:conj      _
5    书      书    NOUN    NNS    _    2    obj      2:obj|4:obj        _
6    .        .       PUNCT   .      _    2    punct    2:punct            _

这里有十个制表符分隔的列。前五列是单词 ID、单词形式、词元、通用词性标签和语言特定的词性标签。第六列和第十列,在这个例子中为空,用于形态学特征和杂项注释。在第七列到第九列,编码了这个句子的依存分析。第七列和第八列编码了构成树所需的基本依存关系。第七列指示支配词的 ID,第八列指示支配词和当前词之间的依存关系类型。在第九列,可以表示一个增强的依存图,它不一定要是树形结构。

有关 CWB-treebank 格式的详细信息,请参阅Proisl 和 Uhrig (2012)。


查询

查询图可以以 NetworkX (Hagberg 等人,2008) 所理解的节点-链接格式提供的 JSON 序列化形式。所有命令行工具都可以操作多个查询,因此即使对于单个查询,也必须提供一个查询列表。以下是一个包含一个元素的列表的示例,该列表包含用于查找动词 give 的单调递减使用关联更大结构的查询图(更多示例查询在 doc 目录中提供):

[
    {
        "graph": {
            "description": "动词 give 的单调递减使用"
        },
        "nodes": [
            {
                "id": 0,
                "wc": "VERB",
                "lemma": "give",
                "focus_point": true,
                "not_outdep": ["iobj", "obl"]
            },
            {
                "id": 1
            }
        ],
        "links": [
            {
                "source": 0,
                "target": 1,
                "relation": "obj"
            }
        ]
    }
]

查询表示为具有两个必选键的字典:nodes 用于顶点,links 用于边。在 graph 键下,可以存储查询的描述等信息。查询图的顶点和边都表示为字典列表。边通过其源和目标顶点的 ID 以及可选的依赖关系类型来指定。顶点必须具有 ID,并且可以具有其他可选属性。

可以用于顶点的属性取决于查询的类型。以下属性始终可以使用:wordposlemmawcrootnot_indep(一个列表)、not_outdep(一个列表)。前五个属性也可以通过在它们前面加 not_ 来否定,例如 "not_wc": "NOUN" 表示顶点不应为名词。

对于使用 pareidoscope_association_strength 确定两个结构之间的关联强度,可以使用以下附加属性。属性 query 必须用于每个顶点,并取值 ABAB。此属性指示顶点是否属于 GAGB 或两者都属于,即 GC。对于标记为 "query": "AB" 的顶点,可以使用可选的属性 only_Aonly_B。这些属性是列表,指示哪些其他属性仅适用于 GAGB。图的关注点顶点可以通过将 "focus_point": true 设置来标记。属性 only_Aonly_B 也可以用于边。

对于使用 pareidoscope_collexeme_analysis 进行简单的词素分析,必须将 collo_item 属性设置为 true 对于词素顶点。此顶点是自动的关注点。

对于使用 pareidoscope_covarying_collexemes 进行关系共现和共变词素分析,必须将两个词素顶点的 collo_Acollo_B 属性设置为 true。可以使用 focus_point 属性来标记关注点顶点。

对于使用 pareidoscope_associated_structures 查找关联的更大结构,可以通过将 "focus_point": true 设置来标记关注点顶点。


将语料库转换为 SQLite3 数据库

对于以下大多数程序,需要将您的语料库转换为 SQLite3 数据库。这可以显著加快高度选择性的查询;对于需要检查语料库中几乎每句话的非常一般的查询,这的影响较小。

CoNNL-U 或 CWB-treebank 格式的语料库可以使用 pareidoscope_corpus_to_sqlite 转换为 SQLite3 数据库。使用选项 -h 运行程序将输出包含详细使用信息的帮助消息。以下是一个示例,我们将转换训练部分的
英语通用依存句法语料库
(en-ud-train.conllu; 我们使用包含在 UD treebanks 2.0 版本 中的版本),它是 CoNLL-U 格式,并创建数据库 en-ud-train.db

pareidoscope_corpus_to_sqlite --db en-ud-train.db --format conllu en-ud-train.conllu

两种语言结构之间的关联

程序 pareidoscope_association_strength 确定两种语言结构之间的关联强度。

以下是一个关于双重及物动词与有定语的直接宾语共现的示例查询(此查询以及其他查询可以在查询文件 ex_association_two_structures.json 中找到):

[
    {
        "graph": {
            "description": "双重及物动词与有定语的直接宾语的共现"
        },
        "nodes": [
            {
                "id": 0,
                "wc": "VERB",
                "query": "AB",
                "focus_point": true
            },
            {
                "id": 1,
                "query": "A"
            },
            {
                "id": 2,
                "wc": "NOUN",
                "query": "AB"
            },
            {
                "id": 3,
                "query": "B"
            }
        ],
        "links": [
            {
                "source": 0,
                "target": 1,
                "relation": "iobj"
            },
            {
                "source": 0,
                "target": 2,
                "relation": "obj"
            },
            {
                "source": 2,
                "target": 3,
                "relation": "det"
            }
        ]
    }
]

动词 “the” 和直接宾语是两种语言结构的一部分,因此被标记为 AB。间接宾语仅属于双重及物动词,标记为 A,而定语仅属于另一种语言结构,标记为 B。此外,动词被标记为焦点点顶点。

以下是调用程序的示例(使用 -h 选项获取详细使用信息):

pareidoscope_association_strength --format db -o associations en-ud-train.db ex_association_two_structures.json

在此示例中,我们在上面转换的语料库上运行 ex_association_two_structures.json 中指定的查询。选项 --format db 表示我们在 SQLite3 数据库上操作(此程序也可以直接在 CoNLL-U 或 CWB-treebank 格式的语料库文件上操作)。结果以制表符分隔的格式写入 associations.tsv,包含每个查询和每个计数方法的频率 O11, R1, C1N,不一致的数量以及三个关联度量(似然比、t-分数、Dice 系数)。


简单词素分析

程序 pareidoscope_collexeme_analysis 执行简单的词素分析,即它确定语言结构与给定结构槽中出现的词形或词根之间的关联强度。为此,必须在查询中用 "collo_item": true 标记 collo 项顶点。以下是一个示例查询(取自查询文件 ex_collexeme_analysis.json),用于找到与双宾语相关的动词:

[
    {
        "graph": {
            "description": "与双宾语相关的动词"
        },
        "nodes": [
            {
                "id": 0,
                "wc": "VERB",
                "collo_item": true
            },
            {
                "id": 1
            },
            {
                "id": 2
            }
        ],
        "links": [
            {
                "source": 0,
                "target": 1,
                "relation": "iobj"
            },
            {
                "source": 0,
                "target": 2,
                "relation": "obj"
            }
        ]
    }
]

以下是调用程序的示例(使用 -h 选项获取详细使用信息):

pareidoscope_collexeme_analysis -o collexemes en-ud-train.db ex_collexeme_analysis.json

在这个示例中,我们在上述转换的语料库上运行 ex_collexeme_analysis.json 中指定的查询。程序接受可选的 -c 选项,我们可以指定 collo 项是词形还是词根(默认为后者)。

结果以制表符分隔的格式写入 collexemes.tsv,并包含每个查询和共现词根的频率 O11, R1, C1N 以及三个关联度量(对数似然、t-分数、Dice 系数)。
对于简单词素分析,四种计数方法中有三种是完全等价的。由于在这种情况下由于可能存在的大量不一致性,计算句子数量没有多少意义,所以我们不包括该计数方法。因此,我们不需要区分不同的计数方法,也不需要包括不一致性的字段。结果按对数似然排序。


关联共现和伴随词素分析

程序 pareidoscope_covarying_collexemes 执行伴随词素分析,对于由单个依存关系组成的语言结构,相当于分析关联共现。该程序确定在语言结构的两个槽位中共同出现的词形或词干之间的关联。为此,必须将这两个槽位标记为 "collo_A": true"collo_B": true 在查询中。以下是一个示例查询(从查询文件 ex_covarying_collexemes.json 中提取),该查询确定 into-因果关系中的动词之间的关联:

[
    {
        "graph": {
            "description": "Into-causative, i.e. verb someone into verbing"
        },
        "nodes": [
            {
                "id": 0,
                "wc": "VERB",
                "collo_A": true
            },
            {
                "id": 1,
                "pos": "VBG",
                "collo_B": true
            },
            {
                "id": 2
            },
            {
                "id": 3,
                "lemma": "into"
            }
        ],
        "links": [
            {
                "source": 0,
                "target": 1,
                "relation": "advcl"
            },
            {
                "source": 0,
                "target": 2,
                "relation": "obj"
            },
            {
                "source": 1,
                "target": 3,
                "relation": "mark"
            }
        ]
    }
]

以下是一个调用程序的示例(使用 -h 选项获取详细使用信息):

pareidoscope_covarying_collexemes -o covarying en-ud-train.db ex_covarying_collexemes.json

在这个例子中,我们在上述转换的语料库上运行 ex_covarying_collexemes.json 中指定的查询。程序接受一个可选选项 -c,其中我们可以指定共同出现的项目应该是词形还是词干(后者是默认值)。

结果写入 covarying.tsv,采用制表符分隔的格式,并包含每个查询的共现项目对和计数方法、频率 O11, R1, C1N、不一致的数量以及三个关联度量(对数似然、t-得分、Dice 系数)。结果按对数似然排序,以确定计数焦点。


相关的更大结构

程序 pareidoscope_associated_structures 确定与查询结构相关联的更大去词化语言结构。它考虑所有星形更大的结构,即所有新顶点都必须与查询顶点相邻的结构,这些结构与查询结构在至少 --min-coocc 句子(默认:5)中共同出现,并且顶点数最多为 --max-size(默认:7)。更大结构的顶点被去词化,并且只包含词类信息(wc 属性)。以下是一个查询示例,该查询寻找与动词 give 的单及物用法相关联的更大结构:

[
    {
        "graph": {
            "description": "动词 give 的单及物用法"
        },
        "nodes": [
            {
                "id": 0,
                "wc": "VERB",
                "lemma": "give",
                "focus_point": true,
                "not_outdep": ["iobj", "obl"]
            },
            {
                "id": 1
            }
        ],
        "links": [
            {
                "source": 0,
                "target": 1,
                "relation": "obj"
            }
        ]
    }
]

以下是调用程序的一个示例(使用选项 -h 获取详细使用信息):

pareidoscope_associated_structures -o assoc_struc en-ud-train.db ex_associated_structures.json

在此示例中,我们在上述转换后的语料库上运行 ex_associated_structures.json 中指定的查询。

结果以制表符分隔的格式写入 assoc_struc.tsv,并包含每个查询的相关更大结构和计数方法、频率 O11, R1, C1N,不一致的数量以及三个关联度量(对数似然比、t-得分、Dice 系数)。结果按对数似然比对计数焦点点进行排序。


可视化关联结构

pareidoscope_associated_structures 输出的关联较大结构以节点-链接格式呈现,与查询图相同,可以使用程序 pareidoscope_draw_graphs 进行可视化。请注意,这要求您的计算机上已安装 Graphviz 和 Python 包 pydot。

以下是如何调用程序的一个示例(使用选项 -h 获取详细的用法信息):

tail -n +2 assoc_struc.tsv | head | cut -f2 | pareidoscope_draw_graphs -o draw -

在这个示例中,我们使用上一个命令创建的输出文件,提取十个最强烈关联的较大结构(使用 GNU coreutils)并绘制它们。图像将写入 draw 目录。以下是为与单向传递性 give 最强烈关联的四个较大结构创建的可视化。

Rank 1


Rank 2


Rank 3


Rank 4


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2251456.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装MySQL 5.7 亲测有效

前言:本文是笔者在安装MySQL5.7时根据另一位博主大大的安装教程基础上做了一些修改而成 首先在这里表示对博主大大的感谢 下面附博主大大地址 下面的步骤言简意赅 跟着做就不会出错 希望各位读者耐下心来 慢慢解决安装中出现的问题~MySQL 5.7 安装教程(全…

眼部按摩仪WT2605音频蓝牙语音芯片方案 单芯片实现语音提示及控制/手机无线音频传输功能

随着科技的快速发展,人们的生活方式也在不断改变,智能化、便捷化的产品逐渐成为市场的主流。眼部按摩仪作为一种结合了现代科技与健康生活理念的产品,受到了广大消费者的青睐。而在众多眼部按摩仪中,采用WT2605音频蓝牙芯片的方案…

RK3568平台开发系列讲解(PWM篇)PWM 子系统框架

🚀返回专栏总目录 文章目录 一、PWM 设备驱动层二、PWM 核心层三、PWM 适配器驱动层沉淀、分享、成长,让自己和他人都能有所收获!😄 📢整个 PWM 子系统可以用下面的框图来描述: 再上图中 PWM 子系统被划分为了三个层次, 分别为用户空间、 内核空间和硬件层, 内核空…

使用ESP32通过Arduino IDE点亮1.8寸TFT显示屏

开发板选择 本次使用开发板模块丝印为ESP32-WROOM-32E 开发板库选择 Arduino IDE上型号选择为ESP32-WROOM-DA Module 显示屏选择 使用显示屏为8针SPI接口显示屏 驱动IC为ST7735S 使用库 使用三个Arduino平台库 分别是 Adafruit_GFXAdafruit_ST7735SPI 代码详解 首…

yolo辅助我们健身锻炼

使用软件辅助健身能够大大提升运动效果并帮助你更轻松地达成健身目标。确保每次锻炼都更加高效且针对性强,精确记录你的训练进度,帮助你更清晰地看到自己的进步,避免无效训练。 借助YOLO11的尖端计算机视觉技术,跟踪和分析锻炼变得异常简单。它可以无缝检测和监控多种锻炼…

YOLO系列论文综述(从YOLOv1到YOLOv11)【第12篇:YOLOv9——可编程梯度信息(PGI)+广义高效层聚合网络(GELAN)】

YOLOv9 1 摘要2 改进点3 网络架构 YOLO系列博文: 【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】【第2篇:YOLO系列论文、代码和主要优缺点汇总】【第3篇:YOLOv1——YOLO的开山之作】【第4篇:YOLOv2—…

新能源汽车充电插口类型识别-YOLO标记,可识别Type1,ccs2的充电标准

前言: CCS标准定义的Type-2 CCS汽车充电端口,右侧装有直流充电枪的插头。汽车的充电端口设计巧妙地将交流部分(上半部分)与直流部分(下半部分的两个粗大的接口)集于一体。在交流和直流充电过程中,电动汽车…

k8s集成skywalking

如果能科学上网的话,安装应该不难,如果有问题可以给我留言 本篇文章我将给大家介绍“分布式链路追踪”的内容,对于目前大部分采用微服务架构的公司来说,分布式链路追踪都是必备的,无论它是传统微服务体系亦或是新一代…

微信小程序构建npm失败,没有找到可以构建的npm包

方法:打开终端输入 npm init -y npm install 或 yarn install我用 npm install 下载后并没有出现node_modules, 又用 yarn install 下载,成功了 下载好后,在project.config.json文件添加 "showShadowRootInWxmlPanel": true, …

Vue.js中的交互式样式:鼠标悬停与点击选中响应

在现代Web开发中,用户体验是至关重要的。Vue.js作为一个渐进式JavaScript框架,它提供了一种简洁而高效的方式来构建用户界面。本文将介绍如何在Vue.js中实现两种常见的交互效果:鼠标悬停响应和点击选中响应。 一、鼠标悬停响应右边显示 在V…

0017. shell命令--tac

目录 17. shell命令--tac 功能说明 语法格式 选项说明 实践操作 注意事项 17. shell命令--tac 功能说明 Linux 的 tac 命令用于按行反向输出文件内容,与 cat 命令的输出顺序相反。非常有趣,好记。也就是说,当我们使用tac命令查看文件内…

Zero to JupyterHub with Kubernetes上篇 - Kubernetes 离线二进制部署

前言: 纯个人记录使用。 搭建 Zero to JupyterHub with Kubernetes 上篇 - Kubernetes 离线二进制部署。搭建 Zero to JupyterHub with Kubernetes 中篇 - Kubernetes 常规使用记录。搭建 Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s。 k8s二进…

《Vue零基础入门教程》第十四课:列表渲染

往期内容 《Vue零基础入门教程》第六课:基本选项 《Vue零基础入门教程》第八课:模板语法 《Vue零基础入门教程》第九课:插值语法细节 《Vue零基础入门教程》第十课:属性绑定指令 《Vue零基础入门教程》第十一课:事…

1.1 数据结构的基本概念

1.1.1 基本概念和术语 一、数据、数据对象、数据元素和数据项的概念和关系 数据:是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。 数据是计算机程序加工的原料。 数据对象:是具有相同性质的数据元素的集合&…

mmsegmentation自己的数据集

我最大的问题就是没安装官方给定的mask转换格式来转换 这种带白色的不行哦! 黑色的可以,其实mask*50就可以看清楚标记的轮廓之类的。 数据集格式转换按照A,B,C代码直接转换:https://github.com/TommyZihao/Label2Everything/tree/main/lab…

分治算法中的主定理及其应用

引言 学习递归算法的时候,找到了用来计算算法复杂度的主定理。问大语言模型,发现回答的主定理描述有所不同。本文比较了两个不同版本中表述的差异。并给出一些例子用来计算分治递归类算法的复杂度。 主定理的不同版本 版本1 在《算法导论》第三版第四…

【kafka03】消息队列与微服务之Kafka 读写数据

Kafka 读写数据 参考文档 Apache Kafka 常见命令 kafka-topics.sh #消息的管理命令 kafka-console-producer.sh #生产者的模拟命令 kafka-console-consumer.sh #消费者的模拟命令 创建 Topic 创建topic名为 chen,partitions(分区)为3&#xff0…

LuaForWindows_v5.1.5-52.exe

Releases rjpcomputing/luaforwindows GitHub #lua C:\Users\Administrator\Desktop\test.lua print("Hello lua!") print("ZengWenFeng 13805029595")

软件无线电(SDR)的架构及相关术语

今天简要介绍实现无线电系统调制和解调的主要方法,这在软件定义无线电(SDR)的背景下很重要。 外差和超外差 无线电发射机有两种主要架构——一种是从基带频率直接调制到射频频率(称为外差),而第二种超外差是通过两个调制阶段来实…

【Electron学习笔记(四)】进程通信(IPC)

进程通信(IPC) 进程通信(IPC)前言正文1、渲染进程→主进程(单向)2、渲染进程⇌主进程(双向)3、主进程→渲染进程 进程通信(IPC) 前言 在Electron框架中&…