Báo cáo Bài tập lớn nhập môn PDF

Title Báo cáo Bài tập lớn nhập môn
Author Tiến Mạnh Phạm
Course Nhập môn công nghệ phần mềm
Institution Trường Đại học Bách khoa Hà Nội
Pages 25
File Size 1 MB
File Type PDF
Total Downloads 123
Total Views 207

Summary

####### ĐẠI HỌC BÁCH KHOA HÀ NỘI####### KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNGBÁO CÁOMÔN: PROJECT IĐỀ TÀITÌM HIỂU VỀ WORD2VEC VÀ TEXTRANKGVHD: PGS. Nguyễn Thị Kim AnhSinh viên thực hiện: 20173100 Hoàng Thị Hảo 20173041 Nguyễn Đình Đức 20175653 Khuất Thị QuyênHà Nội, tháng 12 năm 2019MỤC LỤCPHÂN CÔ...


Description

I 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 20173041 20175653

Hà Nội, tháng 12 năm 2019

1

Hoàng Thị Hảo Nguyễn Đình Đức Khuất Thị Quyên

MỤ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

PHÂN CÔNG CÔNG VIỆC

Nguyễn Đình Đức Hoàng Thị Hảo Khuất Thị Quyên

- Xử lý bộ dữ liệu. - Viết báo cáo mục 1. - 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à 4 - 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áo cáo.

LỜ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ức tạp. Một đứa trẻ mất 2 năm để có thể bắt đầu nhận thức cũng như suy nghĩ về ngôn ngữ, vậy nếu muốn dạy cho máy tính hiểu ngôn ngữ thì ta phả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óa theo 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ận thư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ảng cá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áp Word2Vec. Không chỉ vậy, trong thời đại mà công nghệ thông tin đang ngày càng phát triển cũng như sự bùng nổ của Internet đã mang đến một lượng thô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ương pháp tóm tắt tự động có nhiều ưu thế hơn cả là TextRank.

4

1. 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 Skipgram.

1.1.1. Mô hình skip-gram Cấu trúc của mô hình skip-gram:

5

Đầu vào là one-hot-vector, mỗi từ sẽ có dạng {x1, x2,…xv}trong đó V là số chiều của từ điển, một phần tử xk có giá trị 1 tương đương với 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 W (có số chiều 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à W′ (có số chiều là NxV), hàm phát động của lớp output là softmax. Mỗi hàng của W là vector N chiều đại diện cho vw là mỗi từ trong lớp input. Mỗi hàng của W là . Lưu ý là input là một one-hot-vector 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 ui cho mỗi từ trong từ điển.

Trong đó là vector cột j trong W′. Tiếp đó ta sử dụng hàm softmax.

Trong đó và là 2 vector đại diện cho từ w đến từ ma trận W và 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 6

nê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 1.1.2. Cbow Cbow thì ngược lại so với Skip-gram, có mô hình như hình vẽ dưới đây:

1.1.3. Hierarchical softmax Hierarchical softmax sử dụng cây nhị phân để biểu diễn tất cả các từ trong từ điển. Mỗi từ là một lá trong cây. Với mỗi lá, tồn tại duy nhất một đường từ gốc tới lá này, như thế đường này sẽ được sử dụng để ước lượng xác suất mỗi từ biểu diễn bởi lá.

7

Thay vì phải đánh giá V nút output trong mạng nơron để có được 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ập nhậ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à Pn(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ác suất cho việc chọn từ ‘couch’ sẽ bằng với số lần từ ‘couch’ xuất hiện trong 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, min_alpha=0,00001, epoch=30 Trong đó: min_count là số lần xuất hiện nhỏ nhất của các từ để nó được giữ lại window là khoảng cách lớn nhất giữa từ hiện tại và từ đích trong một câu 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 8

Mộ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:

9

1.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ây dựng sẵn. Wikipedia Extractor1 là công cụ tạo một file văn bản đơn giản từ một file 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:

Nội dung của trang wikipedia.... 1 Link github: https://github.com/attardi/wikiextractor

10

Ví dụ minh họa kết quả: Input:

Armonium 2 2008-06-22T21:48:55Z Nemo bis italiano [[Immagine:Harmonium2.jpg|thumb| right|300 px]] L''''armonium'''' (in francese, ''harmonium'') è uno [[strumenti musicali| strumento musicale]] azionato con una [[tastiera (musica)|tastiera]], detta manuale. Sono stati costruiti anche alcuni armonium con due manuali. ==Armonium occidentale== Come l'[[organo (musica)|organo]], l'armonium è utilizzato tipicamente in [[chiesa (architettura)|chiesa]], per l'esecuzione di [[musica sacra]], ed è fornito di pochi registri, quando addirittura in certi casi non ne possiede nemmeno uno: il suo [[timbro (musica)|timbro]] è molto meno ricco di quello organistico e così pure la sua estensione. ... ==Armonium indiano== {{S sezione}} == Voci correlate == *[[Musica]] *[[Generi musicali]]

Output:

11

Armonium. L'armonium (in francese, “harmonium”) è uno strumento musicale azionato conuna tastiera, detta manuale. Sono stati costruiti anche alcuni armonium con due manuali. Armonium occidentale. Come l'organo, l'armonium è utilizzato tipicamente in chiesa, per l'esecuzione di musica sacra, ed è fornito di pochi registri, quando addirittura in certicasi non ne possiede nemmeno uno: il suo timbro è molto meno ricco di quello organistico e così pure la sua estensione. ...

Tuy nhiên, kết quả trả về trên chưa thể đưa vào huấn luyện. Chúng ta cần thêm một số bước xử lý sau:  Bỏ các tab  Thay các dấu câu bằng khoảng trắng (trừ các dấu câu “.”, “?”, “!”)  Bỏ các dấu xuống dòng  Bỏ các chữ số

2. POS_TAG Mỗi từ trong một ngôn ngữ nói chung có thể gắn với nhiều từ loại và việc giải thích đúng nghĩa một từ phụ thuộc vào việc nó được xác định đúng từ loại hay không. Công việc gán nhãn từ loại cho một văn bản là xác định từ loại của mỗi từ trong phạm vi văn bản đó. Khi hệ thống văn bản đã được gán nhãn, hay nói cách khác là đã được chú thích từ loại thì 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ói cũ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ở.

12

2.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 được loạ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ủa cá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ãn cho từ, Trong đó, các từ dự đoán gán nhãn và những từ trước đó đã được gá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ào gồ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ính khô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ìn qua. 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ẽ được đưa về danh từ và được ký hiệu là:_noun.

13

Sau 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 động với dữ liệu ngôn ngữ của con người. 2.1.2. Lemmatization Trong Tiếng Anh một từ có thể có những hình dạng khác nhau, như các từ chỉ quá khứ thì thêm _ed, các từ ở thời tiếp diễn thì có đuôi _ing hay các từ bất quy tắc. Tuy cách biểu diễn khác nhau nhưng đều mang một ý nghĩa, do vậy ta cần đưa các từ này về định dạng gốc của nó, nếu 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, tuy nhiê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 StopWords như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 Anh nế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”,

14

“replacement”, “self”, “manage”, “self”, “govern”, “society”, “base”, “voluntary”, “cooperative”, “institution” 2.1.4. Tách câu Bước đầu tiên của quá trình là ta cần tách đoạn văn thành những câu nhỏ thông qua các kí tự kết thúc của câu ( dấu ‘.’,’!’,’?’…). Kết quả đầu ra như sau: 1. “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. “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ấu chấ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 trong Tiếng Anh vì Tiếng Anh là ngôn ngữ đơn âm tiết nên chúng ta chỉ cần tá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”

15

2.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ẽ được tă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 từ, nếu không gán nhãn từ loại thì kích thước từ điển sau khi huấn luyện là hơn 400 nghìn từ và sau khi gán nhãn là hơn 500 nghìn từ với cùng tham 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âu vă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úng câ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ột cặ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 và address_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ãn gá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ừ play play_n play_v

Kết quả các từ gần nhất ('playing'), ('played'), ('reprise'), ('player'), ('chorus'), ('sing'), ('soloist'), ('perform'), ('audition') ('othello_n'), ('skit_n'), ('shakespeare_n'), ('chorus_n'), ('ball_n'), ('aeschylus_n'), ('sophocles_n'), ('game_n'), ('player_n'), ('opera_n') ('playing_n'), ('playing_v'), ('played_a'), ('audition_v'), ('reprise_v'), ('perform_v'), ('sing_v'), ('played_n'), ('starring_a')

16

3. 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ều nà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 Word2Vec cho các n-grams đó. Cụ thể chúng ta sẽ nhận biết bigrams, các n-grams lớ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ặp unigram trong câu. Ví dụ, với câu “I love playing with cats” sau khi chuyển hoá ta được: “I_lo...


Similar Free PDFs