我正在研究使用CoNLL-U格式的依赖项解析。我可以找到如何处理CoNLL-U解析器或tokenlist,但我无法找到如何将文本句子转换为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(路径)函数的输入,是"_io Text10Wrapper”格式的文件,里面包含了我想要转换成CoNLL-U文件的文本句子,比如: 1.完全令人沮丧的经历。2.付了额外的钱买了可以连接的空调。
然而,在我尝试了上面定义的conllConverter(path)函数之后,输出只显示了10个原始列(看起来像是CoNLL-U格式)和原始文本,没有任何额外的信息。
总之,我想问一下如何将文本句子转换为CoNLL-U格式。
发布于 2021-03-03 04:16:21
尝尝这个
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=Nohttps://stackoverflow.com/questions/61790489
复制相似问题