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]]