nlp - 使用 Syntaxnet 进行命名实体识别

标签 nlp tensorflow syntaxnet

我正在尝试理解和学习 SyntaxNet。我想弄清楚是否有任何方法可以使用 SyntaxNet 进行语料库的名称实体识别。任何示例代码或有用的链接将不胜感激。

最佳答案

虽然 Syntaxnet 没有明确提供任何命名实体识别功能,但 Parsey McParseface 会进行词性标记并将输出生成为 Co-NLL 表。

任何专有名词都被标记为 NNP,我发现一个简单的正则表达式标识符如下:<NNP>+即一个或多个专有名词放在一起,可以在文档中产生相当好的命名实体。它当然是基本的和基于规则的,但仍然有效。

为了将 Co-NLL 数据从 demo.sh 脚本(位于“/opt/tensorflow/models/syntaxnet/syntaxnet”)通过管道传输到输出文件,注释掉通过管道传输到 conll2ascii.py 的代码部分脚本看起来像这样:

PARSER_EVAL=bazel-bin/syntaxnet/parser_eval
MODEL_DIR=syntaxnet/models/parsey_mcparseface
[[ "$1" == "--conll" ]] && INPUT_FORMAT=stdin-conll || INPUT_FORMAT=stdin

$PARSER_EVAL \
  --input=$INPUT_FORMAT \
  --output=stdout-conll \
  --hidden_layer_sizes=64 \
  --arg_prefix=brain_tagger \
  --graph_builder=structured \
  --task_context=$MODEL_DIR/context.pbtxt \
  --model_path=$MODEL_DIR/tagger-params \
  --slim_model \
  --batch_size=1024 \
  --alsologtostderr \
   | \
  $PARSER_EVAL \
  --input=stdin-conll \
  --output=sample-param \
  --hidden_layer_sizes=512,512 \
  --arg_prefix=brain_parser \
  --graph_builder=structured \
  --task_context=$MODEL_DIR/context.pbtxt \
  --model_path=$MODEL_DIR/parser-params \
  --slim_model \
  --batch_size=1024 \
  --alsologtostderr

您还会注意到上面文件中的输出参数已更改为 sample-param。我们现在将设置它。前往 context.pbtxt 文件(位于“/opt/tensorflow/models/syntaxnet/syntaxnet/models/parsey_mcparseface”)并创建一个输入参数以指向您的输出文件。它应该看起来像这样:
input {
  name: 'sample-param'
  record_format: 'conll-sentence'
  Part {
    file_pattern: "directory/prepoutput.txt"
  }
}

保存并关闭文件并返回到“/opt/tensorflow/models/syntaxnet”并按照语法网教程中的说明运行语法网/演示文件。完成后转到指定的输出文件夹,您应该有一个 co-nll 格式的表格。然后,您可以运行一个简单的迭代程序,该程序遍历每个条目并识别 pos 标签,并基于此尝试我建议的实体识别格式的变体。

希望这有帮助!

关于nlp - 使用 Syntaxnet 进行命名实体识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38109869/

相关文章:

java - 使用 Apache Solr 的半自然语言搜索

math - 为什么我们在深度学习中使用对数概率?

python - 在 tensorflow 中连接具有不同形状的张量

perl - 从 Perl 文本 block 中提取一个人的全名?

nlp - 关于从 TripAdvisor 抓取数据的任何建议

TensorFlow 交叉熵教程

python - 具有动态 ksize 的 Tensorflow maxpool

python - 解析 python asciitree 输出并打印 'labelled bracket notation'

machine-learning - 训练 SyntaxNet 需要多少数据?

python - 如何在 Linux 系统上使用 SyntaxNet 输出来操作执行命令,例如将文件保存在文件夹中