Đầu vào là one-hot-vector, mỗi từ sẽ có dạng {x 1 , x 2 ,…x v}trong đó Vlà số chiều của từ điển, một phần tử có giá trị 1 tương đương với x k chỉ mục của từ đó trong từ điển, các phần t
Trang 1I HỌC BÁCH KHOA HÀ NỘI HOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÁO CÁO MÔN: PROJECT I
ĐỀ TÀI TÌM HIỂU VỀ WORD2VEC VÀ TEXTRANK
GVHD: PGS.TS Nguyễn Thị Kim Anh
Sinh viên thực hiện: 20173100 Hoàng Thị Hảo
20173041 Nguyễn Đình Đức
20175653 Khuất Thị Quyên
Hà Nội, tháng 12 năm 2019
Trang 2MỤC LỤC
PHÂN CÔNG CÔNG VIỆC 3
LỜI MỞ ĐẦU 4
1 WORD2VEC 5
1.1 Khái quát nội dung Word2Vec 5
1.1.1 Mô hình skip-gram 5
1.1.2 Cbow 7
1.1.3 Hierarchical softmax 7
1.1.4 Negative Sampling 8
1.1.5 Minh họa kết quả 8
1.2 Tiền xử lý dữ liệu 10
2 POS_TAG 12
2.1 Các bước cơ bản trong gãn nhãn từ loại: 13
2.1.1 Gán nhãn từ loại cho mỗi từ -POS 13
2.1.2 Lemmatization 14
2.1.3 Loại bỏ StopWords 14
2.1.4 Tách câu 15
2.1.5 Tách từ 15
2.2 Kết quả sau khi gán nhãn 16
3 BIGRAMS 17
3.1 Nhận biết bigrams 17
3.2 Chiết xuất bigrams từ corpus 18
3.3 Ví dụ minh hoạ 18
3.4 Nhúng bigrams bằng Word2Vec 20
4 TEXTRANK 21
4.1 Đôi nét về TextRank 21
4.2 Ví dụ minh hoạ 23
DANH MỤC TÀI LIỆU THAM KHẢO 24
TẬP DỮ LIỆU 25
Trang 3PHÂN CÔNG CÔNG VIỆC
Nguyễn Đình Đức - Xử lý bộ dữ liệu
- Viết báo cáo mục 1
Hoàng Thị Hảo - Nhúng bigrams, xây dựng pha đầu tiên của
thuật toán TextRank
- Viết báo cáo mục 3 và 4Khuất Thị Quyên - Nhúng POS_TAG, xử lý dữ liệu
- Viết báo cáo mục 2 và lời mở đầu, ghép báocáo
Trang 4LỜI MỞ ĐẦU
Một trong những cái quan trọng khiến con người phát triển vượt bậc
so với các loài động vật khác là ngôn ngữ Do đó, ngôn ngữ cực kỳ phứctạp Một đứa trẻ mất 2 năm để có thể bắt đầu nhận thức cũng như suynghĩ về ngôn ngữ, vậy nếu muốn dạy cho máy tính hiểu ngôn ngữ thì taphải làm gì?
Như chúng ta đã biết chiếc máy tính được cấu tạo từ những con số do đó
nó cũng chỉ có thể đọc các dữ liệu số mà thôi Trước đây, người ta mã hóatheo kiểu one hot encoding tức là tạo một bộ từ điển cho dữ liệu và mãhóa các từ trong văn bản thành những vector, nếu từ đó có trong văn bản
đó thì mã hóa là 1 còn không có sẽ là 0 Kết quả tạo ra là một ma trậnthưa, tức là ma trận hầu hết là 0 Các mã hóa này có nhiều nhược điểm,
đó là: thứ nhất là số chiều của nó rất lớn, thứ hai các từ không có quan hệvới nhau Điều đó dẫn đến người ta nghĩ ra một mô hình mới có tên
là Word embebding, các từ sẽ có quan hệ với nhau về ngữ nghĩa, tức làcác cặp từ như: “paris-tokyo”, “man-women”, “boy-girl” sẽ có khoảngcách gần nhau hơn trong Word embebding space, ưu điểm thứ hai là sốchiều của nó sẽ giảm Word embebding có hai mô hình nổi tiếng làWord2Vec và GloVe Nhìn chung hai phương pháp này đều có những ưu
và nhược điểm riêng, ở báo cáo này chúng ta sẽ tìm hiểu về phương phápWord2Vec
Không chỉ vậy, trong thời đại mà công nghệ thông tin đang ngày càngphát triển cũng như sự bùng nổ của Internet đã mang đến một lượngthông tin vô cùng lớn cho con người Vì vậy, nhu cầu của con người vềtóm tắt thông tin nhằm thuận tiện cho việc tổng hợp càng cao Tóm tắt dữliệu tự động trở thành một lĩnh vực quan trọng, một trong những phươngpháp tóm tắt tự động có nhiều ưu thế hơn cả là TextRank
Trang 51 WORD2VEC
1.1 Khái quát nội dung Word2Vec
Word2Vec được tạo ra năm 2013 bởi Tomas Mikolov, là một mô hình của Từ Embedding Trong đó, các từ sẽ được chuyển về dạng vector để
xử lý Word2Vec có 2 mô hình là Cbow (Continous bag of words) và Skip-gram
Cbow là mô hình dự đoán từ đích dựa vào những từ xung quanh
Skip-gram ngược lại với Cbow, dự đoán những từ xung quanh dựa vào một từ cho trước
Cbow huấn luyện nhanh hơn nhưng không chính xác bằng gram
Skip-1.1.1 Mô hình skip-gram
Cấu trúc của mô hình skip-gram:
Trang 6Đầu vào là one-hot-vector, mỗi từ sẽ có dạng {x 1 , x 2 ,…x v}trong đó V
là số chiều của từ điển, một phần tử có giá trị 1 tương đương với x k
chỉ mục của từ đó trong từ điển, các phần tử còn lại sẽ là 0,
Ma trận trọng số giữa lớp input và lớp ẩn là ma trận (có số chiều W
VxN, trong đó N là số chiều của lớp ẩn) có hàm phát động là tuyến
tính, ma trận trọng số giữa lớp ẩn và lớp output là ′ (có số chiều làW
NxV), hàm phát động của lớp output là softmax.
Mỗi hàng của là vector chiều đại diện cho là mỗi từ trong W N v w
lớp input Mỗi hàng của là Lưu ý là input là một one-hot-vectorW
chỉ có một phần tử bằng 1 nên
Từ lớp ẩn đến lớp output là ma trận Ta tính score cho mỗi từ u i
trong từ điển
Trong đó là vector cột trong ′ Tiếp đó ta sử dụng hàm softmax.j W
Trong đó và là 2 vector đại diện cho từ đến từ ma trận và ′ w W W
Gradient descent được dùng để giải quyết bài toán này nhưng vì từ điển có kích thước lớn, tính toán mẫu số phải tính trên toàn bộ từ điển
Trang 7nên chi phí tính toán lớn Do đó người ta dùng 2 phương pháp giải quyết
là Hierarchical Softmax hoặc Negative Sampling
Trang 8Thay vì phải đánh giá nút output trong mạng nơron để có được V
phân phối xác suất, ta chỉ cần đánh giá từ
1.1.4 Negative Sampling
Ý tưởng của negative sampling rõ ràng hơn hierarchial softmax: đểgiải quyết khó khăn của việc có quá nhiều output vector mà cần được cậpnhật trên một vòng lặp, chúng ta chỉ cần cập nhật một mẫu của chúng
Rõ ràng từ output nên được giữ trong mẫu (sample) của chúng ta vàđược cập nhật, và chúng ta cần lấy mẫu một vài từ như là mẫu âm(negative sampling) Một phân bố xác suất cần cho việc lấy mẫu(sampling process), và nó có thể được chọn tuỳ tiện, ta gọi phân bố này làphân bố nhiễu (nosie distribution), và ký hiệu là P n (w)
Ví dụ, giả sử bạn có tập văn như là một danh sách từ, và bạn chọn 5
từ âm bằng cách lấy ngẫu nhiên từ danh sách Trong trường hợp này, xácsuất cho việc chọn từ ‘couch’ sẽ bằng với số lần từ ‘couch’ xuất hiệntrong tập văn chia cho tổng số từ xuất hiện trong tập văn đó
1.1.5 Minh họa kết quả
Chúng ta sử dụng thư viện gensim để huấn luyện dữ liệu với tập dữ liệu [1]
Cụ thể, trong mục này quá trình huấn luyện sử dụng Cbow với
min_count = 1, window=5, size=200, sample=0,001, alpha=0,01,
size là số chiều của vector từ
sample: các từ có tần suất cao hơn sample sẽ được ghép ngẫu nhiên
alpha là tốc độ học ban đầu
min_alpha: tốc độ học sẽ giảm tuyến tính xuống min_alpha trong quátrình huấn luyện
epoch là số chu kì huấn luyện
Trang 9Một số ví dụ minh họa về kết quả có thể có được sau quá trình huấn luyện:
So sánh sự tương đồng về nghĩa của các từ:
Tính khoảng cách giữa 2 từ:
Biểu diễn trực quan khoảng cách về nghĩa giữa các từ trên đồ thị 2 chiều:
Trang 101.2 Tiền xử lý dữ liệu
Tập dữ liệu [1] chúng ta sử dụng trong báo cáo này là dữ liệu thô, chưa được xử lý Do đó, cần phải tiền xử lý dữ liệu Để làm điều đó, chúng ta sử dụng Wikipedia Extractor – một công cụ được Wikipedia xâydựng sẵn
Wikipedia Extractor là công cụ tạo một file văn bản đơn giản từ một 1file Wikipedia dump, loại bỏ bất kì thông tin, chú thích nào khác có trong các trang Wikipedia, chẳng hạn như hình ảnh, bảng, tài liệu tham khảo, danh sách
Nội dung dữ liệu đầu ra sẽ có dạng:
<doc id="" revid="" url="" title="">
Nội dung của trang wikipedia
1 Link github: https://github.com/attardi/wikiextractor
Trang 12<doc id="2" url="http://it.wikipedia.org/wiki/Armonium">
Armonium
L'armonium (in francese, “harmonium”) è uno strumento musicale azionato conuna tastiera, detta manuale Sono stati costruiti anche alcuni armonium con
organistico e così pure la sua estensione
nó sẽ được ứng dụng rộng rãi trong các hệ thống tìm kiếm thông tin,trong các ứng dụng tổng hợp tiếng nói, các hệ thống nhận dạng tiếng nóicũng như trong các hệ thống dịch máy Trong xử lý ngôn ngữ tự nhiên thìgán nhãn từ loại được coi là cơ sở
Trang 132.1 Các bước cơ bản trong gãn nhãn từ loại:
Ví dụ ta có đoạn văn ngắn sau:
Anarchism is an anti authoritarian political and social philosophy that rejects hierarchies deemed unjust and advocates their replacement with self managed self governed societies based on voluntary cooperative institutions These institutions are often described as stateless societies although several authors have defined them more specifically as distinct institutions based on non hierarchical or free associations.
2.1.1 Gán nhãn từ loại cho mỗi từ -POS
Ở bước này ta cần xem xét từng từ một và gãn nhãn cho từ, ở đây thìchúng ta chỉ gán nhãn đơn giản nhất cho các từ là: danh từ, động từ, tính
từ và trạng từ, đối với những từ không nằm trong cả 4 loại hay các từ nhưtên địa danh hay tên người sẽ đều được về danh từ Việc xác định đượcloại từ của mỗi từ trong câu sẽ giúp ta có thể hiểu rõ hơn về ý nghĩa củacác câu, để làm được điều này thì cần xây dựng một mô hình gán nhãncho từ, Trong đó, các từ dự đoán gán nhãn và những từ trước đó đã đượcgán nhãn sẽ được đưa vào làm thuộc tính cho mô hình
Quy trình gán nhãn từ như sau ( ví dụ ta có từ London):
Mô hình gán nhãn được huấn luyện bằng cách cung cấp dữ liệu đầu vàogồm những câu Tiếng Anh với mỗi từ đã được gán nhãn trước đó
Mô hình này được thực hiện dựa trên phương pháp thống kê, vì máy tínhkhông thể hiểu được ý nghĩa chính xác nhất như con người, mô hình chỉ
có thể xác định được nhãn giống với những từ trước đó thuật toán đã nhìnqua
Trong bài này, nếu từ là danh từ (Noun) sẽ được gán nhãn ký hiệu là:_n,động từ (Verb) là:_v, tính từ (adj) là: _j và trạng từ (adv):_r, đối với các từchỉ địa danh hay tên người hoặc các từ không nằm trong 4 từ loại trên sẽ
Trang 14Sau khi chạy câu văn ở ví dụ trên chúng ta sẽ có kết quả sau:
anarchism_n anti_a authoritarian_a political_a social_a philosophy_n reject_v hierarchy_n deem_v unjust_a advocate_v replacement_n self_n manage_v self_n govern_v society_n base_v voluntary_a cooperative_a institution_n institution_n often_r describe_v stateless_a society_n although_None several_a author_n define_v specifically_r distinct_a institution_n base_v non_a hierarchical_a free_a association_n
Ở mô hình này được sử dụng công cụ NLTK (Natural Language Toolkit)đây là công cụ hàng đầu để xây dựng các chương trình Python hoạt độngvới dữ liệu ngôn ngữ của con người
không máy tính sẽ hiểu các từ này là 2 từ khác nhau (Ví dụ: “going”,
“goes”, ”went”, “gone” các từ này sẽ được đưa về từ ban đầu là “go”).
Trong NLP thì quá trình này được gọi là Lemmetization
Điều này tương tự với động từ, ta cũng sẽ chuyển đổi các dạng động
từ thành định dạng gốc Do vậy ta có thể viết: “I going to school” thành
“I go to school” Đối với các từ bất quy tắc ta sẽ có 1 danh sách riêng
chứa các từ bất quy tắc này để khi văn bản xuất hiện từ bất quy tắc nó sẽđưa về từ gốc của từ
2.1.3 Loại bỏ StopWords
StopWords là những từ xuất hiện nhiều trong ngôn ngữ tự nhiên, tuynhiên lại không mang nhiều ý nghĩa ở trong đoạn văn, trong tiếng Anh lànhững từ như: is, that, this,… có nhiều cách để loại bỏ các StopWordsnhưng có 2 cách chính là: dùng từ điển và dựa theo tần suất xuất hiện của
từ Trong 2 cách này có thể thấy biệc sử dụng từ điển có nhiều ưu thế hơn
cả, nên trong project này chúng em sử dụng cách loại bỏ StopWords làdùng từ điển bằng cách liệt kê hết tất cả các StopWords trong Tiếng Anhnếu xuất hiện trong văn bản sẽ bị loại bỏ
Ví dụ ở trên sau khi tách từ ta sẽ tiến hành loại bỏ các StopWords ta
sẽ có Output sau:
“anarchism”, “anti”, “authoritarian”, “political”, “social”,
“philosophy”, “ reject”, “hierarchy”, “deem”, “unjust”, “advocate”,
Trang 15“replacement”, “self”, “manage”, “self”, “govern”, “society”, “base”,
“voluntary”, “cooperative”, “institution”
2 “These institutions are often described as stateless societies although several authors have defined them more specifically as distinct institutions based on non hierarchical or free associations”
Giả định rằng mỗi câu ở trên có một ý nghĩa riêng biệt Vì chúng có
có thể dễ dàng viết chương trình để hiểu một câu hơn là một đoạn văn.Xây dựng chương trình tách câu rất đơn giản Cứ khi nào ta thấy dấuchấm câu, khi đó một câu được coi là kết thúc
2.1.5 Tách từ
Sau khi tách ra thành các câu riêng thì ta cần tách các từ bên trong câu
ra, giai đoạn này còn gọi là Tokenization Việc này rất đơn giản trongTiếng Anh vì Tiếng Anh là ngôn ngữ đơn âm tiết nên chúng ta chỉ cầntách từ mỗi khi gặp khoảng trống chứ không giống như tiếng Việt sẽ khókhăn hơn rất nhiều vì nó là ngôn ngữ đa âm tiết
Ví dụ trong tách từ:
1 Input: Anarchism is an anti authoritarian political and social philosophy that rejects hierarchies deemed unjust and advocates their replacement with self managed self governed societies based on voluntary cooperative institutions.
2 Output: ” Anarchism”, “is”, “an”, “anti”, “authoritarian”,
“political”, “and”, “social”, “philosophy”, “that”, “rejects”,
“hierarchies”, “deemed”, “unjust”, “and”, “advocates”, “their”,
“replacement”, “with”, “self”, “managed”, “self”, “governed”,
“societies”, “based”, “on”, “voluntary”, “cooperative”, “institutions”
Trang 162.2 Kết quả sau khi gán nhãn
Sau khi gán nhãn từ loại, dễ thấy kích thước của bộ từ điển sẽ đượctăng lên Cụ thể với số lượng từ trước khi được huấn luyện là trên 23 triệu
là hơn 400 nghìn từ và sau khi gán nhãn là hơn 500 nghìn từ với cùngtham số cài đặt như nhau
Kích thước từ điển tăng sau khi huấn luyện nếu gán nhãn từ loại làdo: Trong một câu văn, ở ngữ cảnh này nó là từ loại này nhưng ở một câuvăn khác vẫn là từ đó nhưng nó sẽ đóng vai trò là từ loại khác
Ví dụ như ta có câu văn sau:
(a) Please write your address on an envelope
(b) Now, I am hosting a summit with President Xi of China at the Southern White House to address the many critical issues affecting our.
Trong tường hợp không gán nhãn cho từ các từ đa nghĩa sẽ được coi
là cùng một từ dù chúng có ý nghĩa hoàn toàn khác nhau, do đó nhúngcâu điển hình sẽ không xử lý được vấn đề đa năng việc gán nhãn cho từ
sẽ thực hiện được điều này: mỗi từ sẽ được gắn nhãn loại từ tạo nên mộtcặp từ khi lưu trong từ điển
Trong câu (a), “address” là danh từ tuy nhiên ở câu (b) thì “address”
là động từ, do vậy lúc này bên trong từ điển sẽ được lưu với hai cặp từ là:
address_n address_v và còn nếu không gán nhãn cho từ thì trong từ điển
sẽ chỉ lưu là address Kích thước từ điển sẽ càng lớn nếu số lượng nhãngán cho từ càng nhiều, tuy nhiên ở đây chúng ta chỉ gán nhãn năm loại là:danh từ (_n), động từ (_v), tính từ (_j) và trạng từ (_r) còn các từ loại
khác đều sẽ được đưa về nhãn danh từ (_None).
Từ Kết quả các từ gần nhất
play ('playing'), ('played'), ('reprise'), ('player'), ('chorus'), ('sing'),
('soloist'), ('perform'), ('audition')
play_n ('othello_n'), ('skit_n'), ('shakespeare_n'), ('chorus_n'),
('ball_n'), ('aeschylus_n'), ('sophocles_n'), ('game_n'),('player_n'), ('opera_n')
play_v ('playing_n'), ('playing_v'), ('played_a'), ('audition_v'),
('reprise_v'), ('perform_v'), ('sing_v'), ('played_n'),('starring_a')
Trang 173 BIGRAMS
Một trong những hạn chế của thuật toán Word2Vec trong mục 1 làchúng ta chỉ có thể nhúng được cho từng từ hay còn gọi là unigram Điềunày làm cho các cụm từ như “take place”, “come true", không thể giữlại toàn vẹn ý nghĩa của mình khi được đưa vào nhúng Vì vậy, phần này
sẽ trình bày về cách nhận biết n-grams để áp dụng thuật toán Word2Veccho các n-grams đó Cụ thể chúng ta sẽ nhận biết bigrams, các n-gramslớn hơn có thể được nhận biết tương tự như bigrams
3.1 Nhận biết bigrams
Chúng ta có thể tạo bigrams đơn giản bằng cách ghép từng cặpunigram trong câu Ví dụ, với câu “I love playing with cats” sau khichuyển hoá ta được: “I_love love_playing playing_with with_cats”; cácbugrams này sẽ được đưa vào Word2Vec để học như unigram Tuy nhiên,lại có một số rắc rối với việc nhúng các bigrams này
Thứ nhất, chúng ta sẽ chỉ nhúng cho bigrams, nhưng không phảibigrams nào cũng có ý nghĩa (ví dụ như “playing_with”) và chúng tacũng không thể nhúng cho các unigram như “love”
Thứ hai, nhúng cho bigrams sẽ làm cho tập corpus của chúng tathưa hơn Quay trở lại ví dụ ở trên, bigrams “playing_with" không thườngxuyên xuất hiện trong tập corpus của chúng ta, vì vậy sẽ không có nhiềucác từ ngữ cảnh để học nhúng cho bigrams này
Để giải quyết vấn đề này, chúng ta sẽ sử dụng Normalized Pointwise Mutual Information (NPMI)1 như là một phép đo xem
bigrams này có nghĩa hay không
Trong đó: x là từ đầu tiên trong bigrams
y là từ thứ hai trong bigrams
p(a) = count(a) / count(total)
NPMI(x;y) có giá trị trong khoảng từ -1 đến 1 Giá trị NPMI(x;y) cànggần -1 thì bigrams đó càng không có ý nghĩa, ngược lại NPMI(x;y) cànggần 1 thì khả năng hai từ x, y này tạo thành bigrams càng cao