Используя Python и NLTK, я написал регулярное выражение для поиска слов, начинающихся с заглавной буквы в тексте, но не в начале предложения.
Первоначально я использовал его следующим образом:
[w for w in text if re.findall(r'(?<!\.\s)\b[A-Z][a-z]\b',w)]
переменный текст создается с использованием корпуса treebank следующим образом:
>>> def concat(lists):
biglist = [ ]
while len(lists)>0:
biglist = biglist+lists[0]
lists=lists[1:]
return biglist
>>> tbsents = concat(treebank.sents()[200:250])
>>> text = nltk.Text(tbsents)
Однако это, похоже, не работает, оно по-прежнему возвращает слова, которые находятся в начале предложений. Поэтому я подумал, что вместо этого попробую использовать функцию text.findall(). Я выполнил следующее, и он вернул все слова с заглавными буквами по мере необходимости.
>>> text.findall("<[A-Z][a-z]{3,}>")
У меня проблема в том, что я не знаю, как преобразовать первый бит регулярного выражения в формат ‹..>, необходимый для второй функции, и если я это сделаю, будет ли это вообще работать, или я использую совершенно неправильный подход?
Спасибо.