#!/usr/bin/env python3
"""
So sánh độ chính xác của bản trích xuất tiếng Myanmar
Bỏ qua định dạng, chỉ so sánh nội dung văn bản Myanmar
"""

import re

def extract_myanmar_text(content):
    """Trích xuất chỉ chữ Myanmar (Unicode range)"""
    # Ký tự Myanmar: U+1000 to U+104F
    myanmar_pattern = r'[\u1000-\u104F\s]+'
    matches = re.findall(myanmar_pattern, content)
    return ' '.join(matches).strip()

def normalize_text(text):
    """Chuẩn hóa văn bản để so sánh: loại bỏ khoảng trắng thừa, dấu câu không quan trọng"""
    text = text.strip()
    # Thay thế nhiều khoảng trắng thành 1
    text = re.sub(r'\s+', ' ', text)
    return text

def calculate_accuracy(text1, text2):
    """Tính tỷ lệ phần trăm khớp"""
    # Normalize cả 2 văn bản
    normalized1 = normalize_text(text1)
    normalized2 = normalize_text(text2)
    
    # Tokenize thành từ/chữ cái
    tokens1 = list(normalized1)
    tokens2 = list(normalized2)
    
    total_tokens = len(tokens2)  # Dùng standard làm gốc
    if total_tokens == 0:
        return 0.0
    
    matched = 0
    min_len = min(len(tokens1), len(tokens2))
    
    for i in range(min_len):
        if tokens1[i] == tokens2[i]:
            matched += 1
    
    accuracy = (matched / total_tokens) * 100
    return accuracy

# Đọc 2 file
with open('/opt/openclaw/.openclaw/workspace/An Duc Tam Bao/tam_bao_081_090_qwen_2_standard.txt', 'r', encoding='utf-8') as f:
    standard_content = f.read()

with open('/opt/openclaw/.openclaw/workspace/An Duc Tam Bao/tam_bao_081_090_qwen_2.md', 'r', encoding='utf-8') as f:
    extracted_content = f.read()

# Trích xuất văn bản Myanmar
standard_myanmar = extract_myanmar_text(standard_content)
extracted_myanmar = extract_myanmar_text(extracted_content)

print("=" * 60)
print("KẾT QUẢ SO SÁNH ĐỘ CHÍNH XÁC TRÍCH XUẤT TIẾNG MYANMAR")
print("=" * 60)
print(f"\nTổng ký tự Myanmar trong file chuẩn: {len(standard_myanmar)}")
print(f"Tổng ký tự Myanmar trong file trích xuất: {len(extracted_myanmar)}")

# Tính độ chính xác
accuracy = calculate_accuracy(standard_myanmar, extracted_myanmar)

print(f"\n📊 ĐỘ CHÍNH XÁC: {accuracy:.2f}%")
print("\n" + "=" * 60)

# Chi tiết các khác biệt (lấy mẫu)
print("\nPhân tích chi tiết (10 điểm khác biệt đầu tiên):")
print("-" * 60)

normalized_std = normalize_text(standard_myanmar)
normalized_ext = normalize_text(extracted_myanmar)

diff_count = 0
for i in range(min(len(normalized_std), len(normalized_ext))):
    if normalized_std[i] != normalized_ext[i]:
        diff_count += 1
        start_ctx = normalized_ext[max(0,i-10):i]
        end_ctx = normalized_ext[i:i+10]
        print(f"Vị trí {i}: Standard='{normalized_std[i]}' vs Extracted='{normalized_ext[i]}'")
        print(f"  Context: ...{start_ctx}【{normalized_ext[i]}】{end_ctx}...")
        if diff_count >= 10:
            break

total_diff = sum(1 for i in range(min(len(normalized_std), len(normalized_ext))) 
                 if normalized_std[i] != normalized_ext[i])
extra_chars = abs(len(normalized_std) - len(normalized_ext))
print(f"\n⚠️ Tổng số vị trí khác biệt: {total_diff}")
print(f"⚠️ Số lượng ký tự thừa/thiếu: {extra_chars}")
print("=" * 60)
