当前位置: 首页 > 知识库问答 >
问题:

如何使用conllu库创建令牌列表?

魏烨熠
2023-03-14

我试图使用conllu库创建一个CoNLL-U文件,作为我正在进行的通用依赖项标记项目的一部分。

sentence = [['The', 'the', 'DET', ... ], ['big', big', 'ADJ', ... ], ['dog', 'dog', 'NOUN', ...], ...]
from collections import OrderedDict

def compile_sent(sent):
    sent_list = list()
    for i, tok_data in enumerate(sent):
        tok_id = i + 1
        tok = tok_data[0]
        lemma = tok_data[1]
        pos = tok_data[2]
        feats = tok_data[3]
        compiled_tok = OrderedDict({'id': tok_id, 'form': tok, 'lemma': lemma, 'upostag': pos, 'xpostag': None, 'feats': feats, 'head': None, 'deprel': None, 'deps': None, 'misc': None})
        sent_list.append(compiled_tok)
    sent_list = sent_list.serialize()
    return sent_list

print(compile_sent(sentence))
Traceback (most recent call last):
  File "/Users/me/PycharmProjects/UDParser/Rough_Work.py", line 103, in <module>
    print(compile_sent(sentence))
  File "/Users/me/PycharmProjects/UDParser/Rough_Work.py", line 99, in compile_sent
    sent_list = sent_list.serialize()
AttributeError: 'list' object has no attribute 'serialize'
data = """
# text = The big dog
1   The     the    DET    _    Definite=Def|PronType=Art   _   _   _   _
2   big     big    ADJ    _    Degree=Pos                  _   _   _   _
3   dog     dog    NOUN   _    Number=Sing                 _   _   _   _

"""

sentences = data.parse()
sentence = sentences[0]
print(sentence)

TokenList<The, quick, brown, fox, jumps, over, the, lazy, dog, .>

对此类型的列表运行serialize()方法将使其返回为CoNLL-U格式的字符串,如上面示例中的data。但是,当您试图在正常的python列表上运行它时,它就会中断。

我如何创建这样的tokenlist而不是普通的python列表对象?

共有1个答案

梁丘飞鸾
2023-03-14

sent_list从普通列表更改为标记列表

from conllu import TokenList
from collections import OrderedDict

def compile_sent(sent):
    sent_list = TokenList()
    # ... etc ...

您可以通过在REPL中使用help(TokenList)查看TokenList上的函数。

 类似资料:
  • 问题内容: 在我的Java EE6 REST服务上,我想使用身份验证令牌从移动设备登录,用户将发送其用户名,密码,服务器将发回令牌,该令牌将用于授权用户对给定的进一步请求时间。 我可以这样简单地自己创建令牌吗?(我想我不需要加密此令牌,因为我将使用HTTPS。) 还是有一种更标准的方式来创建我的令牌?也许它存在于API之一 问题答案: 您有效地提出的方案允许客户端无限制地访问您的服务。初始登录后,

  • 我正在尝试创建一个自定义令牌,以使用用户的用户名登录。我看过一些文件https://firebase.google.com/docs/auth/admin/create-custom-tokens#web,通过如何为用户提供用户名而不是电子邮件登录链接到我?,我发现我需要补充 使用Firebase Admin SDK创建自定义令牌 和 在客户端上使用自定义令牌登录 目前我可以看到基于留档需要包含什

  • 我想使用证书凭据将文件上载到s3。是否可以使用certifcate获取s3 bucket的客户机对象? 最初,我尝试使用下面的命令上传一个文件, 现在,我不想使用ACCESS_KEY | SECRET_KEY来创建客户机对象,因为它正在边缘设备上运行。相反,我已经生成了证书(IOT)。我想使用此证书创建客户端对象。因此,最后我有了临时访问权|密钥|秘密|会话|令牌。我想传递这些临时凭据以创建客户端

  • 问题内容: 一般来说,我刚接触Java和Android编程,但是我想创建一个小型Java库,以便在普通(非Android)Java应用程序和Android应用程序之间共享一些代码;所以我的问题是用Eclipse创建普通Java库的最佳方法是什么? 我在任何地方都找不到从Eclipse创建新的Java库项目的选项。这是否意味着我必须使用普通的Java应用程序作为起点?因为这也将用于普通的Java应用

  • 问题内容: 我正在尝试使用angular.js创建一个POST请求到这个Django视图。 因此,我创建了此资源。 在控制器中调用 get 方法可以正常工作。网址已翻译为。 我在执行更新/ POST方法时遇到问题。 该网址已转换为,其中缺少一个斜杠。如果在URL定义中不使用斜杠,可以很容易地避免这种情况。 代替 使用不带斜杠的变通方法,我现在得到403(禁止)状态代码,这可能是由于我未在POST请

  • 我使用在我的ASP. NET Core应用程序中实现Stripe。 我知道如何使用获得信用卡充值的令牌,但是我从哪里获得令牌来创建客户呢? 在文档中,我看到我需要获得一个令牌来创建客户,但不确定该令牌来自何处。https://stripe.com/docs/api/dotnet#create_customer 据我所知,代币只能使用一次,所以它不能是我在信用卡充值前得到的相同代币。