я могу открыть .bracket файл, используя python? - PullRequest
0 голосов
/ 05 марта 2020

Могу ли я открыть файл .bracket с помощью python? Я пытался создать дерево с помощью nltk. Если это только 1 предложение, у меня нет проблем, например:

s = '(S (NP (DT the) (NN cat)) (VP (VBD ate) (NP (DT a) (NN cookie))))'
t = Tree.fromstring(s)
print("Convert bracketed string into tree:")
print(t)
print(t.__repr__())

Но у меня есть сотни предложений, которые есть в примере файла .bracket:

(S (SBAR (IN Kendati) (S (NP (-NONE- *)) (VP (MD sempat) (VP (VB membantah) (NP (PRP nya)))))) (Z ,) (CC namun) (NP (NNP Tjandra)) (NP (RB akhirnya)) (VP (VB mengakui) (SBAR (IN jika) (S (ADVP (RB memang)) (NP (NNP Pinnacle)) (VP (VB berencana) (S (NP (-NONE- *-1)) (VP (VB mengakuisisi) (NP (NNP Toba) (NNP Pulp)))))))) (Z .))
(SINV (SBAR-TPC-1 (Z ") (IN Sehingga) (S (NP (NP (NN rasio) (NN utang) (NN pemerintah)) (PP (IN pada) (NP (NN akhir) (CD 2008)))) (VP (VB diperkirakan) (S (NP (-NONE- *-2)) (VP (VB turun) (S (NP (-NONE- *-3)) (VP (VB menjadi) (NP (QP (RB sekitar) (CD 33,0) (NN persen))))))))) (Z ,) (Z '')) (VP (VB ujar) (SBAR (-NONE- *T*-1))) (NP (NN Presiden)) (Z .))
etc.

Я попытался использовать:

s = open(r'file.bracket')
t = Tree.fromstring(s)
print(t)

но я получил ошибку: TypeError: ожидаемая строка или байтовоподобный объект . (извините, я новичок ie в НЛП)

1 Ответ

1 голос
/ 06 марта 2020

Если каждая строка в файле представляет собой дерево в скобках, просто переберите файл и сохраните объекты nltk.Tree в списке.

from nltk import Tree

my_trees = []

with open('myfile.bracket') as fin:
    for line in fin:
       my_trees.append(Tree.fromstring(line))
...