python - 解析 CoNLL-U 缺少注释 (misc)
问题描述
我正在尝试从此github Repo解析 .ConLL 文件,这是我的解析代码示例:
from io import open
from conllu import parse_tree_incr
import glob
import os
for filename in glob.glob('./licenses-conll-format/22-MIT/MIT_permissionCopy.conll'):
data_file=open(filename, "r", encoding="utf-8")
for tokentree in parse_incr(data_file):
print(tokentree.serialize())
输出 :
24 Permission _ NN NN _ 27 nsubjpass _ _
25 is _ VBZ VBZ _ 27 auxpass _ _
26 hereby _ RB RB _ 27 advmod _ _
27 granted _ VBN VBN _ 11 rcmod _ _
28 , _ , , _ 27 punct _ _
29 free _ JJ JJ _ 27 advmod _ _
30 of _ IN IN _ 0 erased _ _
31 charge _ NN NN _ 29 prep_of _ _
这似乎缺少原始 .conll 文件中的一些注释(I-PERMISSION、B-PERMISSION 等 ..):
24 Permission _ NN NN _ 27 nsubjpass _ _ B-PERMISSION COPY
25 is _ VBZ VBZ _ 27 auxpass _ _ I-PERMISSION
26 hereby _ RB RB _ 27 advmod _ _ I-PERMISSION
27 granted _ VBN VBN _ 11 rcmod _ _ I-PERMISSION
28 , _ , , _ 27 punct _ _ O
29 free _ JJ JJ _ 27 advmod _ _ I-PERMISSION
30 of _ IN IN _ 0 erased _ _ I-PERMISSION
31 charge _ NN NN _ 29 prep_of _ _ I-PERMISSION
32 , _ , , _ 27 punct _ _ O
关于如何获取所有注释的任何想法?
解决方案
您可以自己指定字段的元组:
fields = ('id', 'form', 'lemma', 'upostag', 'xpostag', 'feats', 'head', 'deprel', 'deps', 'misc', 'rest')
for tokentree in parse_incr(data_file, fields=fields):
print(tokentree.serialize())
输出:
24 Permission _ NN NN _ 27 nsubjpass _ _ B-PERMISSION
25 is _ VBZ VBZ _ 27 auxpass _ _ I-PERMISSION
26 hereby _ RB RB _ 27 advmod _ _ I-PERMISSION
27 granted _ VBN VBN _ 11 rcmod _ _ I-PERMISSION
推荐阅读
- azure - Azure 策略未正确针对 Windows VM
- java - 升级到 Spring Cloud Hoxton.SR3 后收到 AMQP 消息时出现 ClassNotFoundException
- php - Laravel - 检查关系是否存在
- elasticsearch - 由于 Elasticsearch 集群运行状况黄色导致的部分查询结果
- r - 如何将一个df的列中的每个值与R中另一个df的列中的每个值进行比较?具有不同行号的dfs
- json - 错误:不能将参数类型“int”分配给参数类型“String”
- sql-server - 为什么使用增量变量更新会创建重复值?
- ios - 在主 StackView 中嵌入的 ScrollView 中嵌入 StackView
- html - 如何让输入字段与文本区域并排放置,而不是重叠?
- pdf - 无法在 Intellij IDEA 中查看 pdf