在python中使用Syntaxnet POS标记?
我想在python中使用syntaxnet的解析器标记(例如:VBD ROOT、NN nsubj等)来帮助创建聊天室。输入在控制台中完成 问题:如何在变量中只获取VBP根的结果而不获取其他结果?我可以通过这个调用打印ASCII版本的解析树:在python中使用Syntaxnet POS标记?,python,nlp,text-parsing,pos-tagger,syntaxnet,Python,Nlp,Text Parsing,Pos Tagger,Syntaxnet,我想在python中使用syntaxnet的解析器标记(例如:VBD ROOT、NN nsubj等)来帮助创建聊天室。输入在控制台中完成 问题:如何在变量中只获取VBP根的结果而不获取其他结果?我可以通过这个调用打印ASCII版本的解析树:subprocess.call([“echo”Bob把比萨饼带给Alice.\124; syntaxnet/demo.sh“],shell=True),但是我对如何获取特定变量并将其存储在python变量中有点困惑 p、 学生:我一周前开始学习python。如
subprocess.call([“echo”Bob把比萨饼带给Alice.\124; syntaxnet/demo.sh“],shell=True)
,但是我对如何获取特定变量并将其存储在python变量中有点困惑
p、 学生:我一周前开始学习python。如果你是python初学者,并且你只想使用词性(POS)标记,那么SyntaxNet可能有点过头了。很容易使用并且非常准确。如果您是Python初学者,并且只想使用词性(POS)标记,那么SyntaxNet可能有些过分了。易于使用且非常准确。我也是python和SyntaxNet的初学者。我所做的是通过删除将SyntaxNet的输出从树更改为以制表符分隔的文本文件
bazel-bin/syntaxnet/conll2tree \
--task_context=$MODEL_DIR/context.pbtxt \
--alsologtostderr
来自SyntaxNet文件夹中的。运行以下命令echo“openbook,这是我用laboratory writer和libreoffice writer编写的。”| syntaxnet/demo.sh>output.txt
文本文件如下所示:
然后,您可以使用csv.reader
读取数据,将其转到列表
,然后搜索子列表的第4列(列编号从“0”开始)和第7列以查找根目录
我把上述解释的代码:
#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编写的,但它至少对我有用。我也是python和SyntaxNet的初学者。我所做的是通过删除将SyntaxNet的输出从树更改为以制表符分隔的文本文件
bazel-bin/syntaxnet/conll2tree \
--task_context=$MODEL_DIR/context.pbtxt \
--alsologtostderr
来自SyntaxNet文件夹中的。运行以下命令echo“openbook,这是我用laboratory writer和libreoffice writer编写的。”| syntaxnet/demo.sh>output.txt
文本文件如下所示:
然后,您可以使用csv.reader
读取数据,将其转到列表
,然后搜索子列表的第4列(列编号从“0”开始)和第7列以查找根目录
我把上述解释的代码:
#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编写的,但它至少对我有用。我在博客上写了一篇简单的文章,展示了如何将syntaxnet输出加载到NLTK的结构中,以根据词性和依赖关系将名词短语加载到依赖关系图中:
我在我的博客上写了一篇简单的帖子,展示了如何将syntaxnet输出加载到NLTK的结构中,从而根据词性和依赖关系将名词短语加载到依赖关系图中: