Я пытаюсь идентифицировать все экземпляры конкретного синтаксического шаблона, найденного в тексте: RB + NN | NNS | NP | PP. То есть, я ищу наречия, за которыми сразу следуют существительные. Я пометил свой текст, используя TreeTagger. Помеченный текст хранится в списке под названием «теги», который выглядит следующим образом:Является ли 'поиск' вызывая 'String index out the range'? (Python)
how WRB
hard JJ
it PP
was VBD
Это соответствующая часть моего кода:
adverb = re.compile(r'RB$')
noun = re.compile(r'NN')
for n in range(len(tags)):
w = tags[n]
if adverb.search(w) != None and noun.search(w[n+1]) != None:
print(' '.join(tags[n-2 : n+3]))
Моя проблема заключается в том, что пятая линия производит следующие ошибка:
if adverb.search(w) != None and noun.search(w[n+1]) != None:
IndexError: string index out of range
Если четвертая строка кода это ...
if adverb.search(w) != None:
... тогда возвращается список наречий.
Я действительно потерял 1) почему я получаю эту ошибку и 2) как я могу это исправить. Любое руководство, которое вы, ребята, можете предложить, было бы оценено по достоинству.
Несомненно, 'w [n + 1]' является наиболее вероятным источником вашей индексной ошибки. Какая у вас гарантия, что 'n + 1' меньше длины вашей строки' w'? – khelwood
Я думал, что просил Python посмотреть на слово после наречия и проверить, является ли это существительным? Разве это не то, что я делаю? – Gabriel
'w [n + 1]' не слово за чем-то. Если 'w' - это слово, то' w [n + 1] 'является буквой в этом слове. – khelwood