analyze_corpus.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import os
  2. def analyze_corpus(ch_path, en_path):
  3. """
  4. 分析双语语料库文件的详细信息
  5. Args:
  6. ch_path: 中文文件路径
  7. en_path: 英文文件路径
  8. """
  9. # 检查文件是否存在
  10. if not os.path.exists(ch_path):
  11. print(f"中文文件不存在: {ch_path}")
  12. return
  13. if not os.path.exists(en_path):
  14. print(f"英文文件不存在: {en_path}")
  15. return
  16. # 获取文件大小
  17. ch_size = os.path.getsize(ch_path)
  18. en_size = os.path.getsize(en_path)
  19. # 读取文件内容并统计行数
  20. with open(ch_path, 'r', encoding='utf-8') as f:
  21. ch_lines = f.readlines()
  22. with open(en_path, 'r', encoding='utf-8') as f:
  23. en_lines = f.readlines()
  24. # 计算字符数(不包括换行符)
  25. ch_chars = sum(len(line.strip()) for line in ch_lines)
  26. en_chars = sum(len(line.strip()) for line in en_lines)
  27. # 打印统计信息
  28. print("=" * 50)
  29. print("语料库统计信息")
  30. print("=" * 50)
  31. print(f"\n中文文件 ({ch_path}):")
  32. print(f" 文件大小: {ch_size / 1024 / 1024:.2f} MB")
  33. print(f" 总行数: {len(ch_lines):,}")
  34. print(f" 总字符数: {ch_chars:,}")
  35. print(f" 平均每行字符数: {ch_chars / len(ch_lines):.1f}")
  36. print(f"\n英文文件 ({en_path}):")
  37. print(f" 文件大小: {en_size / 1024 / 1024:.2f} MB")
  38. print(f" 总行数: {len(en_lines):,}")
  39. print(f" 总字符数: {en_chars:,}")
  40. print(f" 平均每行字符数: {en_chars / len(en_lines):.1f}")
  41. # 验证中英文行数是否匹配
  42. if len(ch_lines) == len(en_lines):
  43. print("\n✓ 中英文文件行数匹配")
  44. else:
  45. print("\n✗ 警告:中英文文件行数不匹配!")
  46. print("=" * 50)
  47. if __name__ == "__main__":
  48. ch_path = 'corpus.ch'
  49. en_path = 'corpus.en'
  50. analyze_corpus(ch_path, en_path)