import re
import Levenshtein

def extract_myanmar_chars(text):
    text = re.sub(r'[A-Za-z0-9\s\n\r\t\.,\-()\[\]{}<>/"\':;!?_=+\*&\^%\$#@~`\\|]', '', text)
    text = re.sub(r'[àáảãạâầấẩẫậăằắẳẵặèéẻẽẹêềếểễệìíỉĩịòóỏõọôồốổỗộơờớởỡợùúủũụưừứửữựỳýỷỹỵđÀÁẢÃẠÂẦẤẨẪẬĂẰẮẲẴẶÈÉẺẼẸÊỀẾỂỄỆÌÍỈĨỊÒÓỎÕỌÔỒỐỔỖỘƠỜỚỞỠỢÙÚỦŨỤƯỪỨỬỮỰỲÝỶỸỴĐ]', '', text)
    return text

def calculate_accuracy(std_path, test_path):
    with open(std_path, 'r', encoding='utf-8') as f:
        std_text = f.read()
    with open(test_path, 'r', encoding='utf-8') as f:
        test_text = f.read()

    std_myanmar = extract_myanmar_chars(std_text)
    test_myanmar = extract_myanmar_chars(test_text)

    distance = Levenshtein.distance(std_myanmar, test_myanmar)
    max_len = max(len(std_myanmar), len(test_myanmar))
    accuracy = ((max_len - distance) / max_len) * 100
    
    print(f"Standard length: {len(std_myanmar)}")
    print(f"Extracted length: {len(test_myanmar)}")
    print(f"Levenshtein Distance: {distance}")
    print(f"Accuracy: {accuracy:.2f}%")

calculate_accuracy('./An Duc Tam Bao/tam_bao_021_050_standard.txt', './An Duc Tam Bao/tam_bao_021_050.md')
