Spaces:
Running
Running
File size: 1,601 Bytes
210facd c68f9df 210facd d7485e8 39799b6 d7485e8 8dcb3a7 59d4664 8dcb3a7 d7485e8 210facd d7485e8 210facd c8f75e7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
from rake_nltk import Rake
import nltk
import re
# Download NLTK data
nltk.download('punkt')
nltk.download('stopwords')
# Define a list of obligation words
obligation_words = [
# English words
"must", "will", "use", "may", "provides", 'is obliged to',
'has to', 'needs to', 'is required to', "shall",
"should", "ought to", "required", "obligated", "duty",
"agrees to", "has a duty to", "is expected to", "commits to",
# German words
"muss", "wird", "nutzen", "darf", "stellt bereit",
"ist verpflichtet", "ist erforderlich", "soll",
"sollte", "erforderlich", "verpflichtet", "Pflicht",
"stimmt zu", "hat die Pflicht", "wird erwartet", "verpflichtet sich"
]
def extract_sentences_with_obligations(text):
# Initialize Rake with stopwords set to None (to keep all words)
rake = Rake()
# Split the text into sentences
sentences = re.split(r'(?<=[.!?])\s+', text)
# Initialize a list to store sentences with obligation words
obligation_sentences = []
# Iterate through the sentences
for sentence in sentences:
# Extract keyphrases from the sentence
rake.extract_keywords_from_text(sentence)
# Get the ranked keyphrases
ranked_keyphrases = rake.get_ranked_phrases()
# Check if any of the ranked keyphrases contain obligation words
if any(any(word in kp.lower() for word in obligation_words) for kp in ranked_keyphrases):
obligation_sentences.append(sentence)
# Join the sentences into a single string
return ' '.join(obligation_sentences) |