Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Báo cáo thực tập Đại học Xây dựng, Lecture notes of Law

Báo cáo thực tập Đại học Xây dựng.

Typology: Lecture notes

2020/2021

Uploaded on 09/21/2023

hung-pham-1901
hung-pham-1901 🇻🇳

1 document

1 / 19

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
TRƯỜNG ĐẠI HỌC XÂY DỰNG HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
----o0o----
BÁO CÁO THỰC TẬP
Đề tài:
Tìm hiểu và áp dụng Apache Tika
cho vấn đề phân loại ngôn ngữ
Giảng viên hướng dẫn: Phạm Hồng Phong
Hà Nội, 1 tháng 3 năm 2023
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Partial preview of the text

Download Báo cáo thực tập Đại học Xây dựng and more Lecture notes Law in PDF only on Docsity!

TRƯỜNG ĐẠI HỌC XÂY DỰNG HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

----o0o----

BÁO CÁO THỰC TẬP

Đề tài:

Tìm hiểu và áp dụng Apache Tika

cho vấn đề phân loại ngôn ngữ

Giảng viên hướng dẫn: Phạm Hồng Phong Hà Nội, 1 tháng 3 năm 202 3

Mục lục

Mục lục I. Giới thiệu. II. Đơn vị thực tập - Công ty Cổ phần Vật giá Việt Nam. III. Quy trình thực tập. IV. Dự án - Tổng quan về dự án. V. Khoa học máy Tính - Ứng dụng trong dự án.

  1. Đặt vấn đề.
  2. Giới thiệu về Apache Tika.
  3. Phân loại ngôn ngữ - Apache Tika. a. OpenNLP. b. Chi tiết - OpenNLP Language Detector. ● Maximum Entropy. ● Perceptron. ● Phương pháp chuẩn hóa của OpenNLP Language Detector. c. Phân loại ngôn ngữ. d. Áp dụng vào giải quyết vấn đề. VI. Kết luận.
  • Baokim.vn
  • Bên cạnh đó:
    • 123docz.net
    • 123dok.com
    • 123job.vn Phòng ban - Đơn vị thực tập hiện tại: Phòng Digital Content - Dự án 123Dok. III. Quy trình thực tập. Công ty đề ra quy trình thực tập và nghiên cứu rất rõ ràng đối với vị trí thực tập sinh và học việc. Cụ thể như sau:
  • Giai đoạn 1: Ôn tập tổng quát kiến thức cơ bản - ngôn ngữ lập trình.
  • Các kiến thức về biến hàm.
  • Kiến thức về vòng lặp, xử lý điều kiện rẽ nhánh.
  • Làm việc với mảng 1 chiều hoặc mảng đa chiều.
  • Hướng đối tượng.
  • Giai đoạn 2: Ôn luyện kiến thức bổ trợ
  • Luyện tập giải thuật: các giải thuật sắp xếp, hàng đợi, …
  • Tìm hiểu về Design Pattern và ứng dụng.
  • Giai đoạn 3: Ôn luyện kiến thức về Database
  • Giai đoạn 4: Làm quen với Framework - Laravel
  • Thực hiện một dự án sử dụng các kiến thức đã ôn tập và Laravel Framework.
  • Xây dựng dự án hoàn chỉnh, đầy đủ tính năng.
  • Giai đoạn 5: Bổ sung, tìm hiểu kiến thức về một số công nghệ được áp dụng trong các dự án, làm quen với dự án thực tế, làm việc cùng Leader. Xuyên suốt tất cả các giai đoạn, các bài tập đều cần thực hiện viết báo cáo và tạo Git đầy đủ. Có sự giám sát trực tiếp từ người hướng dẫn. Thực hiện báo cáo trước nhóm hàng tuần, review kiến thức, trình bày về công việc trong tuần vừa rồi.

Kèm theo đó, hàng tuần cũng có buổi họp training kiến thức chung cho toàn công ty, giúp mọi người trao đổi kiến thức, cập nhật các công nghệ mới, đồng thời giúp mọi người - đặc biệt là thực tập sinh trau dồi thêm kỹ năng thuyết trình, viết báo cáo. Đặc biệt trong giai đoạn cuối, có rất nhiều điều mà chỉ có ở môi trường doanh nghiệp, được trải nghiệm thực tế thì mới có thể tiếp thu và học hỏi được - những điều mà chúng ta khó có thể tìm thấy được trong môi trường giảng đường. Sau khi hoàn thành quy trình thực tập, cá nhân thực tập sinh sẽ được cân nhắc để trải nghiệm, tham gia vào dự án thực tế của công ty, trực tiếp xây dựng sản phẩm đến tay người dùng và vận dụng toàn bộ kiến thức đã được xây dựng trong giai đoạn nghiên cứu - học tập. IV. Dự án - Tổng quan về dự án. Bên cạnh các dự án được nêu ở mục II, với vị trí là một thực tập sinh tôi đã may mắn được tham gia vào xây dựng và phát triển một số dự ác khác. Tiêu biểu và là dự án tôi được tham gia nhiều nhất trong quá trình thực tập chính là: Dictbox.co - một dự án về từ điển với lượng dữ liệu, từ khóa cực kì lớn, hiện đã hỗ trợ nhiều loại từ điển, phục vụ nhiều ngôn ngữ như:

  • Việt Nam
  • Trung Quốc
  • Nhật Bản
  • Hàn Quốc
  • Tây Ban Nha Trang chủ:

Gợi ý các từ liên quan:

V. Khoa học máy Tính - Ứng dụng trong dự án.

1. Đặt vấn đề.

Đối với 1 dự án về từ điển, vấn đề cốt lõi đó chính là dữ liệu chuẩn xác. Dữ liệu phải được xử lý kỹ càng, chắt lọc và tạo độ tin cậy trước khi được hiển thị đến cho người dùng. với khối lượng dữ liệu lớn, yêu cầu độ chính xác cao bắt buộc dự án phải sử dụng những công nghệ tốt, hiệu quả và phù hợp với bài toán đặt ra. Và bài toán đặt ra ở đây là: đối với dữ liệu đầu vào, từ nhiều nguồn với các độ tin cậy khác nhau, làm sao để đảm bảo được tính chính xác về mặt ngôn ngữ. Có rất nhiều dữ liệu được phân loại sai ngôn ngữ gây ra không chính xác về ngữ nghĩa, cú pháp,... Vấn đề phân loại ngôn ngữ cho văn bản là một vấn đề rất khó giải quyết bằng các biện pháp thông thường như “regular expression”. Đặc biệt là với các ngôn ngữ sử dụng chung bảng chữ cái, có sự tương đồng trong cú pháp. Là một sinh viên Khoa học Máy tính, đối mặt với bài toán này hoàn toàn có thể đặt ra phương án giải quyết đó chính là sử dụng các mô hình phân loại ngôn ngữ - “Language identification”. Tuy nhiên, với một môi trường doanh nghiệp không chuyên sâu vào các mô hình học máy, việc tự phát triển một mô hình riêng là điều không hề đơn giản, gây tiêu tốn nhiều thời gian và tài nguyên. Do đó, các công cụ hỗ trợ có thể được cài đặt trực tiếp vào dự án sẽ là sự ưu tiên hàng đầu. Để giải được bài toán và đáp ứng được yêu cầu đặt ra, qua quá trình tìm hiểu và tham khảo Apache Tika là sự lựa chọn có thể coi là phù hợp nhất.

2. Giới thiệu về Apache Tika.

Apache Tika là một thư viện mã nguồn mở cho phép phân tích, trích xuất nội dung và phân loại các loại tài liệu khác nhau như văn bản, hình ảnh, âm thanh và video. Nó cho phép các nhà phát triển xây dựng các ứng dụng trí tuệ nhân tạo như trích xuất thông tin, tổ chức và phân loại tài liệu, trích xuất dữ liệu, phân tích ngôn ngữ tự nhiên và hơn thế nữa. Nó cũng cung cấp cho người dùng một bộ các công cụ để xử lý các tài liệu đó, bao gồm phân tích ngôn ngữ. Apache Tika hỗ trợ nhiều định dạng tài liệu phổ biến như Microsoft Office, OpenOffice, PDF, HTML, XML và nhiều định dạng khác. Nó sử dụng các thư viện và

công cụ phân tích khác nhau để phân tích nội dung tài liệu, bao gồm Apache PDFBox, Apache POI và Apache OpenNLP. Việc phân loại ngôn ngữ là một chức năng quan trọng của Apache Tika. Khi được cung cấp một tài liệu đầu vào, thư viện sẽ sử dụng các mô hình ngôn ngữ được xây dựng sẵn để phân loại ngôn ngữ của tài liệu đó. Khi đã xác định được ngôn ngữ của tài liệu, người dùng có thể sử dụng các công cụ khác trong Apache Tika để trích xuất thông tin từ tài liệu. Cụ thể, Apache Tika sử dụng một bộ các mô hình ngôn ngữ được huấn luyện từ các tập dữ liệu ngôn ngữ lớn để xác định ngôn ngữ của một tài liệu. Các mô hình này dựa trên các đặc trưng của ngôn ngữ như tần suất xuất hiện của các từ và cụm từ đặc trưng của từng ngôn ngữ. Khi phân loại ngôn ngữ, Apache Tika cũng hỗ trợ việc phân loại tài liệu có chứa nhiều ngôn ngữ khác nhau. Thông thường, việc phân loại ngôn ngữ là một bước quan trọng trong các ứng dụng xử lý ngôn ngữ tự nhiên, ví dụ như phân loại tin tức, phân tích cảm xúc, hay phân loại đối tượng trong các tài liệu.

3. Phân loại ngôn ngữ - Apache Tika.

a. OpenNLP. Apache Tika sử dụng thư viện OpenNLP để phân loại ngôn ngữ trong quá trình xử lý tài liệu. OpenNLP cung cấp một số models và công cụ cho việc xử lý ngôn ngữ tự nhiên, bao gồm cả việc phân loại ngôn ngữ. OpenNLP là một thư viện mã nguồn mở được sử dụng để xử lý ngôn ngữ tự nhiên trong Java. Nó cung cấp một loạt các công cụ để thực hiện các tác vụ phổ biến trong xử lý ngôn ngữ tự nhiên như tách từ (tokenization), phân tích cú pháp (parsing), phân loại văn bản (text classification), gán nhãn từ loại (part-of-speech tagging) và trích xuất thông tin (information extraction). Một số tính năng của OpenNLP bao gồm:

  • Tách từ (tokenization): Tách văn bản thành các từ đơn.
  • Gán nhãn từ loại (part-of-speech tagging): Xác định loại từ trong văn bản như danh từ, động từ, tính từ, trạng từ,...
  • Phân tích cú pháp (parsing): Xác định cấu trúc câu trong văn bản.

Tùy chỉnh các tham số này sẽ giúp tăng tính chính xác của việc phân loại ngôn ngữ trong OpenNLP, đồng thời giúp phù hợp hơn với các ngôn ngữ cụ thể và tác vụ phân loại văn bản. ● Maximum Entropy. Thuật toán Maximum Entropy (MaxEnt) là một thuật toán học máy sử dụng để xây dựng mô hình phân loại. Thuật toán này dựa trên nguyên lý tối đa hóa entropy, trong đó entropy được hiểu là một đại lượng đo lường mức độ không chắc chắn của thông tin. Thuật toán MaxEnt giải quyết bài toán phân loại dữ liệu bằng cách tìm cách đưa ra quyết định tốt nhất dựa trên thông tin có sẵn. Ví dụ, khi phân loại email vào các thư mục khác nhau (spam hoặc không phải spam), thuật toán sẽ dựa trên các thông tin như nội dung email, từ khóa có trong email, địa chỉ email gửi và nhận để đưa ra quyết định phân loại. Thuật toán MaxEnt hoạt động bằng cách tính toán xác suất của từng lớp phân loại dựa trên các đặc trưng của dữ liệu đầu vào. Sau đó, thuật toán sử dụng các giá trị xác suất này để đưa ra quyết định phân loại dữ liệu mới. Một kết quả ít có khả năng xảy ra hơn truyền tải nhiều thông tin hơn những kết quả có thể xảy ra hơn. Do đó, entropy có thể được coi là thước đo của sự không chắc chắn. Khi mục tiêu là tìm một phân phối càng không biết gì càng tốt, thì do đó, entropy phải là cực đại. Entropy được định nghĩa cụ thể như sau: Nếu X là biến ngẫu nhiên rời rạc có phân phối: P(X = xi ) = pi thì entropy của X là:

H ( X )=−∑

i ❑ ❑ pi log pi Trong quá trình huấn luyện mô hình, thuật toán sẽ cập nhật các trọng số của các đặc trưng dựa trên mức độ quan trọng của chúng đối với việc phân loại. Những đặc trưng quan trọng hơn sẽ có trọng số cao hơn, và ngược lại.

Tuy nhiên, việc xác định các đặc trưng quan trọng có thể gặp khó khăn do số lượng đặc trưng lớn. Do đó, thuật toán MaxEnt sử dụng kỹ thuật chọn đặc trưng để tìm ra các đặc trưng quan trọng nhất cho việc phân loại. Trong Maximum Entropy (MaxEnt) model, việc chọn đặc trưng (feature selection) rất quan trọng để đảm bảo hiệu quả của model. Tuy nhiên, việc lựa chọn đặc trưng thường khó khăn và phụ thuộc vào từng bài toán cụ thể. Có nhiều phương pháp khác nhau để chọn đặc trưng trong MaxEnt, trong đó phương pháp phổ biến bao gồm:

  1. Chọn đặc trưng dựa trên kinh nghiệm chuyên gia: Chuyên gia sẽ lựa chọn các đặc trưng dựa trên kiến thức chuyên môn của mình. Phương pháp này có thể cho kết quả tốt nếu chuyên gia có đủ kinh nghiệm và kiến thức.
  2. Chọn đặc trưng dựa trên tần số xuất hiện: Các đặc trưng có tần số xuất hiện cao trong tập dữ liệu huấn luyện có thể được chọn làm đặc trưng. Tuy nhiên, phương pháp này có thể dẫn đến overfitting và không phù hợp với các bộ dữ liệu mới.
  3. Sử dụng các phương pháp lựa chọn đặc trưng tự động: Các phương pháp này tự động lựa chọn đặc trưng dựa trên các tiêu chí như độ quan trọng, tương quan và sự đa dạng của các đặc trưng. Các phương pháp này bao gồm Recursive Feature Elimination (RFE), Lasso Regression, Elastic Net Regression, và Tree- Based Feature Selection. Ngoài ra, có một số kỹ thuật khác như PCA (Principal Component Analysis) và SVD (Singular Value Decomposition) có thể được sử dụng để giảm số chiều của dữ liệu và loại bỏ các đặc trưng tương quan. Tuy nhiên, việc sử dụng các kỹ thuật này cần cân nhắc kỹ lưỡng để tránh mất mát thông tin quan trọng. Ưu - Nhược điểm: Ưu điểm:
  • Maximum Entropy là một trong những thuật toán phân loại hiệu quả và được sử dụng rộng rãi trong các ứng dụng ngôn ngữ tự nhiên.
  • Nó có khả năng xử lý các tính năng phi tuyến tính và không phụ thuộc vào giả định về phân phối.

Maximum Entropy thường được ưa chuộng hơn trong việc phân loại ngôn ngữ vì những lý do sau:

  1. Độ chính xác cao hơn: Các nghiên cứu cho thấy rằng Maximum Entropy thường đạt độ chính xác cao hơn so với Perceptron, đặc biệt là trong các bài toán phân loại văn bản đa ngôn ngữ.
  2. Khả năng xử lý đa ngôn ngữ tốt hơn: Maximum Entropy có khả năng xử lý đa ngôn ngữ tốt hơn Perceptron, vì nó có thể học được các đặc trưng và sự tương quan giữa các đặc trưng ở mức độ cao hơn.
  3. Tính linh hoạt cao hơn: Maximum Entropy cho phép thêm các ràng buộc vào quá trình học, điều này giúp tăng tính linh hoạt của mô hình và giúp giải quyết các bài toán phân loại phức tạp hơn. Tuy nhiên, Perceptron cũng có những ưu điểm nhất định và được sử dụng rộng rãi trong nhiều bài toán học máy khác. ● Phương pháp chuẩn hóa của OpenNLP Language Detector. Trình phát hiện ngôn ngữ của OpenNLP chuẩn hóa ngôn ngữ theo quy trình sau: EmojiCharSequenceNormalizer Thay thế biểu tượng cảm xúc bằng khoảng trống UrlCharSequenceNormalizer Thay thế URL và E-Mail bằng một khoảng trống. TwitterCharSequenceNormalizer Thay thế thẻ bắt đầu bằng # và tên người dùng Twitter bằng khoảng trống. NumberCharSequenceNormalizer Thay thế các dãy số bằng khoảng trống

ShrinkCharSequenceNormalizer Thu nhỏ các ký tự lặp lại ba lần trở lên thành hai lần lặp lại. c. Phân loại ngôn ngữ. Apache Tika có thể dễ dàng cài đặt và chạy trên máy cá nhân thông qua docker. Sau khi cài đặt có thể chạy Apache Tika trên localhost thông qua lệnh: Sau khi chạy, truy cập vào: http://localhost:9998/ ta sẽ có giao diện như sau: Trang chủ sẽ hiển thị cho chúng ta danh sách các API có thể sử dụng để thao tác với Apache Tika. Tập trung vào vấn đề phân loại ngôn ngữ, chúng ta có thể sử dụng API: http://localhost:9998/language/string

VI. Kết luận. Với sự phát triển của công nghệ như hiện tại, việc học hỏi và nghiên cứu các công nghệ mới, tìm hiểu và ứng dụng chúng vào trong dự án là điều rất quan trọng. Các công nghệ mới có thể giúp chúng ta giải quyết nhiều khía cạnh trong dự án một cách tiện lợi và nhanh chóng. Đồng thời chúng cũng giúp cho dự án có hiệu suất tốt hơn, phục vụ người dùng một cách hiệu quả nhất. Đối với dự án mà bản thân được trải nghiệm trong quá trình thực tập, không chỉ vấn đề được nêu ra tại đây mà còn nhiều vấn đề khác và nhiều công nghệ khác đã và đang được áp dụng. Nói chung, khoa học máy tính nói chung và các công nghệ về học máy, trí tuệ nhân tạo nói riêng ngày nay đã được áp dụng vô cùng phổ biến để giải quyết đa dạng các lĩnh vực, đặc biệt là đối với mảng phần mềm. Được trải nghiệm, làm việc và học tập qua dự án thực tế tại công ty quả thật là một vinh dự. Qua đó bản thân có thể thấy được tầm quan trọng mà chuyên ngành học của mình mang lại lợi ích thế nào đến thực tế, công việc và đời sống.