【问题标题】:TensorFlow with a NER-Tagger带有 NER-Tagger 的 TensorFlow
【发布时间】:2016-03-17 10:24:33
【问题描述】:

我想知道是否有可能在 tensorflow 中将命名实体识别与自训练模型一起使用。

有一个 word2vec 实现,但我找不到“经典”POS 或 NER 标记器。

感谢您的帮助!

【问题讨论】:

    标签: nlp tensorflow


    【解决方案1】:

    您可以调整序列到序列模型以进行 NER 标记。您的训练文本是编码器的源词汇/序列:

    Yesterday afternoon , Mike Smith drove to New York .
    

    您的 BIO / BILOU NER 标签是解码器用于 NER 标记的目标词汇/序列:

    O O O B_PER I_PER O O B_LOC I_LOC O
    

    或者改为使用 POS 标签到解码器进行 POS 标签:

    NN NN ,  NNP NNP VBD TO NNP NNP . 
    

    [恕我直言,使用深度学习方法通​​常无需将 POS 标记作为中间步骤,除非您特别需要将这些特征作为输出。]

    您可能希望关闭解码器的词嵌入。

    这篇著名的论文将序列到序列模型应用于与 POS 和/或 NER 任务有一些相似之处的句法解析:Grammar as a Foreign Language

    【讨论】:

    • 嗨 jmp,谢谢你的建议。我调整了 seq2seq 模型并让它工作。在我的编码器中,我有很多数字,可以说“Hello 10.9/12.1 A+”。现在在创建词汇文件时,如果那里有很多这些数字。这导致模型使用 POS 标记来断言数字。但我的目标是更多地了解数据的“结构”而不是实际数字。你知道如何解决这个问题吗?
    • 我认为这在某种程度上取决于您的训练数据是如何被标记和标记的......但是您可以在预处理数据时将数字替换为特殊符号,例如 _NUM,例如“Hello _NUM /_NUM A+"
    • 这是个好主意,我会实现它来看看它是如何工作的。我的原始输入数据现在是“Hello Max 10.9/12.1 A+”,它将被预处理为 Hello Max _NUM/_NUM A+ 作为编码器输入。解码器输入将是“NN NNP NUM/NUM GRA”。谢谢你的提示:)
    • 您的建议很有效,谢谢。如果我说两个编码器/解码器序列并且我解码了第一个,那么第二个编码/解码会受到第一个编码/解码的影响,还是它们完全相互独立?因为在训练数据中,模型是逐句学习的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2015-01-06
    • 2018-02-18
    • 2021-03-10
    • 1970-01-01
    相关资源
    最近更新 更多