在python中使用Syntaxnet POS标记?

2024-06-16 09:32:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用python中syntaxnet的解析器标记(例如:VBD ROOT、NN nsubj等)来帮助创建chatterbot。输入在控制台中完成。在

问:我怎样才能在一个变量中只得到VBP根而没有其他结果?我可以用这个调用来打印解析树的ASCII版本:subprocess.call(["echo 'Bob brought the pizza to Alice.' | syntaxnet/demo.sh"], shell =True),但是我对如何获取特定变量并将其存储在python变量中有点困惑。在

附言:我一周前开始学习python。在


Tags: 标记echo版本解析器asciirootnncall
3条回答

我也是python和SyntaxNet的初学者。我所做的是通过删除将SyntaxNet的输出从树改为制表符分隔的文本文件

  bazel-bin/syntaxnet/conll2tree \
   task_context=$MODEL_DIR/context.pbtxt \
   alsologtostderr

从SyntaxNet文件夹中的demo.sh。运行这个命令echo'open Book, which I have written with laboratory writer, with libreoffice writer.' | syntaxnet/demo.sh > output.txt

文本文件如下:

enter image description here

然后可以使用csv.reader读取数据,将其转换为list,然后搜索sublists的第4列(列号从“0”开始)和第7列以查找ROOT

我把上面的代码解释了一下:

^{pr2}$

请注意,这段代码是由一个bignner编写的,但它至少对我有效。在

如果您是一个Python初学者,并且只想使用词性(POS)标记,SyntaxNet可能有点过头了。SpaCy易于使用且相当精确。在

我在我的博客上写了一篇简单的文章,展示了如何将syntaxnet的输出加载到NLTK的结构中,以获得基于PoS和依赖关系的名词短语到DependencyGraph中:

http://www.davidsbatista.net/blog/2017/03/25/syntaxnet/

相关问题 更多 >