import re
import difflib

def extract_myanmar_chars(text):
    # Keep everything EXCEPT latin, vietnamese, digits, whitespace, common punctuation
    # So we keep Myanmar letters, Myanmar punctuation (like ။, ၊)
    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)

    matcher = difflib.SequenceMatcher(None, std_myanmar, test_myanmar)
    ratio = matcher.ratio() * 100
    
    print(f"Standard Myanmar length (with punctuation): {len(std_myanmar)}")
    print(f"Extracted Myanmar length (with punctuation): {len(test_myanmar)}")
    print(f"Accuracy: {ratio:.2f}%")

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