Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter

71 494 3
Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Thạc Huy TÌM HIỂU MÔ HÌNH NGÔN NGỮ SỬ DỤNG PHƯƠNG PHÁP BLOOM FILTER KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin HÀ NỘI - 2010 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Thạc Huy TÌM HIỂU MÔ HÌNH NGÔN NGỮ SỬ DỤNG PHƯƠNG PHÁP BLOOM FILTER KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin Cán hướng dẫn: TS Nguyễn Văn Vinh HÀ NỘI - 2010 Nguyễn Thạc Huy Khóa luận tốt nghiệp Tóm tắt nội dung Mô hình ngôn ngữ thành phần quan trọng ứng dụng nhận dạng tiếng nói, phân đoạn từ, dịch thống kê, … Và chúng thường mô hình hóa sử dụng n-gram Trong khóa luận này, nghiên cứu tìm hiểu mô hình ngôn ngữ xây dựng dựa cấu trúc liệu Bloom Filter Không lưu trữ toàn tập n-gram giống mô hình truyền thống, loại mô hình ngôn ngữ sử dụng quy trình mã hóa đặc biệt, cho phép chia sẻ cách hiệu bit lưu trữ thông tin thống kê n-gram, nhờ tiết kiệm đáng kể nhớ Sau tìm hiểu sơ lược mô hình ngôn ngữ, nghiên cứu hai kiểu cấu trúc liệu dựa Bloom Filter Log-Frequency Bloom Filter Bloom Map Qua thử nghiệm, ưu việt mô hình ngôn ngữ dựa Bloom Filter phương diện dung lượng tính hiệu ứng dụng thực tế, cụ thể hệ thống dịch máy phương pháp thống kê với Moses [21] i Nguyễn Thạc Huy Khóa luận tốt nghiệp Mục lục TÓM TẮT NỘI DUNG i MỤC LỤC ii LỜI CẢM ƠN iv DANH MỤC TỪ VIẾT TẮT v DANH MỤC HÌNH vi MỞ ĐẦU CHƯƠNG - Tổng quan mô hình ngôn ngữ 1.1 N-gram 1.2 Xây dựng mô hình ngôn ngữ 1.2.1 Ước lượng cực đại hóa khả (MLE) 1.2.2 Các phương pháp làm mịn 1.2.2.1 Kneser-Ney 1.2.2.2 Kneser-Ney cải tiến (Modified Kneser-Ney) 1.2.2.3 Stupid Backoff 1.3 Đánh giá mô hình ngôn ngữ 10 1.3.1 Perplexity 10 1.3.2 MSE 11 CHƯƠNG - Các cấu trúc liệu dựa Bloom Filter 13 2.1 Các cấu trúc liệu xác suất (PDS) 14 2.2 Hàm băm 16 2.3 Bloom Filter 17 2.4 Mô hình ngôn ngữ sử dụng Bloom Filter 22 2.4.1 Bloom Filter tần số log 23 ii Nguyễn Thạc Huy Khóa luận tốt nghiệp 2.4.2 Bộ lọc dựa vào chuỗi 25 2.4.3 Bloom Map 26 CHƯƠNG - Thử nghiệm: Xây dựng LM với RandLM SRILM 32 3.1 Ngữ liệu 33 3.2 Thuật toán làm mịn 35 3.3 Xây dựng LM với SRILM RandLM 35 CHƯƠNG - Thử nghiệm: Dịch máy thống kê với Moses 40 4.1 Dịch máy thống kê 40 4.1.1 Giới thiệu dịch máy thống kê 40 4.1.2 Dịch máy thống kê dựa cụm 43 4.1.3 Điểm BLEU 45 4.2 Baseline System 46 4.3 Ngữ liệu 46 4.4 Kết thử nghiệm 48 KẾT LUẬN 50 PHỤ LỤC 51 iii Nguyễn Thạc Huy Khóa luận tốt nghiệp Lời cảm ơn Trước tiên, muốn gửi lời cảm ơn chân thành tới giảng viên, TS Nguyễn Văn Vinh, cảm ơn bảo tận tình thầy suốt thời gian hướng dẫn thực tập chuyên ngành nghiên cứu khóa luận Tôi xin cảm ơn anh Tống Tùng Khánh anh Vương Hoài Thu nhóm Digital Content Solution Công ty cổ phần tin học Lạc Việt, hai anh nhiệt tình giúp đỡ với đề tài đóng góp nhiều ý kiến quý báu để khóa luận hoàn thiện Nếu hướng dẫn thầy anh, hoàn thành khóa luận Sự động viên, khích lệ bố mẹ, anh chị nguồn động lực, nguồn hỗ trợ lớn lao Và cảm ơn tất người bạn đại học chia sẻ quãng thời gian ý nghĩa đời sinh viên mái trường Đại học Công nghệ - ĐHQGHN Chúc bạn có kết tốt nghiệp tốt thành công sống iv Nguyễn Thạc Huy Khóa luận tốt nghiệp Danh mục từ viết tắt BF : Bloom Filter BF-LM : Mô hình ngôn ngữ dựa Bloom Filter LF-BF-LM : Mô hình ngôn ngữ Log-Frequency Bloom Filter LM : Mô hình ngôn ngữ MKN : Phương pháp làm mịn Kneser-Ney cải tiến MLE : Ước lượng cực đại hóa khả MSE : Lỗi trung bình bình phương MT : Dịch máy NLP : Xử lý ngôn ngữ tự nhiên PDS : Cấu trúc liệu xác suất RDS : Cấu trúc liệu ngẫu nhiên SMT : Dịch máy phương pháp thống kê v Nguyễn Thạc Huy Khóa luận tốt nghiệp Danh mục hình Hình 1: Mô hình Markov bậc Hình 2: Ví dụ hàm băm 16 Hình 3: Ví dụ bảng băm Xung đột bảng băm 17 Hình 4: Huấn luyện Bloom Filter 18 Hình 5: Truy vấn Bloom Filter 19 Hình 6: Lỗi-một-phía Bloom Filter 20 Hình 7: Tăng kích cỡ LM cải thiện điểm BLEU 42 Hình 8: Kiến trúc hệ thống SMT 43 Hình 9: Minh họa dịch máy thống kê dựa vào cụm 43 vi Nguyễn Thạc Huy Khóa luận tốt nghiệp Mở đầu Mô hình ngôn ngữ (Language Model - LM) thành phần quan trọng nhiều ứng dụng dịch máy, nhận dạng tiếng nói, … Các LM cố gắng mô ngôn ngữ tự nhiên cách xác Từ nhiều nghiên cứu thử nghiệm [19, 28], thấy mô hình ngôn ngữ với ngữ liệu lớn, bậc cao mô xác Trước việc xây dựng ngữ liệu lớn khó khăn Nhưng với bùng nổ Internet nay, khối lượng thông tin sẵn có vô lớn Sẽ thật lãng phí không tận dụng kho ngữ liệu khổng lồ Do năm gần đây, kích thước tập ngữ liệu dùng để huấn luyện LM phát triển đáng kinh ngạc, chúng lớn đến mức không lưu trữ nhớ siêu máy tính với nhiều Gigabytes nhớ RAM Điều khiến cho nỗ lực mô xác ngôn ngữ tự nhiên cách sử dụng ngữ liệu lớn với kiểu mô hình truyền thống trở nên vô nghĩa, cần phải cắt giảm kích cỡ ngữ liệu để LM chứa vừa nhớ máy tính Điều ngược lại với mục đích ban đầu việc tạo tập ngữ liệu ngày lớn Hạn chế đòi hỏi nhà nghiên cứu cần tìm phương pháp khác để mô hình hóa ngôn ngữ muốn tận dụng lợi mà ngữ liệu lớn mang lại Một giải pháp để thực yêu cầu bỏ xác, chấp nhận mát lượng thông tin định mô hình ngôn ngữ từ ngữ liệu Nghĩa thay LM không mát (losses LM), ta sử dụng LM có mát thông tin (lossy LM) Các nghiên cứu lossy LM tạo lớp loại cấu trúc liệu Cấu trúc liệu ngẫu nhiên (Randomized Data Structure, viết tắt RDS), hay gọi Cấu trúc liệu xác suất (Probabilistic Data Structure - PDS) Vài cấu trúc liệu điển hình loại Skip List [33], Sparse Partition [16], Lossy Dictionary [31], Bloom Filter [4] Ở Việt Nam có số nghiên cứu vấn đề mô hình ngôn ngữ [39], dừng lại việc sử dụng mô hình ngôn ngữ chuẩn Khóa luận nghiên cứu tìm hiểu mô hình ngôn ngữ dựa Bloom Filter cải tiến đáng ý năm gần loại cấu trúc liệu để xây dựng mô hình ngôn ngữ [35, 36, 37] Nội dung khóa luận tập trung nghiên cứu khả tiết kiệm nhớ, không gian lưu trữ loại Nguyễn Thạc Huy Khóa luận tốt nghiệp LM hiệu nó, so với LM tiêu chuẩn [34], thông qua ứng dụng cụ thể hệ thống dịch máy thống kê Moses Chương trình bày hiểu biết cần biết mô hình ngôn ngữ ngram, thuật toán làm mịn sử dụng mô hình ngôn ngữ thước đo để đánh giá mô hình ngôn ngữ Chương tập trung nghiên cứu trúc liệu dựa Bloom Filter sử dụng cho mô hình ngôn ngữ, cụ thể Log-Frequency Bloom Filter Bloom Map Chương thử nghiệm xây dựng mô hình ngôn ngữ ngữ liệu tiếng Anh ngữ liệu tiếng Việt Chương giới thiệu sơ lược dịch máy thống kê, thử nghiệm dịch máy thống kê với hệ thống dịch máy nguồn mở Moses sử dụng mô hình ngôn ngữ xây dựng chương Nguyễn Thạc Huy Khóa luận tốt nghiệp Điểm BLEU cho kết dịch với LM khác thể bảng Các mô hình ngôn ngữ xây dựng từ tập ngữ liệu Set gồm GB ngữ liệu tiếng Anh Nhìn vào kết ta thấy sử dụng mô hình 3-gram hệ thống dịch sử dụng mô hình ngôn ngữ SRI-LM có điểm cao sử dụng mô hình mô hình BF-LM Nhưng chênh lệch lớn, trường hợp SRILM cho điểm cao BloomMap-LM 3.5%, cao LF-BF-LM 4%, nên ta coi điểm số tương đương với bậc n-gram Thế nhưng, nói phần trên, với cấu hình máy tính dùng cho thử nghiệm, ta xây dựng mô hình ngôn ngữ 4-gram sử dụng BF-LM Sử dụng mô hình ngôn ngữ 4-gram BF-LM (sử dụng cấu trúc liệu Bloom Map) hệ thống dịch cho điểm số 19.93, cao rõ rệt sử dụng mô hình ngôn ngữ SRI-LM với 18.25 điểm Bảng 9: Điểm BLEU cho kết dịch với LM khác Cỡ LM Điểm BLEU SRI-LM 3-gram 893.4 MB 18.25 BloomMap-LM 3-gram 138.8 MB 17.63 LF-BF-LM 3-gram 181.5 MB 17.55 BloomMap-LM 4-gram 302.2 MB 19.93 Ta biết dung lượng LF-BF-LM rõ ràng cao BloomMap-LM Nhưng qua thử nghiệm thực tế dịch, điểm BLEU hệ thống sử dụng LF-BF-LM không cao so với sử dụng BloomMap-LM (với bậc n-gram) Thậm chí sử dụng BloomMap-LM điểm số nhỉnh chút Hơn nữa, thời gian dịch sử dụng loại mô hình có chênh lệch không lớn Nhìn vào kết này, ta thấy rõ ưu cấu trúc liệu Bloom Map so với cấu trúc liệu Log-Frequency Bloom Filter, vừa sử dụng nhớ hơn, vừa hiệu 49 Nguyễn Thạc Huy Khóa luận tốt nghiệp Kết luận Qua chương khóa luận, trình bày lý thuyết thử nghiệm mô hình ngôn ngữ xây dựng dựa hai cấu trúc liệu Bloom Filter Log-Frequency Bloom Filter Bloom Map Đây cấu trúc liệu có ưu điểm bật khả tiết kiệm đáng kể nhớ nhờ có chia sẻ bit dùng lưu trữ Tuy phải đánh đổi điều với xác suất lỗi khác 0, xác suất lỗi lại yếu tố điều khiển Từ kết thử nghiệm, ta nhận thấy mô hình ngôn ngữ Bloom Filter có hiệu xấp xỉ lossless LM chuẩn tốc độ truy vấn chậm Thế điều quan trọng cho phép ta xây dựng LM có bậc cao hơn, sử dụng ngữ liệu lớn hơn; giải yêu cầu vừa tiết kiệm tài nguyên mà tận dụng tri thức ngữ liệu lớn Trong tương lai, mong muốn tiếp tục nghiên cứu mô hình ngôn ngữ có tảng PDS áp dụng vào xây dựng hệ thống dịch máy thống kê Anh – Việt, Việt - Anh với ngữ liệu lớn Hơn nữa, việc nghiên cứu ứng dụng chúng toán khác rộng mở 50 Nguyễn Thạc Huy Khóa luận tốt nghiệp PHỤ LỤC Chương trình truy vấn RandLM GenStats.h #ifndef GENSTATS_H #define GENSTATS_H #include "RandLMParams.h" #include "RandLMTool.h" #include "RandLM.h" namespace randlm { class GenStats { public: // Constructor GenStats(int argc, char ** argv) { inParam = argv; randlm_ = NULL; test_data_ = NULL; vocab = NULL; order_ = 0; corpus_data_ = false; getcounts_ = false; outputFile = ""; assert(load()); } // Destructor ~GenStats() { delete randlm_; delete test_data_; } // Token a string into a vector static void Tokenize(const string& str, vector& tokens, const string& delimiters = ":") { 51 Nguyễn Thạc Huy Khóa luận tốt nghiệp // Skip delimiters at beginning string::size_type lastPos = str.find_first_not_of(delimiters, 0); // Find first "non-delimiter" string::size_type pos = str.find_first_of(delimiters, lastPos); while (string::npos != pos || string::npos != lastPos) { // Found a token, add it to the vector tokens.push_back(str.substr(lastPos, pos - lastPos)); // Skip delimiters Note the "not_of" lastPos = str.find_first_not_of(delimiters, pos); // Find next "non-delimiter" pos = str.find_first_of(delimiters, lastPos); } } // reads ngrams from file and writes scores them to stdout, output file bool query(); // check and format user's input vector formatTestInfo(string info); // set test info bool setTestInfo(vector testInfo); private: // load RandLM file into memory bool load(); RandLM* randlm_; // RandLM file CountRandLM* count_randlm_; // use this if return only counts TestCorpus* test_data_; // Test data Vocab* vocab; // Vocabulary info int order_; // order of LM bool corpus_data_; // input file is corpus or ngrams ? bool getcounts_; // if != NULL, return only counts char ** inParam; // argv string outputFile; // output file }; } endif // GENSTATS 52 Nguyễn Thạc Huy Khóa luận tốt nghiệp GenStats.cpp #include #include using namespace std; #include "genstats.h" #include namespace randlm { // Query bool GenStats::query() { assert(test_data_ != NULL); WordID sentence[Corpus::kMaxSentenceWords]; double start = clock(); int len = 0; int found = 0; uint64_t counter = 0; long sentenceNo = 0; bool out = false; ofstream output; // open output file for writing if(outputFile != "") { out = true; output.open (outputFile.c_str()); } // query as sentences if (corpus_data_) { while (test_data_->nextSentence(&sentence[0], &len)) { cout [...]... ( p) , chúng ta sử dụng entropy chéo trong Perplexity để không bao giờ đánh giá thấp entropy thực sự của mô hình Perplexity của một mô hình được đánh giá trên tập kiểm tra Trong thực tế, Perplexity là thước đo đầu tiên để đánh giá một mô hình ngôn ngữ, và có thể được coi là hàm của cả cả ngôn ngữ và mô hình Trên phương diện là hàm của mô hình, nó đánh giá một mô hình mô phỏng ngôn ngữ chính xác đến... dữ liệu xác suất được sử dụng rộng rãi trong NLP do sự đơn giản và hiệu quả của nó Các ứng dụng của BF có thể kể đến như trong kiểm tra chính tả, các ứng dụng cơ sở dữ liệu [12] và định tuyến mạng [6] 2.4 Mô hình ngôn ngữ sử dụng Bloom Filter Năm 2007, Talbot và Osborne lần đầu tiên giới thiệu phương pháp sử dụng một cấu trúc lưu trữ dữ liệu có mất mát như BF để mô hình ngôn ngữ, và cũng đưa ra ý tưởng...Nguyễn Thạc Huy Khóa luận tốt nghiệp Chương 1 Tổng quan về mô hình ngôn ngữ Mô hình ngôn ngữ (Language Model - LM) là các phân phối xác suất trên một ngữ liệu đơn ngữ, được sử dụng trong nhiều bài toán khác nhau của xử lý ngôn ngữ tự nhiên, ví dụ như: dịch máy bằng phương pháp thống kê, nhận dạng giọng nói, nhận dạng chữ viết tay, sửa lỗi chính tả, … Thực chất, LM là một hàm chức năng có đầu vào... trên phương diện là hàm của ngôn ngữ, nó đo tính phức tạp của ngôn ngữ 1.3.2 MSE Các mô hình LM có mất mát không đảm bảo xác suất chính xác vì nó lưu trữ dữ liệu không đầy đủ, do đó làm biến dạng phân phối xác suất thông thường Chính vì lý do này mà ta không thể sử dụng các phương pháp đo dựa trên Entropy như Perplexity để đánh giá chất lượng của mô hình Tuy nhiên chúng ta vẫn có thể sử dụng một mô hình. .. xác suất n-gram cho một chuỗi chiều dài N ta sử dụng công thức: N Pr(w1N ) ≈ ∏ Pr(w i | w ii −−1n +1 ) i =1 1.2 Xây dựng mô hình ngôn ngữ Để xây dựng (huấn luyện) một mô hình ngôn ngữ ta cần một ngữ liệu đơn ngữ (corpus) có kích thước tương đối và một bộ ước lượng thống kê có nhiệm vụ mô hình hóa lượng xác suất của ngữ liệu Các bộ ước lượng được mà LM sử dụng, theo những cách khác nhau, đều cần đến... lượng sử dụng công thức: 24 Nguyễn Thạc Huy Khóa luận tốt nghiệp b j −1 + b j − 1 E[c( x) | qc( x= ) j] ≈ 2 tiếp theo một thuật toán làm mịn sẽ được sử dụng để lấy ra lượng xác suất thực tế sẽ sử dụng trong tính toán [36] 2.4.2 Bộ lọc dựa vào chuỗi con Các mô hình ngôn ngữ n-gram chuẩn lưu trữ xác suất điều kiện của n-gram trong một ngữ cảnh cụ thể Hầu hết các mô hình ngôn ngữ này cũng lại sử dụng một... Perplexity Sau khi LM đã được huấn luyện, chúng ta cần phải đánh giá chất lượng của mô hình Cách đánh giá chính xác nhất một mô hình ngôn ngữ là kiểm tra trong thực tế Ví dụ trong nhận dạng tiếng nói, chúng ta có thể so sánh hiệu quả của 2 mô hình ngôn ngữ bằng cách chạy bộ nhận dạng ngôn ngữ 2 lần, mỗi lần với 1 mô hình và xem mô hình nào cho kết quả chính xác hơn Nhưng cách này lại rất tốn thời gian, vì... trên Bloom Filter Từ khi ra đời đến nay, việc mô hình ngôn ngữ đã có nhiều phát triển đáng kể cùng với các thuật toán làm mịn ngày càng tốt hơn [5] Thế nhưng cũng có không ít thách thức mà LM phải đối mặt Đó là làm thế nào tạo ra được mô hình đại diện hiệu quả ngôn ngữ tự nhiên, bằng cách sử dụng nhiều dữ liệu, tăng bậc mô hình n-gram (n = 6, 7, 8, …) nhưng không quá phức tạp trong tính toán và sử dụng. .. đánh giá xác suất một người bản ngữ có thể nói chuỗi đó Chính vì vậy, một mô hình ngôn ngữ tốt sẽ đánh giá các câu đúng ngữ pháp, trôi chảy cao hơn một chuỗi các từ có thứ tự ngẫu nhiên, như trong ví dụ sau: Pr(“hôm nay trời nắng”) > Pr(“trời nắng nay hôm”) 1.1 N-gram Cách thông dụng nhất được dùng để mô hình hóa ngôn ngữ vào trong LM là thông qua các n-gram Với mô hình n-gram, chúng ta coi một văn... nó xuất hiện trong ngữ liệu PrMLE (w i ) = c(w i ) ∑ i ' c(w i ' ) trong đó c(wi’) = |wi’| chính là số lần xuất hiện của từ wi’ trong ngữ liệu Phương pháp này được gọi như vậy bởi vì nó cực đại hóa giá trị đầu ra để mô hình hóa ngữ liệu huấn luyện Ví dụ, trong ngữ liệu Brown 1, một ngữ liệu với một triệu từ, từ khóa “Chinese” xuất hiện 400 lần Vậy thì xác suất mà một mô hình ngôn ngữ dùng MLE sẽ gán

Ngày đăng: 19/05/2016, 10:55

Từ khóa liên quan

Mục lục

  • TÌM HIỂU MÔ HÌNH NGÔN NGỮ SỬ DỤNG PHƯƠNG PHÁP BLOOM FILTER

    • Tóm tắt nội dung

    • Mục lục

    • Lời cảm ơn

    • Danh mục từ viết tắt

    • Danh mục hình

    • Mở đầu

    • Chương 1 Tổng quan về mô hình ngôn ngữ

      • 1.1 N-gram

      • 1.2 Xây dựng mô hình ngôn ngữ

      • 1.3 Đánh giá mô hình ngôn ngữ

      • Chương 2 Các cấu trúc dữ liệu dựa trên Bloom Filter

        • 2.1 Các cấu trúc dữ liệu xác suất (PDS)

        • 2.2 Hàm băm

        • 2.3 Bloom Filter cơ bản

        • 2.4 Mô hình ngôn ngữ sử dụng Bloom Filter

        • Chương 3 Thử nghiệm: Xây dựng LM với RandLM và SRILM

          • 3.1 Ngữ liệu

          • 3.2 Thuật toán làm mịn

          • 3.3 Xây dựng LM với SRILM và RandLM

          • Chương 4 Thử nghiệm: Hệ thống dịch máy thống kê với Moses

            • 4.1 Dịch máy thống kê

            • 4.2 Baseline system

            • 4.3 Ngữ liệu

            • 4.4 Kết quả thử nghiệm

Tài liệu cùng người dùng

Tài liệu liên quan