Я пытаюсь извлечь предложения, используя слова из пользовательского ввода.
У меня есть index.html
с формой и results.html
, отображающим список предложений.
Итак, вот что я пробовал:
/*all the imports (flask, re, nltk, etc.)*/
letexte = "Welcome In The Details
about
Well... pretty simple. Do you want to know the amount of paragraphs, sentences or words in a text? Do
you want to know how many times a word or a sentences appear in your text? Or maybe the 10, 30 or 50
words that appear the most ? It's all In The Details
just enter:
the text you want to analyze.
the word you want to have the number of appearition.
and a title for researches."
input_two = "text"
lesphrases = re.findall(r"([^.]*?%s.*?\.)(?!\d)" % input_two, letexte)
print(lesphrases)
Использование re.findall
возвращает пустой список []
(не знаю почему), а nltk.sent_tokenize
работает, но в некоторых случаях \n
включается в список предложений, и я хочу этого избежать.
В моем случае я чувствую, что re.findall
- правильное решение, но есть еще проблема с "имя доктора", так что... я не знаю.
Спасибо за любую помощь.
Без использования re вы могли бы сделать что-то вроде этого: [i for i in letexte.split('.') if input_two in i]
.
Если вы хотите избежать "\n", [print(i) for i in letexte.split('.') if input_two in i]
отображать "\n" как "новые строки".
В противном случае это может вам помочь:[i.replace('\n', '') for i in letexte.split('.') if input_two in i]
.
Если вы хотите иметь несколько разделителей, проще всего использовать регулярное выражение. Например, если вы хотите разделить на ?
или !
или .
, сделайте [i for i in re.split('\? |\! |\. ', letexte) if input_two in i]
. (символ \ указывает регулярному выражению воспринимать этот символ буквально. В противном случае они рассматриваются интерпретатором регулярных выражений как специальные символы)
можно ли разделить с помощью "?" и "!" слишком ?