Используя Python и NLTK, я написал регулярное выражение для поиска слов, начинающихся с заглавной буквы в тексте, но не в начале предложения.
Первоначально я использовал его следующим образом:
[w for w in text if re.findall(r'(?<!\.\s)\b[A-Z][a-z]\b',w)]
переменный текст создается с использованием набора древовидной структуры следующим образом:
>>> 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,}>")
Проблема, с которой я столкнулся, заключается в том, что я не могу получить первый бит регулярного выражения в формате <..>, необходимый для второй функции, и, если я это сделаю, будет ли он вообще работать или я неправильно понял подходит?
Спасибо.