【问题标题】:Annotating a Corpus (Syntaxnet)注释语料库(Syntaxnet)
【发布时间】:2016-05-26 15:02:49
【问题描述】:

我在Syntax official documentation on Github 之后下载并安装了 SyntaxNet。按照文档(注释语料库),我尝试通过 SyntaxNet 读取名为wj.conll.conll 文件并将结果写入wj-tagged.conll,但我不能。我的问题是:

  1. SyntaxNet 是否总是读取.conll 文件? (不是.txt 文件?)。我有点困惑,因为我知道 SyntaxNet 读取 .conll 文件以进行训练和测试过程,但我有点怀疑是否有必要将 .txt 文件转换为 .conll 文件才能获得他们的词性和依赖解析。

  2. 如何使 SyntaxNet 从文件中读取(我厌倦了 GitHub 文档中有关 SyntaxNet 的所有可能方式的解释,但它对我不起作用)

【问题讨论】:

  • 您的问题是什么?编辑您的帖子以提出明确的问题,以便人们回答!
  • 就你的问题 1,“SyntaxNet 是否总是读取 .conll 文件?(不是 .txt 文件?)”调用文件 XYZ.conllXZY.txt。 里面的格式很重要,而不是文件扩展名。关于您的问题 2“我如何让 SyntaxNet 从文件中读取”,您是否尝试过标准 shell 输入或 Python 文件读取?根据文档here,这对我来说似乎是一种可能性。
  • 非常感谢。效果很好。

标签: nlp tensorflow syntaxnet


【解决方案1】:

将这些声明行添加到文件末尾的“context.pbtxt”。这里的“inp”和“out”是syntexnet根目录下的文本文件。

   input {
   name: 'inp_file'
   record_format: 'english-text'
     Part {
     file_pattern: 'inp'
     }
   }
   input {
   name: 'out_file'
   record_format: 'english-text'
     Part {
     file_pattern: 'out'
     }
   }

将句子添加到您希望为其完成标记的“inp”文件中,并在下次使用 --input 和 --output 标签运行 syntaxnet 时在 shell 中指定它们。

为了对您有更多帮助,我粘贴了一个示例 shell 命令。

bazel-bin/syntaxnet/parser_eval \
--input inp_file \
--output stdout-conll \
--model syntaxnet/models/parsey_mcparseface/tagger-params \
--task_context syntaxnet/models/parsey_mcparseface/context.pbtxt \
--hidden_layer_sizes 64 \
--arg_prefix brain_tagger \
--graph_builder structured \
--slim_model \
--batch_size 1024 | bazel-bin/syntaxnet/parser_eval \
--input stdout-conll  \
--output out_file \
--hidden_layer_sizes 512,512 \
--arg_prefix brain_parser \
--graph_builder structured \
--task_context syntaxnet/models/parsey_mcparseface/context.pbtxt \
--model_path syntaxnet/models/parsey_mcparseface/parser-params \
--slim_model --batch_size 1024

在上面的脚本中,第一个shell命令的输出(POS标记)被用作第二个shell命令的输入,其中两个shell命令用“|”分隔

【讨论】:

  • 当然,抱歉,我是 Stack Overflow 的新手,我现在就去做
  • @HrashPatni 输出文件只标识了每个作品的部分语音,并没有显示依赖关系,例如ROOT、nsubj等。不知道是我做错了还是脚本的问题
  • @Nazanin 较旧的脚本仅用于 POS 标记,这只是我之前提到的一个示例。我已根据您的需要更新了脚本,但只是为了帮助您。我希望它有帮助。 :)
  • @HarshPatni 我收到此错误:F ./syntaxnet/proto_io.h:147] 检查失败:input.record_format_size() == 1(0 对 1)TextReader 仅支持输入一个记录格式:名称:“inp”
  • @Nazanin 以前我指的是只提供 POS 的那个。我希望你明白了。如果您仍然收到错误,那么它们不在脚本中,而是在旧脚本之前运行的其他内容中。请尝试并记住您在此期间所做的更改。否则再次下载 syntaxnet 并按照与之前相同的说明进行操作。
【解决方案2】:

如果您想将 demo 的输出保存在 .txt 文件中,这只是一个快速帮助:

试试echo "open file X with application Y" | ./demo.sh > output.txt 它为您提供当前目录的句子树。

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • @EugeneS 是的,它看起来没有提供答案。我想做的是让 SyntaxNet 从文件中读取,假设语音识别的输出并将其输出保存为文本文件,以便将其发送到 python 进行进一步分析。不幸的是,我在这里得到的答案根本不起作用。所以我忽略了我可以从文件中读取的部分,并试图找到一种将树输出保存在文本文件中的方法。如果您仍然认为它不相关,请告诉我,我将删除它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多