Определите место в предложении, где отсутствует пропущенное слово - PullRequest
2 голосов
/ 02 марта 2020

У меня есть код ниже:

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

Как мне найти программу в предложении позиция пропущенного слова?

1 Ответ

1 голос
/ 02 марта 2020

Это прямолинейная проверка грамматики. Вам нужен как минимум тегер, инструмент, который аннотирует часть речевого тегирования (POS), и парсер, лучше всего что-то вроде раннего парсера (https://en.wikipedia.org/wiki/Earley_parser) или что-то еще, способное анализировать дерево структура с учетом грамматики структуры фразы (PSG) вашего целевого языка. Независимо от того, какой конкретный алгоритм c вы выберете, всегда имейте в виду, что естественный язык, по крайней мере, слабо контекстно-зависим в иерархии chosmky, поэтому забудьте о автоматах конечных состояний et c. Если синтаксический анализатор не подтверждает ваше предложение как грамматическое (в linguisti c означает, что оно не лицензировано вашей PSG), вы можете использовать древовидную структуру, чтобы найти положение, которое не используется или неправильно используется каким-либо терминальным символом. Еще одна дополнительная вещь, которую вы должны сделать, - это морфологическая и регистровая маркировка, которая позволяет проверять ошибки в соответствии с глаголами и аргументами и т. Д. c. чтобы исключить такие предложения, как «собака лает». Может также взглянуть на реализации LFG или HPSG, которые реализуют это более тщательно, так как они являются более мощными в вычислительном отношении (контекстно-зависимые инструменты, другими словами, машина линейного ограниченного тьюринга).

...