【问题标题】:Identify Location Within the Sentence where the Missing Word Belongs识别缺失词所属的句子中的位置
【发布时间】:2020-03-02 09:23:59
【问题描述】:

我有以下代码:

import nltk
exampleArray = ['The dog barking']

def processLanguage():
    for item in exampleArray:
        tokenized = nltk.word_tokenize(item)
        tagged = nltk.pos_tag(tokenized)
        print(tagged)

processLanguage()

上述代码的输出是标记化的单词及其对应的词性。示例:

[('The', 'DT'), ('dog', 'NN'), ('barking', 'NN'), ('.', '.')]

DT = determiner
NN = noun

文本应该是

The dog is barking

并且应该有 POS 序列

DT -> NN -> VBZ -> VBG

VBZ = verb, present tense, 3rd person singular
VBG = verb, present participle or gerund

如何让程序在句子中定位到缺失单词的位置?

【问题讨论】:

  • 我不清楚您要做什么。如果您将错误的句子传递给 POS 标注器,很可能会返回错误的标签。
  • @BramVanroy -> 也许正确的问题是识别错误的句子语法?
  • 我担心 NLTK 不是适合这项工作的工具。要做到这一点,您可能需要查看 aclweb.org/anthology/W19-4426 之类的内容
  • 我会尝试 LanguageTool java 应用程序语法检查器,您可以在本地运行它并通过 http 从任何语言连接。不完全符合您的要求,但可能有助于解决您遇到的实际问题

标签: python nlp nltk pos-tagger part-of-speech


【解决方案1】:

这是直接的语法检查。您至少需要一个标注器、一个注释词性标注 (POS) 的工具和一个解析器,最好是早期解析器 (https://en.wikipedia.org/wiki/Earley_parser) 或其他东西,它能够在给定短语结构语法的情况下分析树结构(PSG) 您的目标语言。与您选择的特定算法无关,请始终记住,自然语言在 chosmky 层次结构中至少是弱上下文敏感的,因此请忘记有限状态自动机等。如果解析器没有验证您的句子是语法的(用语言术语来说,它未经您的 PSG 许可),您可以使用树形结构来定位某些终端符号未使用或错误使用的位置。您必须做的另一件事是形态和大小写标记,它允许检查动词和论点等方面的错误,以排除诸如“狗在吠叫”之类的句子。也许还可以看看 LFG 或 HPSG 实现,它们以更彻底的方式实现了这一点,因为它们在计算上更强大(上下文敏感工具,换句话说,线性有界图灵机)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    相关资源
    最近更新 更多