Получение структур чанка должно содержать помеченные токены или деревья. ОШИБКА - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь создать словарь для того, чтобы получить количество и тип пищи из текста на испанском 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}]

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...