Python NLTK分块解析树,将其保存到一个文件中,并使用CorpusReader类加载它

Python NLTK分块解析树,将其保存到一个文件中,并使用CorpusReader类加载它,python,nltk,tagged-corpus,Python,Nltk,Tagged Corpus,假设我有一个像下面这样的分块语料库,它保存在一个名为test.txt [Rapunzel/NNP] let/VBD down/RP [her/PP$ long/JJ golden/JJ hair/NN] 然后我可以把它装上 我对Tree对象做了一些更改,比如,将chunk标记从NP切换到NPP,并调用new >>> print(new) (S (NPP Rapunzel/NNP) let/VBD down/RP (NPP her/PP$ long/JJ gol

假设我有一个像下面这样的分块语料库,它保存在一个名为
test.txt

[Rapunzel/NNP] let/VBD down/RP [her/PP$ long/JJ golden/JJ hair/NN]
然后我可以把它装上

我对Tree对象做了一些更改,比如,将chunk标记从NP切换到NPP,并调用
new

>>> print(new)
(S
  (NPP Rapunzel/NNP)
  let/VBD
  down/RP
  (NPP her/PP$ long/JJ golden/JJ hair/NN))

现在我想做的是将这个
新的
树保存在一个文件中,并用ChunkedCorpusReader或任何其他读取器加载它,就像我用
test.txt
所做的那样。然而,我找不到一种方法将NLTK树对象保存在文件中,并且从文件中读取它。任何人都可以帮忙吗?

默认的字符串转换,它是
print
提供给您的,不错:它将单词与POS标记合并,并正确缩进新行。由于
file.write()
不会自动转换为字符串,因此必须将
str(newtree)
传递给文件的
write
方法

要对树的字符串表示形式的外观进行更多控制,请使用树方法
pformat()
。请注意,
Tree.pformat()
在早期版本的nltk中被称为
Tree.pprint()
;在最新版本中,
Tree.pformat()
返回字符串,而
Tree.pprint()
写入标准输出

如果希望用方括号分隔树,请将选项
parens=“[]”“
添加到
pformat()

>>> print(new)
(S
  (NPP Rapunzel/NNP)
  let/VBD
  down/RP
  (NPP her/PP$ long/JJ golden/JJ hair/NN))
>>> print(new.pformat(parens="[]"))
[S
  [NP Rapunzel/NNP]
  let/VBD
  down/RP
  [NP her/PP$ long/JJ golden/JJ hair/NN]]