from termcolor import colored
import re

from nltk.text import Text
from nltk.corpus import PlaintextCorpusReader
from nltk.probability import FreqDist

# Funktion, um die Treffer im Kontext zu highlighten
def highlight_matches(pattern, text):
    return re.sub(pattern, lambda m: '**' + m.group(0) + '**', text)
    
    
# Angenommen, Ihre Textdateien befinden sich im Verzeichnis 'mein_corpus'
#corpus_root = 'F:\\Varlaam_Iasaf\\Latein-Text-Process\\txt_norm\\'
#corpus_root = 'F:\\Varlaam_Iasaf\\Ruthenisch-Text-Proccess\\txt_norm'
corpus_root = 'F:\\Schulung_Python\\examples\\txt'
 
wordlists = PlaintextCorpusReader(corpus_root, '.*')

# Erstellung eines Text-Objekts für Concordance
text = Text(wordlists.words())

# Variable zum Sammeln der Ergebnisse
search_results = []

# Verwendung von Concordance
#text.concordance('deus')

# Regulärer Ausdruck, um spezifische Wörter zu identifizieren
regex = re.compile(r'слав')

# Durchsuchen des Corpus
"""
for word in set(wordlists.words()): # Verwendung von set() für Einzigartigkeit
    if pattern.match(word):
        print(f"Kontext für das Wort '{word}':")
        text.concordance(word, 120, lines=5)  # Anpassen der Zeilenanzahl nach Bedarf
"""        

# Durchsuchen des Textes und Sammeln der Ergebnisse
for i, word in enumerate(text):
    if regex.search(word):
        # Annahme: Sie wollen 5 Wörter vor und nach dem gesuchten Wort anzeigen
        start = max(0, i - 5)
        end = min(len(text), i + 6)
        
        # Erstellen der Kontextzeichenkette
        context = text.tokens[start:end]
        context_string = ' '.join(context)

# Highlight der Treffer
        highlighted_context = highlight_matches(regex, context_string)
        
        print(highlighted_context)
        
        # Hinzufügen des Kontexts zu den Ergebnissen
        search_results.append(highlighted_context)
        
# Dateiname der Ausgabedatei
output_file = "output.txt"

# Schreiben der Ergebnisse in eine Datei
with open(output_file, "w", encoding='utf-8') as file:
    for line in search_results:
        print(line, file=file)
