Tiền xử lý văn bản

Một phần của tài liệu Ứng dụng máy vector hỗ trợ phân loại công văn theo lĩnh vực (Trang 36 - 43)

CHƯƠNG 2. ỨNG DỤNG MÁY VECTOR HỖ TRỢ PHÂN LOẠI CÔNG VĂN

2.3. Sử dụng máy vector hỗ trợ để phân loại

2.3.1. Tiền xử lý văn bản

Quá trình tiền xử lý văn bản sẽ trải qua những bước cụ thể như sau:

2.3.1.1. Chuyển định dạng từ Word sang dạng text (.txt)

Việc chuyển định dạng nhƣ vậy sẽ loại bỏ đƣợc những định dạng trong word mà chúng ta không xử lý đƣợc, chuyển sang một dạng thuần text để việc xử lý văn bản được dễ dàng hơn. Mục đích của bước này là loại bỏ noise trong dữ liệu, đa phần là các ký tự định dạng trong word.

2.3.1.2. Làm sạch dữ liệu text a) Lo i bỏ các ký tự đặc biệt

Loại các ký tự không có ý nghĩa nhƣ “%@$.,=+-!;/()*"&^:#|\n\t\'” và các chử số, khoảng trắng

b) Xử lý lỗi định d ng văn n

Cùng với đó là các văn bản không phải định dạng Unicode (UTF-8) vì khi đƣa vào phần mềm sẽ dẫn tới bị lỗi như bên dưới:

Các hoạt động của Tuần lễ phải đảm bảo thiết thực, hiệu quả, tập trung h-ớng về cơ sở , doanh nghiệp và ng-ời lao động cùng chung tay thực hiện tốt công tác bảo

đảm an toàn lao động trong sản xuất, tránh hình thức, lãng phí. II. Chủ đề và hình thức tổ chức: 1. Chủ đề: Chủ đề phát động của Tuần lễ quốc gia lần thứ 16 là:

"Suy nghĩ và hành động vì mục tiêu không tai nạn lao động, bệnh nghề nghiệp, cháy nổ tại nơi làm việc

Phần lớn các văn bản của cơ quan nhà nước tại Quảng Bình có một số đơn vị không sử dụng Font chử Unicode (UTF-8) để soạn thảo, mà sử dụng định dạng Font chữ khác, nên khi đƣa vào phần mềm phải xác định đƣợc văn bản nào có lỗi và tiến hành thay thế các định dạng bị lỗi đó để cho văn bản có thể đọc được. Do đó ở bước 2.3.1.1 khi chuyển văn bản Word thành file text sẽ gặp các văn bản bị lỗi định dạng, không thể đọc được, dẫn đến việc phân loại sai. Chính vì thế ở bước này nếu gặp các văn bản có định dạng khi chuyển sang file text bị lỗi như trên, phải thực hiện các bước để thay thế các định dạng lỗi đó để trở thành file có ý nghĩa có thể đọc đƣợc. Bằng các bước như sau:

Bước 1: Kiểm tra văn bản có bị lỗi định dạng Font chữ không bằng cách xét tần số xuất hiện của cỏc ký tự nhƣ là ả, ì, ầ, ệ, đ, à, … cú nhiều trong văn bản, kết luận là văn bản đó bị lỗi Font chữ

Trong khuôn khổ luận văn, tôi đánh giá những văn bản có tỉ lệ ký tự lỗi so với toàn văn bản lớn hơn 10% là văn bản lỗi định dạng

Bước 2: Thay thế các ký tự lỗi đó thành các ký tự có ý nghĩa. Ta có bảng định dạng ký tự bị lỗi và các ký tự Unicode thay thế ở phụ lục

Bước 3: Chuyển qua bước tiếp theo để tiến hành nhận dạng văn bản.

2.3.1.3. Chuẩn hóa từ

Mục đích là đưa văn bản từ các dạng không đồng nhất về cùng một dạng. Dưới góc độ tối ưu bộ nhớ lưu trữ và tính chính xác cũng rất quan trọng. Như thay thế các từ viết tắt thông dụng ví dụ nhƣ:

QB: Quảng Bình CV: Công văn V/v: Về việc

Một việc quan trong nữa là định dạng tất cả các từ về dạng chử thường, vì khi đưa vào chương trình sẽ có phân biệt hoa thường gây nhập nhằng trong việc phân loại, ví dụ:

“Quảng Bình”, “Quảng bình”, “quảng Bình”, “QUẢNG BÌNH”, .. là các từ khác nhau mặc dù mang cùng một ý nghĩa.

2.3.1.4. Tách từ

Trong tiếng Việt, dấu cách (space) không đƣợc sử dụng nhƣ 1 kí hiệu phân tách từ, nó chỉ có ý nghĩa phân tách các âm tiết với nhau. Vì thế, để xử lý tiếng Việt, công đoạn tách từ (word segmentation) là 1 trong những bài toán cơ bản và quan trọng bậc nhất.

Ví dụ : từ “đất nước” được tạo ra từ 2 âm tiết “đất” và “nước”, cả 2 âm tiết này đều có nghĩa riêng khi đứng độc lập, nhƣng khi ghép lại sẽ mang một nghĩa khác. Vì đặc điểm này, bài toán tách từ trở thành 1 bài toán tiền đề cho các ứng dụng xử lý ngôn ngữ tự nhiên khác nhƣ phân loại văn bản, tóm tắt văn bản, máy dịch tự động, …

Nhƣ ví dụ câu sau: “Tốc độ truyền thông tin ngày càng cao”

Sau khi tách từ sẽ thành: Tốc_độ truyền_thông_tin ngày_càng cao”

Tách từ chính xác hay không là công việc rất quan trọng, nếu không chính xác rất có thể dẫn đến việc ý nghĩa của câu sai, ảnh hưởng đến tính chính xác của chương trình.

Về phương pháp, hiện nay cũng có khá nhiều mã nguồn nghiên cứu được công bố rổng rãi, ở trong khuôn khổ luận văn này tôi sử dụng thƣ viện rất nổi tiếng của Việt Nam đó là: vnTokenizer [20]

2.3.1.5. Loại bỏ các từ StopWords

StopWords là những từ xuất hiện nhiều trong ngôn ngữ tự nhiên, tuy nhiên lại không mang nhiều ý nghĩa. Ở tiếng việt StopWords là những từ nhƣ: để, này, kia...

Tiếng anh là những từ nhƣ: is, that, this...

Đối với ứng dụng phân loại văn bản, công văn trong cơ quan nhà nước thì số lƣợng StopWords ngoài các từ thông dụng trong Tiếng Việt thì sẽ có nhiều từ đặc thù của văn bản, công văn nhƣ là: „ủy ban nhân dân‟, „đoàn thể‟, „chủ tịch‟, „phó chủ tịch‟,

„cộng hòa xã hội chủ nghĩa việt nam‟, … các địa danh của tỉnh

Có rất nhiều các để loại bỏ StopWords nhƣng có hai cách phổ biến đó là:

 Dùng từ điển

 Dựa theo tần suất xuất hiện của từ

Việc dùng từ điển là đơn giản nhất, ta có thể filter văn bản, loại bỏ các từ xuất hiện trong từ điển StopWords

Ví dụ một đoạn từ điển StopWords thông dụng của Tiếng việt:

B ng 2.1: Ví d danh sách các từ StopWord trong Tiếng Việt biết bao nhiêu

biết chắc

biết chừng nào biết mình

biết mấy biết thế biết trước biết việc

biết đâu

biết đâu chừng biết đâu đấy biết được buổi

buổi làm sẽ

Ví dụ câu: “biết thế tôi sẽ không đi làm”

Sau khi loại bỏ Stopwords: “tôi không đi làm”

Dựa vào tần suất xuất hiện của từ

Với cách này, chúng ta tiến hành đếm số lần xuất hiện của từng từ trong data sau đó sẽ loại bỏ những từ xuất hiện nhiều lần (cũng có thể là ít lần). Khoa học đã chứng minh những từ xuất hiện nhiều nhất thường là những từ không mang nhiều ý nghĩa.

Như ví dụ dưới đây:

B ng 2.2: Top 77 từ Tiếng Việt xu t hiện nhiều nh t trong văn b n

bị của không nơi thì

bởi cùng nữa trên

c cũng l i ph i trư c

các đã lên qua từ

cái đang lúc ra từng

cần đây rằng

càng để mỗi rằng vẫn

chỉ đến_nỗi một_cách r t vào

chiếc đều này r t vậy

cho điều nên rồi

chứ do nếu sau việc

chưa đó ngay sẽ v i

chuyện được nhiều so vừa

ư i như sự

có_thể nhưng t i

cứ khi những theo

Trên là top 77 từ xuất hiện nhiều nhất đƣợc tạo trên tập dữ liệu 2 triệu tài liệu tiếng việt, xây dựng bằng cách tính IDF và chọn ra có từ có IDF nhỏ. Dễ dàng nhận thấy chúng không mang nhiều ý nghĩa. Chính vì thế chúng ta sẽ loại bỏ những từ nhƣ thế này.

2.3.1.6. Vector hóa từ

Để vector hóa từ ta sử dụng Bag of Words, là một thuật toán hỗ trợ xử lý ngôn ngữ tự nhiên và mục đích của BoW là phân loại text hay văn bản. Ý tưởng của BoW là phân tích và phân nhóm dựa theo "Bag of Words". Với test data mới, tiến hành tìm ra số lần từng từ của test data xuất hiện trong "bag". Tuy nhiên BoW vẫn tồn tại khuyết điểm, nên TF-IDF là phương pháp khắc phục.

Lý thuyết về BoW và TF-IDF đã được đề cập ở Chương I. Sau đây xét ví dụ về hoạt động của vector hóa từ dựa vào BoW và TF-IDF.

Ta có 2 câu sau:

 „thời gian qua tình hình trật tự an toàn giao thông trên địa bàn tỉnh đang diễn biến phức tạp‟

 „để tăng cường các biện pháp bảo đảm trật tự an toàn giao thông trên địa bàn thời gian qua‟

Từ 2 câu trên, tiến hành tạo từ điển chứa các từ xuất hiện trong từng câu.

B ng 2.3: Từ điển các từ xu t hiện trong câu {'an' => 0

'biến' => 1 'biện' => 2 'bàn' => 3 'bảo' => 4 'các' => 5 'cường' => 6 'diễn' => 7 'gian' => 8 'giao' => 9 'hình' => 10 'pháp' => 11 'phức' => 12 'qua' => 13 'thông' => 14 'thời' => 15 'toàn' => 16

'trên' => 17 'trật' => 18 'tình' => 19 'tăng' => 20 'tạp' => 21 'tỉnh' => 22 'tự' => 23 'đang' => 24 'đảm' => 25 'để' => 26 'địa' => 27}

Dựa vào từ điển vừa tạo, tiến hành tạo vector lưu trữ số lần xuất hiện của từ trong từ điển ứng với mỗi câu.

Và do từ điển đang có 28 từ nên mỗi vector sẽ có 28 phần tử nhƣ sau:

[1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1]

[1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1]

Tính TF theo công thức ở chương 1 ta sẽ có TF lần lượt cho các câu là:

B ng 2.4: B ng TF

TF1 TF2

{'an': 0.05, 'biến': 0.05, 'biện': 0.0, 'bàn': 0.05, 'bảo': 0.0, 'các': 0.0, 'cường': 0.0, 'diễn': 0.05, 'gian': 0.05, 'giao': 0.05, 'hình': 0.05, 'pháp': 0.0, 'phức': 0.05, 'qua': 0.05, 'thông': 0.05, 'thời': 0.05, 'toàn': 0.05, 'trên': 0.05, 'trật': 0.05, 'tình': 0.05, 'tăng': 0.0, 'tạp': 0.05,

{'an': 0.05, 'biến': 0.0, 'biện': 0.05, 'bàn': 0.05, 'bảo': 0.05, 'các': 0.05, 'cường': 0.05, 'diễn': 0.0, 'gian': 0.05, 'giao': 0.05, 'hình': 0.0, 'pháp': 0.05, 'phức': 0.0, 'qua': 0.05, 'thông': 0.05, 'thời': 0.05, 'toàn': 0.05, 'trên': 0.05, 'trật': 0.05, 'tình': 0.0, 'tăng': 0.05, 'tạp': 0.0,

'tỉnh': 0.05, 'tự': 0.05, 'đang': 0.05, 'đảm': 0.0, 'để': 0.0, 'địa': 0.05}

'tỉnh': 0.0, 'tự': 0.05, 'đang': 0.0, 'đảm': 0.05, 'để': 0.05, 'địa': 0.05}

Tính IDF

B ng 2.5: B ng IDF {'an': 0.0,

'biến': 0.6931471805599453, 'biện': 0.6931471805599453, 'bàn': 0.0,

'bảo': 0.6931471805599453, 'các': 0.6931471805599453, 'cường': 0.6931471805599453, 'diễn': 0.6931471805599453, 'gian': 0.0,

'giao': 0.0,

'hình': 0.6931471805599453, 'pháp': 0.6931471805599453, 'phức': 0.6931471805599453, 'qua': 0.0,

'thông': 0.0, 'thời': 0.0, 'toàn': 0.0, 'trên': 0.0, 'trật': 0.0,

'tình': 0.6931471805599453, 'tăng': 0.6931471805599453, 'tạp': 0.6931471805599453, 'tỉnh': 0.6931471805599453, 'tự': 0.0,

'đang': 0.6931471805599453, 'đảm': 0.6931471805599453, 'để': 0.6931471805599453, 'địa': 0.0}

Cuối cùng là tìm giá trị TF-IDF bằng cách nhân kết quả IF và IDF ở trên

B ng 2.6: B ng TF-IDF

Một phần của tài liệu Ứng dụng máy vector hỗ trợ phân loại công văn theo lĩnh vực (Trang 36 - 43)

Tải bản đầy đủ (PDF)

(80 trang)