File: //opt/textanalyse/tools/argument_mining_tool.py
# tools/argument_mining_tool.py
try:
import spacy
except Exception as e:
print(f"Warning: spaCy import disabled in argument_mining_tool: {e}")
spacy = None
from dataclasses import dataclass
from typing import List, Union
# Lade spaCy-Modell für Deutsch (Stubbed bei Fehlern)
if spacy:
try:
nlp = spacy.load("de_core_news_sm")
except Exception as e:
print(f"Warning: could not load spaCy model in argument_mining_tool: {e}")
nlp = None
else:
nlp = None
@dataclass
class Claim:
text: str
@dataclass
class Evidence:
text: str
def extract_arguments(text: str) -> List[Union[Claim, Evidence]]:
# Stub wenn spaCy nicht verfügbar
if nlp is None:
return []
"""
Identifiziert Behauptungen (Claims) und Belege (Evidence) im deutschen Text.
Gibt eine Liste von Claim- und Evidence-Objekten in ihrer Reihenfolge zurück.
"""
doc = nlp(text)
results: List[Union[Claim, Evidence]] = []
for sent in doc.sents:
s_text = sent.text.strip()
# Heuristische Klassifikation anhand evidentieller Marker
if any(marker in s_text.lower() for marker in ["laut", "studie", "evidenz", "belegt", "nachdem"]):
results.append(Evidence(text=s_text))
else:
results.append(Claim(text=s_text))
return results