Извините за мой английский sh. Я пытаюсь получить еду и количество еды из корпуса на дереве. Я импортировал библиотеку NLTK, обучил тэгеру на испанском sh, после анализа, чтобы извлечь токены, я сделал раздел грамматики и результаты для дерева
Мой код выглядит следующим образом
import nltk
from nltk.chunk import *
from nltk.chunk.util import *
from nltk.chunk.regexp import *
from nltk.corpus import cess_esp
from nltk.tag.hmm import HiddenMarkovModelTagger
# Creación de corpus
corpus = ["quiero una hamburguesa, por favor", "quiero 2 pizza y 1 hamburguesa", "quiero un resfreco y un perrito", "por favor, una pizza", "quiero tres pizzas"]
# Entrenar un tagger en español
sents = cess_esp.tagged_sents()
training = []
test = []
for i in range(len(sents)):
if i % 10:
training.append(sents[i])
else:
test.append(sents[i])
sentence="una pizza mediana, por favor"
sentences = nltk.tokenize.sent_tokenize(sentence)
print ("\n Frases:",sentences)
tokens = nltk.word_tokenize(sentence)
print ("\n Tokens:",tokens)
tagged =nltk.pos_tag(tokens)
print ("\n Análisis morfológico:",tagged)
gramatica = r"""
comida: {<JJ>+<NN.>}
cantidad:{<JJ>}
"""
regex_parser = nltk.RegexpParser(gramatica)
cp = nltk.RegexpParser(gramatica)
resultado = cp.parse(tagged)
print(resultado)
resultado.draw()
Но когда я рисую на консоли, дерево выглядит следующим образом:
(S (cantidad una/JJ) pizza/NN mediana/NN ,/, por/NN favor/
Еда не узнает меня, это ошибка в грамматической части, но я не могу понять это вне.