Как преобразовать текстовое предложение в формат CoNLL-U?

Я изучаю синтаксический анализ зависимостей с использованием формата CoNLL-U. Я могу найти, как обрабатывать синтаксический анализатор CoNLL-U или список токенов, но я не могу найти, как преобразовать текстовое предложение в формат CoNLL-U.

Я пробовал конвертировать код с https://github.com/datquocnguyen/jPTDP

def conllConverter(path):
    writer = open(path) + ".conllu", "w", encoding = "utf-8")
    lines = open(path, "r", encoding = "utf-8").readlines()
    for line in lines:
        tok = line.strip().split()
        if not tok or line.strip() == "":
            writer.write("\n")
        else:
            count += 1
            writer.write(str(count) + "\t" + word + "\t" + "\t".join(['_'] * 8) + "\n")
        writer.write("\n")
    writer.close()

if __name__ == "__main__":
    conllCoverter("test")
    pass

Файл "test", входящий в функцию conllCoverter(path), представляет собой файл формата "_io Text10Wrapper", который содержит текстовые предложения, которые я хочу преобразовать в файл CoNLL-U, такие как: 1. Совершенно разочаровывающий опыт. 2. Заплатили дополнительные деньги, чтобы получить кондиционер с возможностью подключения.

Однако после того, как я попробовал функцию conllConverter (path), которая определена выше, вывод показывает мне только 10-необработанные столбцы (похоже на формат CoNLL-U) и исходный текст без какой-либо дополнительной информации.

В заключение хочу спросить, как преобразовать текстовое предложение в формат CoNLL-U.

1 ответ

Попробуй это

      import spacy
from spacy_conll import ConllFormatter

nlp = spacy.load('en_core_web_sm')
conllformatter = ConllFormatter(nlp, ext_names={'conll_pd': 'pandas'},
                                conversion_maps={'lemma': {'-PRON-': 'PRON'}})
nlp.add_pipe(conllformatter, after='parser')
doc = nlp('The quick brown fox jumps over the lazy dog.')
print(doc._.pandas)

Что даст вам следующий вывод

         id   form  lemma upostag xpostag           feats  head    deprel deps  misc
    1    The    the     DET      DT               _     5       det    _   _
    2  quick  quick     ADJ      JJ      Degree=pos     5      amod    _   _
    3  brown  brown     ADJ      JJ      Degree=pos     5      amod    _   _
    4    fox    fox    NOUN      NN     Number=sing     5  compound    _   _
    5  jumps   jump    NOUN     NNS     Number=plur     0      ROOT    _   _
    6   over   over     ADP      IN               _     5      prep    _   _
    7    the    the     DET      DT               _     9       det    _   _
    8   lazy   lazy     ADJ      JJ      Degree=pos     9      amod    _   _
    9    dog    dog    NOUN      NN     Number=sing     6      pobj    _   SpaceAfter=No
    10      .      .   PUNCT       .  PunctType=peri     5     punct   _   SpaceAfter=No
Другие вопросы по тегам