CoolFace
Apppublic

charon-x/Language-Identification

sourceHugging Faceupdated 10mo agoView on Hugging Face
0likes
App README

Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference

🌐 语种识别模型训练项目说明

本项目旨在利用机器学习方法,基于多语言数据集(lang_data.csv)训练一个能够准确识别文本语种(如 zh, en, ar, ja 等)的小型模型。

我们使用了 scikit-learn 库,并迭代了三种不同的特征工程和模型组合方案(V1、V2、V3),以寻求在准确性、特别是对相似语种(如中文和日文)的区分度上的最佳平衡。


🛠️ 三种训练方案(V1 - V3)对比与介绍

本项目的所有优化均围绕核心挑战展开:如何在高维稀疏的文本特征上,提高模型对不同语种的区分能力。

方案版本核心模型特征工程关键优化点适用场景
V1多项式朴素贝叶斯 (MultinomialNB)Character N-gram (2, 3) + TF-IDF基础线性分类器,速度极快。语种差异大、数据集较小、需要极高训练速度的场景。
V2逻辑回归 (Logistic Regression)Character N-gram (2, 5) + TF-IDF扩大 N-gram 范围,增加特征权重学习能力,提高相似语种(如 CJK)的区分度。V1 效果不佳时,需要更强线性模型的场景。
V3支持向量机 (LinearSVC) + PipelineCharacter N-gram (2, 5) + TF-IDF + Truncated SVD (降维)将高维特征降到稠密空间,使用性能更强的 SVC。这是高维稀疏特征分类的经典优化需要最高准确率、对相似语种有严格要求的生产环境。

方案详情与实施步骤

1\. V1 基础方案 (MultinomialNB)

  • 模型选择: MultinomialNB
  • 特征提取: TfidfVectorizer(analyzer='char', ngram_range=(2, 3), max_features=50000)
  • 介绍: V1 方案是文本分类的起点。朴素贝叶斯基于概率模型,训练速度快,在特征独立性较强时效果优秀。但是,它对高度重叠的特征(如中文和日文共用的汉字字符)缺乏区分能力,容易导致混淆。

2\. V2 优化方案 (Logistic Regression)

  • 模型选择: LogisticRegression
  • 特征提取: TfidfVectorizer(analyzer='char', ngram_range=(2, 5), max_features=100000)
  • 关键改进:
  • 扩大 N-gram (2, 5): 强制模型学习更长、更独特的字符序列(例如,4 字符和 5 字符的组合),这是区分 CJK 语言的关键。
  • 更换模型: Logistic Regression 相比朴素贝叶斯,能更好地学习特征之间的权重和关联性,是更强大的线性分类器。

3\. V3 进阶方案 (LinearSVC + SVD Pipeline)

  • 模型选择: Pipeline 封装 TruncatedSVDLinearSVC
  • 特征提取: TfidfVectorizer(2, 5) -\> TruncatedSVD(n_components=5000)
  • 关键改进:
  • 降维 (SVD): 将高维稀疏的 TF-IDF 矩阵(100k 维)投影到低维稠密的特征空间(例如 5000 维)。这可以去除噪声,并提取数据中的主要变化趋势。
  • LinearSVC: 支持向量机在处理降维后的特征时,能找到最佳的分类超平面,在文本分类任务的基准测试中,往往比逻辑回归和朴素贝叶斯表现更优。

📂 项目结构

所有方案的文件均放在对应的版本文件夹中(例如,您本次修改将所有文件放在了 V2V3 文件夹中)。

.
├── lang_data.csv                 # 核心数据集文件 (labels, text)
├── train.py                      # 训练脚本 (根据版本选择不同的模型和特征)
├── test.py                       # 预测脚本 (加载模型并进行交互式测试)
├── language_detector_*.pkl       # 训练生成的模型文件
└── requirements.txt              # 项目依赖

运行环境

本项目基于 Python,需要以下库:

bash
pip install pandas scikit-learn joblib

使用指南

  1. 1.选择版本: 进入你想要测试的优化版本文件夹(例如 V3)。
  2. 2.训练模型:
bash
    python train.py
  1. 1.预测测试:
bash
    python test.py
  • test.py 脚本会加载模型并启动交互式模式,同时提供当前支持的语种列表。
  • 建议使用较长的完整句子进行测试,以获得更准确的结果和更高的置信度。