Code Monkey home page Code Monkey logo

classification's Introduction

Phân loại văn bản tiếng Việt

Dự án nghiên cứu về bài toán phân loại văn bản tiếng Việt, được phát triển bởi nhóm nghiên cứu xử lý ngôn ngữ tự nhiên tiếng Việt - underthesea. Chứa mã nguồn các thử nghiệm cho việc xử lý dữ liệu, huấn luyện và đánh giá mô hình, cũng như cho phép dễ dàng tùy chỉnh mô hình đối với những tập dữ liệu mới.

Nhóm tác giả

Tham gia đóng góp

Mọi ý kiến đóng góp hoặc yêu cầu trợ giúp xin gửi vào mục Issues của dự án. Các thảo luận được khuyến khích sử dụng tiếng Việt để dễ dàng trong quá trình trao đổi.

Nếu bạn có kinh nghiệm trong bài toán này, muốn tham gia vào nhóm phát triển với vai trò là Developer, xin hãy đọc kỹ Hướng dẫn tham gia đóng góp.

Mục lục

Yêu cầu hệ thống

  • Hệ điều hành: Linux (Ubuntu, CentOS), Mac
  • Python 3.6+
  • conda 4+

Thiết lập môi trường

Tải project bằng cách sử dụng lệnh git clone

$ git clone https://github.com/undertheseanlp/classification.git

Tạo môi trường mới và cài đặt các gói liên quan

$ cd classification
$ conda create -n classification python=3.6
$ pip install -r requirements.txt

Hướng dẫn sử dụng

Trước khi chạy các thử nghiệm, hãy chắc chắn bạn đã activate môi trường classification, mọi câu lệnh đều được chạy trong thư mục gốc của dự án.

$ cd classification
$ source activate classification

Sử dụng mô hình có sẵn

Dự đoán nhãn của một câu:

$ python classification.py "Trong phần lớn thời gian sáng nay, thầy trò HLV Park Hang Seo có cuộc họp nội bộ tại khách sạn. Tại cuộc họp này, nội dung quan trọng nhất chính là xem băng ghi hình một số trận đấu gần nhất của đội chủ nhà, giúp đội tuyển Việt Nam đưa ra những phương án đối phó trong trận ra quân tại AFF Cup 2018 sắp tới."
The thao

Dự đoán nhãn từ nội dung trong file, sử dụng tùy chọn --fin

$ python classification.py \
    --fin tmp/input.txt
Kinh doanh

Huấn luyện mô hình

Tiền xử lý dữ liệu

Lấy về bộ dữ liệu VNTC

$ sh util/get_vntc.sh

Tập dữ liệu được quy chuẩn từng nhãn theo từng danh mục chứa các file văn bản như tập dữ liệu trong thư mục data/raw

Chuyển đổi tập dữ liệu thành file excel

$ python util/preprocess_vntc.py

So sánh các thử nghiệm

Các thử nghiệm kết hợp LinearSVC và CountVectorizer

$  python optimize_hyperparameters.py --mode optimize 
            --train data/corpus/train.xlsx 
            --test data/corpus/test.xlsx 
            --trans tfidf 
$ python optimize_hyperparameters.py --mode optimize 
            --train data/corpus/train.xlsx
            --test data/corpus/test.xlsx 
            --trans count 

Huấn luyện và lưu mô hình

$ python train.py --mode train-test 
            --train data/corpus/train.xlsx 
            --test data/corpus/test.xlsx 
            --s models

Kết quả thử nghiệm

Xem thêm về mô tả dữ liệu

Kết quả các thử nghiệm kết hợp mô hình SVM và các đặc trưng Tfidf, BoW

Mô hình F1 %
TfidfVectorizer(ngram_range=(1, 2), max_df=0.5) 92.8
CountVectorizer(ngram_range=(1, 3), max_df=0.7) 89.3
TfidfVectorizer(max_df=0.8) 89.0
CountVectorizer(ngram_range=(1, 3) 88.9
TfidfVectorizer(ngram_range=(1, 3)) 86.8
CountVectorizer(max_df=0.7) 85.5

Sử dụng mô hình đã huấn luyện

Dự đoán nhãn của một câu:

$ python classification.py "Trong suốt kỳ chuyển nhượng mùa hè qua, tiền vệ Eden Hazard của Chelsea đã luôn được Real Madrid nhắm đến để thay thế Cristiano Ronaldo nhưng bất thành. Mới đây, Hazard đã cho biết anh đang chờ đợi thêm những tín hiệu chiêu mộ từ Real Madrid trước khi đưa ra quyết định về tương lai của mình ở Chelsea."
Bong da

Dự đoán nhãn từ nội dung trong file, sử dụng tùy chọn --fin

$ python classification.py \
    --fin tmp/input.txt
Giao duc

Trích dẫn

Nếu bạn thấy mã nguồn này hữu ích, xin hãy trích dẫn đường dẫn của dự án trong các nghiên cứu của mình

@online{undertheseanlp/classification,
author ={Vu Anh, Bui Nhat Anh},
year = {2018},
title ={Phân loại văn bản tiếng Việt},
url ={https://github.com/undertheseanlp/classification}
}

Lời cảm ơn

Xin chân thành cảm ơn các nhóm phát triển sklearn, fasttext đã tạo ra những công cụ hữu ích để nhóm sử dụng trong các thử nghiệm của mình.

Bản quyền

Mã nguồn của dự án được phân phối theo giấy phép GPL-3.0.

Dự án sử dụng tập dữ liệu VNTC trong các thử nghiệm. Xin vui lòng kiểm tra lại thông tin trên website hoặc báo cáo khoa học tương ứng để biết thông tin về bản quyền và trích dẫn khi sử dụng tập dữ liệu này.

classification's People

Contributors

rain1024 avatar jacknhat avatar khanhmd58 avatar

Stargazers

Nguyễn Hoài Nam avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.