Tải bản đầy đủ (.docx) (28 trang)

Báo cáo thực tập NATURAL LANGUAGE PROCESSING

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.96 MB, 28 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

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

NATURAL LANGUAGE
PROCESSING

Công ty thực tập
Người phụ trách
Thực tập sinh

: AdMicro
: Thầy Huỳnh Ngọc Tín
Trần Văn Tùng
: Ngơ Hồng Phúc - 16520948

TP. Hồ Chí Minh, tháng 6 năm 2020


2

LỜI MỞ ĐẦU
Xử lý ngôn ngữ tự nhiên (natural language processing - NLP) là một nhánh của trí tuệ
nhân tạo tập trung vào các ứng dụng trên ngôn ngữ của con người. Trong trí tuệ nhân tạo thì xử
lý ngơn ngữ tự nhiên là một trong những phần khó nhất vì nó liên quan đến việc phải hiểu ý
nghĩa ngơn ngữ-cơng cụ hồn hảo nhất của tư duy và giao tiếp.
Các bài toán phổ biến trong NLP bao gồm:
- Nhận dạng chữ viết: Có hai kiểu nhận dạng, thứ nhất là nhận dạng chữ in, ví dụ
nhận dạng chữ trên sách giáo khoa rồi chuyển nó thành dạng văn bản điện tử như dưới
định dạng doc của Microsoft Word chẳng hạn. Phức tạp hơn là nhận dạng chữ viết tay, có


khó khăn bởi vì chữ viết tay khơng có khn dạng rõ ràng và thay đổi từ người này sang
người khác. Với chương trình nhận dạng chữ viết in có thể chuyển hàng ngàn đầu sách
trong thư viện thành văn bản điện tử trong thời gian ngắn. Nhận dạng chữ viết của con
người có ứng dụng trong khoa học hình sự và bảo mật thông tin (nhận dạng chữ ký điện
tử).
- Nhận dạng tiếng nói: Nhận dạng tiếng nói rồi chuyển chúng thành văn bản tương
ứng. Giúp thao tác của con người trên các thiết bị nhanh hơn và đơn giản hơn, chẳng hạn
thay vì gõ một tài liệu nào đó bạn đọc nó lên và trình soạn thảo sẽ tự ghi nó ra. Đây cũng
là bước đầu tiên cần phải thực hiện trong ước mơ thực hiện giao tiếp giữa con người với
robot. Nhận dạng tiếng nói có khả năng trợ giúp người khiếm thị rất nhiều.
- Tổng hợp tiếng nói: Từ một văn bản tự động tổng hợp thành tiếng nói. Thay vì
phải tự đọc một cuốn sách hay nội dung một trang web, nó tự động đọc cho chúng ta.
Giống như nhận dạng tiếng nói, tổng hợp tiếng nói là sự trợ giúp tốt cho người khiếm thị,
nhưng ngược lại nó là bước cuối cùng trong giao tiếp giữa robot với người.
- Ngồi ra cịn có dịch tự động, tìm kiếm thơng tin, tóm tắt văn bản, khai phá dữ
liệu
Với tiếng Việt, các bài toán phổ biến có phân tách câu, tách từ, tự động thêm dấu từ.
Sau ba năm học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế, cũng như
muốn được tham gia nghiên cứu và làm việc trong môi trường tốt, em có dự định là sẽ đi thực
tập về Artificial Intelligence (Trí tuệ nhân tạo) đặc biệt là về NLP. Vì vậy, em quyết định chọn
AdMicro – Một mơi trường học tập, làm việc, hiện đại – là nơi sẽ giúp em thực hiện dự định
này.

Ngơ Hồng Phúc


3

LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn AdTech HCM đã tạo điều kiện cho em có cơ hội được thực tập

tại công ty.
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của anh, chị trong team,
thực tập chúng em đã tiếp thu được những kiến thức quan trọng để có thể làm và học tập. Chân
thành cảm ơn các anh chị trong team đã bỏ ra nhiều thời gian, công sức để hướng dẫn chúng em
hoàn thành đợt thực tập này.
Đặc biệt cảm ơn thầy Tín anh Tùng đã training, hướng dẫn, giúp đỡ cho chúng em tận
tình cả những khó khăn trong cơng việc, đến những khó khăn việc làm quen với mơi trường
mới, đã chỉ dẫn chúng em về cách làm báo cáo, lên kế hoạch, những kỹ năng không thể thiếu.
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều
kiện em làm bài báo cáo này.
Ngơ Hồng Phúc
TP.HCM, ngày 19 tháng 6 năm 2020

Ngơ Hồng Phúc


4

NHẬN XÉT CỦA KHOA
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………..
.
……………………………………………………………………………………………………
……………………………………………………………………………………………………

……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………..
.
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………

Ngơ Hồng Phúc


5

Ngơ Hồng Phúc


6

CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP

1. Giới thiệu công ty VCcorp
Được thành lập vào năm 2006, Công ty CP VCCorp (VCCorp) là công ty tiên phong

trong lĩnh vực công nghệ và nội dung số. Với hơn 10 năm hình thành và phát triển,
VCCorp đã xây dựng được một hệ sinh thái Internet rộng lớn với rất nhiều sản phẩm
sáng tạo, hữu ích trong nhiều lĩnh vực (quảng cáo trực tuyến, thương mại điện tử, trò
chơi trực tuyến...) phủ sóng trên 90% người sử dụng Internet và mobile, có giá trị đóng
góp lớn vào sự phát triển của Internet Việt Nam trong một thập kỷ qua.
2. Giới thiệu Admicro
Admicro thuộc Công ty cổ phần truyền thông Việt Nam VCcorp
Admicro hiện đang là mạng lưới kinh doanh quảng cáo trực tuyến hàng đầu tại thị trường
Việt Nam
VCCorp hiện đang sở hữu thương hiệu quảng cáo trực tuyến Admicro là đơn vị quảng
cáo trực tuyến lớn nhất hiện nay với hệ thống quảng cáo trên 200 website uy tín hàng
đầu, gần 30 website trong số đó thuộc sở hữu của VCCorp hoặc VCCorp là đơn vị độc
quyền khai thác quảng cáo. Với độ phủ tới trên 50 triệu độc giả, tương đương 90% người
dùng Internet và mobile tại Việt Nam, cùng với sức mạnh về công nghệ, và sự sáng tạo
không ngừng, Admicro luôn ở vị thế dẫn đầu thị trường, giúp các trang báo và trang
thông tin điện tử Việt Nam có nguồn thu tốt để cung cấp thơng tin cho người dân và cạnh
tranh được các website dịch vụ nước ngồi.

Ngơ Hồng Phúc


7

Hình: Các thành phần của AdMicro
Các sản phẩm quảng cáo sáng tạo, ứng dụng nền tảng công nghệ cloud computing, hệ
thống xử lý dữ liệu lớn hàng tỷ bản ghi của Admicro giúp các doanh nghiệp tối ưu hóa
hiệu quả marketing và tiếp cận nhanh nhất đến độc giả Internet. Thơng qua hệ thống
Admicro, khách hàng có thể kiểm sốt và đo lường số liệu theo thời gian thực, nhắm tới
đúng đối tượng độc giả, khu vực, vùng miền, theo độ tuổi, giới tính...
3. Giới thiệu bộ phận Adtech HCM

Adtech HCM là một bộ phận trong Adtech đảm nhiệm tìm hiểu và nghiên cứu, triển khai
và phát triển các lĩnh vực như Big Data, Computer Vision, NLP, …

Ngơ Hồng Phúc


8

CHƯƠNG 2: NỘI DUNG THỰC TẬP

Đợt thực tập với lĩnh vực NLP nhằm mục đích giúp sinh viên thực tập được đào tạo kiến
thức về xử lý ảnh, đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, thuyết trình,
giao tiếp. Tại cơng ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong một môi
trường phát triển chuyên nghiệp.
Công việc đã thực hiện

STT Nội dung công việc

Mô tả công việc

Thời gian
thực hiện

Kết quả

1

Apache Hadoop

Tìm hiểu về nguyên lý của

MapReduce
Tìm hiểu kiến trúc của
Hadoop 1.0
Cài đặt Hadoop

17/02/2020 27/02/2020

Hồn thành mơ tả
cơng việc.

2

Apache Spark

Cài đặt Spark
Tìm hiểu cơ chế hoạt động
của Spark

28/02/2020 07/03/2020

Hồn thành phần mơ
tả cơng việc.
Tạo ứng dụng đếm
từ với Spark

3

Git

Tìm hiểu về nguyên lý hoạt 08/03/2020 21/03/2020

động của Git
Các lệnh thao tác trong Git
Các workflow phổ biến trong
Git

Hồn thành phần mơ
tả cơng việc.
Tạo ứng dụng lưu
trữ thông tin sách
với Spring Boot

4

Spring và Spring
Boot

Tìm hiểu về Spring Boot
Tìm hiểu cơ chế hoạt động
của Spring Boot

08/03/2020 21/03/2020

Hồn thành phần mơ
tả cơng việc.
Tạo ứng dụng lưu
trữ thơng tin sách
với Spring Boot

5


Machine Learning

Tìm hiểu về thuật tốn tốn
ưu gradient-based.
Tìm hiểu xác suất thống kê

27/03/2020 02/04/2020

Hồn thành phần mơ
tả cơng việc

Ngơ Hồng Phúc


9

trong Machine Learning.
6

Deep Learning

Tìm hiểu về mạng ANN,
activation functions, ứng
dụng của lan truyền ngược.
Tìm hiểu mạng CNN

03/04/2020 15/04/2020

Hồn thành phần mơ
tả cơng việc.

Hiện thực các lớp
trong mạng CNN

7

NLP

Tìm hiểu về bài tốn Text
Classfication, Dimension
Reduction và
WordEmbedding.

16/04/2020 10/05/2020

Hồn thành phần mơ
tả cơng việc.
Hiện thực thuật tốn
word2vec và
glove2vec

17/02/2020 17/05/2020

Hồn thành phần mơ
tả cơng việc.

Tìm hiểu phương pháp
Neural Language Model
8

Data Labelling


Hỗ trợ tìm các video và gán
nhãn dữ liệu cho bài toán
phát hiện video 16/18+

Bảng: Các hoạt động trong thực tập
CHƯƠNG 3: CHI TIẾT VỀ PROJECT

1. Giới thiệu về text classification
Bài toán classification đã được nghiên cứu và áp dụng vào nhiều lĩnh vực thực tế. Hầu
hết các hệ thống phân loại văn bản có thể được chia làm 4 giai đoạn chính: trích xuất đặc
trưng, giảm số chiều, phân loại và đánh giá.
Theo bài toán, input đầu vào bao gồm bộ các văn bản thô D = {X1, X2 ... XN }, mỗi Xn
bao gồm s câu, mỗi câu có ws chữ và mỗi chữ có lw. Sau khi qua xử lý thì mỗi văn bản
Xn được dán một nhãn phân loại.
Tông quan, có 4 mức độ khác nhau có thể được áp dụng trong phân loại văn bản:
- Mức văn bản
- Mức đoạn văn
- Mức câu
- Mức dưới câu (sub-sentence)

Ngơ Hồng Phúc


10

1.1 Trích xuất đặc trưng
Văn bản ban đầu là bộ data không được cấu trúc, muốn xử lý được các văn bản cần
phải chuyển chúng vào không gian đặc trưng có cấu trúc (structured feature space)
Trước hết data cần được làm sạch để loại bỏ các từ, ký tự không cần thiết. Sau đó các

phương pháp rút trích đặc trưng có thể được áp dụng. Các kĩ thuật phổ biến bao gồm
Term Frequency-Inverse Document Frequency (TF-IDF), Term Frequency (TF),
Word2Vec, and Global Vectors for Word Representation (GloVe)
1.2 Giảm số chiều
Data sau khi được chuyển sang dạng vector, nếu được đưa trực tiếp vào hệ thống, có
thể gây ra chậm trễ về thời gian và tăng yêu cầu bộ nhớ. Vì thế, chúng ta cần phải cắt
giảm số chiều của các vector. Các phương pháp phổ biến bao gồm: Principal
Component Analysis (PCA), Linear Discriminant Analysis (LDA), and non-negative
matrix factorization (NMF), unsupervised feature extraction dimensionality reduction
như random projection, autoencoders, and t-distributed stochastic neighbor
embedding (t-SNE).
1.3 Phân loại văn bản
Phần quan trọng nhất trong quá trình là lựa chọn một classifier thích hợp. Để xác định
được thuật toán hợp lý nhất, chúng ta cần hiểu được bản chất của chúng. Có nhiều
loại thuật tốn có thể được sử dụng:
- Các thuật tốn có tham số: boosting, bagging, Nạve Bayes Classifier (NBC)
(chi phí tính tốn rẻ và u cầu ít bộ nhớ)
- Các thuật tốn khơng tham số: k-nearest neighbor (KNN), Support Vector
Machine (SVM).
- Một số classifier dựa vào cây (tree-based classifiers) như decision tree và
random forest.
1.4 Đánh giá
Giai đoạn cuối cùng là đánh giá, mục tiêu chính là để làm rõ hiệu quả của thuật tốn,
từ đó đưa ra điều chỉnh hoặc thay thế thích hợp. Có một số phương pháp đánh giá
dành riêng cho thuật toán phân loại văn bản: Fβ Score, Matthews Correlation
Coefficient (MCC), receiver operating characteristics (ROC), and area under the
ROC curve (AUC).

Ngơ Hồng Phúc



11

2. Tiền xử lý văn bản
Tiền xử lý văn bản và trích xuất đặc trưng là hai bước quan trọng của bài toán phân loại.
2.1 Làm sạch văn bản và tiền xử lý
Hầu hết các văn bản đều chứa các stopwords, lỗi chính tả, ... Trong nhiều thuật tốn,
đặc biệt những thuật tốn dựa vào thống kê và tính tốn xác suất, noise và các đặc
trưng không được mong đợi có thể đem lại tác dụng ngược với hiệu quả bài toán.
2.1.1 Tách từ (tokenization)
Tách từ là phương pháp tiền xử lý chia một chuỗi các từ thành các từ riêng biệt, hoặc
các vế, ký tự.
2.1.2 Bỏ stopwords
Các câu thường chứa các từ không mang nhiều ý nghĩa cho việc phân loại. Vì thế,
chúng ta nên loại bỏ chúng nếu cần thiết.
2.1.3 Từ in hoa
Các văn bản thường đa dạng về trường hợp từ in đậm, vì thế nó là vấn đề lớn đối với
phân loại văn bản. Các thông dụng nhất khi đối mặt với trường hợp này là chuyển tất
cả các từ thành từ thường (lowercase words)
2.1.4 Các từ viết tắt
Từ viết tắt là một dạng thể hiện của từ đồng nghĩa trong văn bản. Cách thực hiện đơn
giản là chuyển chúng về thành từ nguyên vẹn ban đầu.
2.1.5 Khử noise
Hầu hết văn bản đều chứa các ký tự không cần thiết như các dấu câu, các ký tự đặc
biệt. Tuy chung mang nhiều ý nghĩa cho giao tiếp giữa người với người nhưng trong
trường hợp phân loại văn bản, chúng nên được loại bỏ.
2.1.6 Sửa chính tả
Đây là bước có thể được thực hiện hoặc khơng. Các lỗi chính tả thường được bắt gặp
trong văn bản khơng chính thống như trên mạng xã hội. Có nhiều phương pháp có thể
được áp dụng như dựa vào hashing, hoặc ngữ nghĩa để phát hiện lỗi.

2.2. Thể hiện của từ
Giữa các từ trong câu có mối liên hệ về cả ngữ nghĩa và cấu trúc, có nhiều nghiên cứu
đã giúp giảm thiểu sự mất mát mối quan hệ này.

Ngơ Hồng Phúc


12

2.2.1 N-Gram
N-gram là kĩ thuật chia một câu thành các token chứa n chữ (hoặc ký tự) từ đó hình
thành các BOW (bag of words). Thông thường sẽ dừng 2-gram hoặc 3-gram. Kỹ
thuật cải tiến là Syntactic N-Gram dựa vào kiến trúc cây.
2.3 Từ có trọng số
Kỹ thuật được sử dụng rộng rãi nhất trong đánh trọng số cho từ là TF (term
frequency). Có thể cải tiến TF bằng cách sử dụng trọng số dạng log.
2.3.1 BOW
Túi từ là mô hình để đơn giản hóa một đoạn văn bản, chuyển nó thành một vector,
mỗi thành phần của vector được xác định dựa vào tiêu chí nào đó. Tuy nhiên do văn
bản là chuỗi liên tiếp các từ có quan hệ ngữ nghĩa, cấu trúc, khi chuyển thành BOW,
các quan hệ này biến mất.
Một hạn chế khác là BOW chuyển mỗi từ thành một one-hot-encoded vector, số
chiều bằng số lượng từ có thể có, vì thế rất phí tài ngun khi xử lý, lưu trữ.
2.3.2 Term Frequency-Inverse Document Frequency
Đây là kĩ thuật đánh trọng số chữ, ý tưởng chính là nhấn mạnh vào ảnh hưởng của
các từ trong một bộ văn bản.

Tuy nhiên, TF-IDF không cho thấy được mối tương quan giữa các từ (nghĩa, cấu
trúc) do mội từ được thể hiện bằng một chỉ số độc lập nhau.
2.4 Word Embedding

WE là kỹ thuật học hỏi đặc trưng với mỗi từ (hoặc phrase) được chuyển thành một
vector số thực N chiều . Nhiều phương pháp đã được đưa ra, phổ biến là Word2Vec,
GloVe và FastText.
Mục tiêu chính là có thể rút trích đặc trưng của từ mà các đặc trưng đó có thể thể hiện
được quan hệ cú pháp, ngữ nghĩa.
Có nhiều mơ hình đã được nghiên cứu để thiện thực kỹ thuật này, nổi bật có
Word2vec, Glove và Fast. Mỗi mơ hình có từng có độ phức tạp và u cầu thời gian
riêng, lựa chọn mơ hình phù hợp là sự lựa chọn giữa độ chính xác và độ phức tạp.
3. Code mã hóa
Để hiện thực được bài tốn phân loại văn bản, cần hiện thực các mơ hình Word
Embedding để chuyển thông tin dạng văn bản sang thông tin số máy tính có thể xử lý
được.

Ngơ Hồng Phúc


13

3.1 Cấu trúc mã nguồn
Mã nguồn có cấu trúc như hai hình:

trúc

Hình: Cấu
mã nguồn

Trong đó:
- Folder Data chứa các dữ liệu đã được khai thác (các đường link của bài
báo, nội dung của các bài báo), bộ từ điển tiếng Việt, các văn bản đả qua xử
lý và thông tin kết quả ma trận đầu ra của mơ hình GloVe.

- Folder src chứa:
o Folder WordEmbedding: chứa các file định nghĩa các lớp mơ hình
(GloVe và Word2Vec)
Ngơ Hồng Phúc


14

o Folder crawl: chữa tool trợ giúp khai thác dữ liệu cần thiết.
o File Normalization: giúp chuẩn hóa văn bản
3.2 Khai thác dữ liệu
3.2.1 Khai thác đường link bài báo
Công cụ khai thác dữ liệu được viết bằng ngôn ngữ Python, với module là
beautifulSoup, giúp rút trích thơng tin từ file .html.
Các bài báo được khai thái được lấy từ hai trang thông tin điện tử phổ biến, bao gồm
news.zing.vn và kenh14.vn. Nội dụng đăng tải của hai trang này trải dài qua nhiều
lĩnh vực (kinh tết, thời sự, pháp luật đến đời sống, giới trẻ …) và được viết bởi nhiều
người nên có thể giúp bộ dữ liệu khai thác được đa dạng.
Các bài báo thuộc từng loại được xếp vào các đường dẫn riêng, nên khi việc thực hiện
khai thác dữ liệu khá đơn giản khi chỉ cần nối đường URL của trang chủ với phần
đuôi thể hiện từng phân loại.
Nội dung của file crawl_URL.py được thể hiện ở hình dưới.

Ngơ Hồng Phúc


15

Hình: Nội dung file crawl_URL.py
3.2.2 Khai thác nội dung bài báo

Sau khi các đường dẫn URL được lưu vào file riêng. Nội dung các bài báo cỏ thể
được khai thác dễ dàng
Thông thường, nội dung sẽ được đưa vào một tag HTML (<div>) để phân biệt với
phần còn lại của trang (quảng cáo, bài báo khuyến nghị, header, footer…).

Ngơ Hồng Phúc


16

Ngồi văn bản, một bài báo cịn chứa các thơng tin định dạng khác (hình ảnh,
video…) nên sau khi có được nội dung cần thực hiện lọc lại.
Nội dung file crawl_text.py được thể hiện như hình.
3.2.3 Kết quả
Các đường dẫn được lưu vào file absURLs.csv và nội dung bài báo được lưu trong
articles.csv
Trong absURLs.csv, mỗi URL được lưu một dòng, kèm theo số thứ tự phía trước
được phân biệt bằng dấu ‘*’.

Hình: Nội dung file absURLs.csv
Trong articles.csv, mỗi bài báo được lưu trong một dòng được dẫn đầu bằng số thứ tự
của URL tương ứng, phân biệt nhau bằng dấu ‘*’. Vì để đảm bảo tính ngẫu nhiên của
dữ liệu, các bài báo đã được xác trộn trước khi được lưu vào.

Ngơ Hồng Phúc


17

Hình :Nội dung file articles.csv

3.3 Tiền xử lý dữ liệu
3.3.1 Chuẩn hóa văn bản
Văn bản được khai thác cịn chứa các kí tự dư ( dấu cách, các dấu câu…) nên cần
được loại bỏ. Việc này được thực hiện bởi các hàm trong file Normalization.py

Ngơ Hồng Phúc


18

Hình: Nội dung file Normalize.py
Kết quả được lưu trong file preprocessed_articles.txt

Ngơ Hồng Phúc


19

Hình : Nội dung file preprocessed_articles.txt
3.3.2 Nhóm từ
Vì các từ trong tiếng Việt được cấu từ từ các tiếng nên cần phải được nhóm lại. Việc
nhóm có thể được thực hiện bằng nhiều cách khác nhau.

Ngơ Hồng Phúc


20

Hình: Nội dung file segmented_articles.txt
3.3.2. Xây dựng bộ từ điển

Ngồi ra, cịn cần có bộ từ điển tiếng Việt. Vì mỗi bộ dữ liệu sẽ có một bộ từ đặc
trưng, nên để đảm bảo cá mơ hình WE có thể chuyển đổi tồn bộ từ, nên thay vì sử
dụng bộ từ điển đã được đăng tải trên mạng, bộ từ riêng được xây dựng và lưu trong
Dictionary.csv
3.4 Xây dựng mô hình
Có hai mơ hình được hiện thực là Word2Vec và GloVe
3.4.1 Word2Vec

Ngơ Hồng Phúc


21

Ngơ Hồng Phúc


22

Hình: Nội dung file Skipgram.py

Ngơ Hồng Phúc


23

3.4.2 Nâng cấp của Skipgram

Hình: Nội dung file hi-softmax.py
3.4.3 Mơ hình Glove


Ngơ Hồng Phúc


24

Ngơ Hồng Phúc


25

Hình: Nội dung file Glove.py

Ngơ Hồng Phúc


×