我也是 python 和 SyntaxNet 的初学者。我所做的是通过删除将 SyntaxNet 的输出从树更改为制表符分隔的文本文件
bazel-bin/syntaxnet/conll2tree \
--task_context=$MODEL_DIR/context.pbtxt \
--alsologtostderr
来自SyntaxNet文件夹中的 demo.sh。运行此命令回显'open Book, which I have written with laboratory writer, with libreoffice writer.' | syntaxnet/demo.sh > output.txt
文本文件是这样的:
然后您可以使用 读取数据csv.reader
,将其转到list
然后搜索sublists
(列号从“0”开始)的第 4 列和第 7 列以查找ROOT
我把上面解释的代码:
#read from Syntaxnet output tab delimited textfile
def readata(filename):
file=open(filename,'r')
lines=file.readlines()
lines=lines[:-1]
data=csv.reader(lines,delimiter='\t')
#make a list of lists
lol=list(data)
return lol
#find the verb which is ROOT of the sentence
lists=readata(filename)
for sublist in lists:
if sublist[7]=='ROOT' and sublist[4]=='VBP':
word=sublist[1]
请注意,此代码是由 bignner 编写的,但它至少对我有用。