Я пытаюсь создать словарь для того, чтобы получить количество и тип пищи из текста на испанском sh. Я уже разложил токены, пометил предложения и создал грамматику с помощью regexparser. Мой код выглядит следующим образом:
grammar=r'''
comida: {<CD>*<NN>+}
{<JJ>*<NN>+}
{<CD>*<NN><IN>*<NN>+}
cantidad: {<JJ>}
{<CD>}
{<DT>}
{<NN>}
'''
regex_parser = nltk.RegexpParser(grammar)
#Aplicación RegexParser
grammar_orders = []
for tagged_sentence in tagged_sentences:
print("")
grammar_order = regex_parser.parse(tagged_sentence)
grammar_orders.append(grammar_order)
print(grammar_order)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-309-e3919fd5b619> in <module>
3 for tagged_sentence in tagged_sentences:
4 print("")
----> 5 grammar_order = regex_parser.parse(tagged_sentence)
6 grammar_orders.append(grammar_order)
7 print(grammar_order)
~\Anaconda3\lib\site-packages\nltk\chunk\regexp.py in parse(self, chunk_struct, trace)
1290 for i in range(self._loop):
1291 for parser in self._stages:
-> 1292 chunk_struct = parser.parse(chunk_struct, trace=trace)
1293 return chunk_struct
1294
~\Anaconda3\lib\site-packages\nltk\chunk\regexp.py in parse(self, chunk_struct, trace)
1096 trace = self._trace
1097
-> 1098 chunkstr = ChunkString(chunk_struct)
1099
1100 # Apply the sequence of rules to the chunkstring.
~\Anaconda3\lib\site-packages\nltk\chunk\regexp.py in __init__(self, chunk_struct, debug_level)
97 self._root_label = chunk_struct.label()
98 self._pieces = chunk_struct[:]
---> 99 tags = [self._tag(tok) for tok in self._pieces]
100 self._str = '<' + '><'.join(tags) + '>'
101 self._debug = debug_level
~\Anaconda3\lib\site-packages\nltk\chunk\regexp.py in <listcomp>(.0)
97 self._root_label = chunk_struct.label()
98 self._pieces = chunk_struct[:]
---> 99 tags = [self._tag(tok) for tok in self._pieces]
100 self._str = '<' + '><'.join(tags) + '>'
101 self._debug = debug_level
~\Anaconda3\lib\site-packages\nltk\chunk\regexp.py in _tag(self, tok)
107 return tok.label()
108 else:
--> 109 raise ValueError('chunk structures must contain tagged ' 'tokens or trees')
110
111 def _verify(self, s, verify_tags):
ValueError: chunk structures must contain tagged tokens or trees
То, что я хочу получить, выглядит примерно так для каждого предложения:
[{comida:'sandwich', Cantidad: 1},
{comida:'burger', Cantidad: 2}]
Заранее спасибо