Как преобразовать текстовое предложение в формат 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