MemoirAI / analyzer.py
gaur3009's picture
Update analyzer.py
7ab5858 verified
# analyzer.py (Meeting Analysis)
import re
from datetime import datetime, timedelta
class MeetingAnalyzer:
def __init__(self):
self.transcript_chunks = []
self.action_items = []
self.decisions = []
def process_chunk(self, text_chunk):
self.transcript_chunks.append(text_chunk)
# Simple action item detection
if "action item" in text_chunk.lower() or "todo" in text_chunk.lower():
self.action_items.append({
"task": text_chunk,
"owner": "Unassigned",
"deadline": "ASAP"
})
def generate_summary(self):
full_text = " ".join(self.transcript_chunks)
# If text is too short, skip summarization
if len(full_text.split()) < 50:
return "Meeting in progress... summary will appear here"
# Simple summary - just the first few sentences
sentences = full_text.split('. ')
return ". ".join(sentences[:3]) + "."
def extract_action_items(self):
# Extract action items from transcript
action_items = []
# Look for assignment patterns
patterns = [
r"(\bassign\b.*? to \b(.*?)\b)",
r"(\baction item\b: (.*?))",
r"(\btodo\b: (.*?))",
r"(\bplease\b (.*?))"
]
for pattern in patterns:
for match in re.finditer(pattern, " ".join(self.transcript_chunks), re.IGNORECASE):
task = match.group(1).strip()
action_items.append({
"task": task,
"owner": "Unassigned",
"deadline": "ASAP"
})
return action_items
def detect_urgent_action_items(self):
urgent_items = []
for item in self.action_items:
if "urgent" in item['task'].lower() or "asap" in item['task'].lower():
urgent_items.append(item)
return urgent_items
def extract_decisions(self):
decisions = []
# Look for decision patterns
patterns = [
r"\bdecided to\b (.*?)[\.\n]",
r"\bagreed that\b (.*?)[\.\n]",
r"\bconsensus is\b (.*?)[\.\n]"
]
for pattern in patterns:
for match in re.finditer(pattern, " ".join(self.transcript_chunks), re.IGNORECASE):
decisions.append(match.group(1).strip())
return decisions