Я написал конкретные правила пометки текста с помощью pos-тега NLTK:
attack_rule = [
('prp', 'i'),
('md', ('will', 'can', 'could', 'shall')),
('vb', ('punch', 'attack','waste'))]
Однако у SpaCy есть тег зависимости, который мне очень нравится, который позволяет мне искать общий введите слова без перечисления конкретного, поэтому возьмите текстовое правило, которое я написал, но перед ним должно следовать DEP: nsubj
или вспомогательное средство, аналогичное этому шаблону, который я написал с использованием средства сравнения шаблонов SpaCy, котороеможет обнаруживать похожие шаблоны:
pattern = [{'DEP': 'nsubj', 'OP': '+'},
{'DEP': 'aux', 'OP': '+'},
{'POS': 'VERB', 'OP': '+'},
{'POS': 'DET', 'OP': '+'},
{'POS': 'ADJ', 'OP': '+'}]
Мне интересно, есть ли в NLTK похожая функция, я знаю, что вы можете сопоставить по типу слова, но я смог сделать это только путем поддержки типа слова с помощьюсловарь конкретных слов. Я не хочу полностью заменять это слово, однако, если я смогу дополнить текущее правило чем-то похожим на правило SpaCy, оно было бы наиболее превосходным. Пример фразы, которую они оба могут поймать, таков:
If the enemy player masses his forces here I will attack an enemy supply depot to disrupt his movements