1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xử lý ngôn ngữ tự nhiên

47 232 0

Đ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

Nội dung

tin ch Sinh viên 1002 MỤC LỤC LỜI NÓI ĐẦU 1.2.1.3 (Probability) 1.2.2.2 Events (sự kiện) 1.2.2.3 Xác suất (probability) 1.2.2.4 Ước lượng Xác suất 1.2.2.5 Kỳ vọng (expectation) Phương sai (variance) 1.2.3.Lý thuyết thông tin(Information Theory) 1.2.3.1 Khái niệm 1.2.3.2 Entropy 1.2.3.3 Perplexity - Cross Entropy 1.3 Qui trình xử lý ngôn ngữ tự nhiên 10 1.3.1 Phân tích từ vựng (Lexical Analysis) 11 1.3.2 Phân tích cú pháp (Syntax Analysis) 11 1.3.3 Phân tích ngữ nghĩa (Semantic Analysis) 13 1.3.4 Các giai đoạn trình biên dịch 13 14 1.3.5.1 Topdown 14 1.3.5.2 Bottom-up 14 1.3.5.3 CYK (Cocke-Younger-Kasami) 14 1.4.Các ứng dụng ngôn ngữ tự nhiên 18 Chƣơng 2: NGỮ PHÁP TIẾNG ANH 20 2.1 Các tiếng anh 20 2.2 Cách sử dụng số 20 2.2.1 Thì đơn(The Simple Present Tense): 20 2.2.1.1 thức(Formation) 20 2.2.1.2 Cách sử dụng (The uasges) 21 1002 2.2.2 Thì tiếp diễn(The present continuous/progressive tense) 21 2.2.2.1 Hình thức(formation) 21 2.2.2.2 Cách sử dụng(The usages) 21 2.2.3 Thì hoàn thành(The Present Prefect Tense) 21 2.2.3.1 Hình thức(Formation) 21 2.2.3.2 Cách sử dụng(The usages) 22 2.2.4 Thì hoàn thành tiếp diễn (The Present Prefect continuousTense) 22 2.2.4.1 Hình thức(Formation) 22 2.2.4.2 Cách sử dụng(The usages) 22 2.2.5 Thì khứ đơn(The Simple Past Tense) 23 2.2.5.1 Hình thức(Formation) 23 2.2.5.2 cách sử dụng(The usages) 23 2.2.6 Thì khứ tiếp diễn (The Past continuous Tense) 23 2.2.6.1 Hình thức(Formation) 23 2.2.6.2 Cách sử dụng (The usages) 24 2.2.7 Thì tương lai đơn(The Simple Future Tense) 24 2.2.7.1 Hình thức(Formation) 24 2.2.7.2 cách sử dụng (The usages) 24 Chƣơng 3: CHƢƠNG TR 25 # 25 26 26 26 27 3.1.2.1 Kiểu giá trị định nghĩa trước (Predefined Value Types) 28 29 30 30 p (Loops) 31 34 34 36 40 41 41 46 47 1002 LỜI NÓI ĐẦU Xử lý ngôn ngữ tự nhiên (natural language processing - NLP) nhánh trí tuệ nhân tạo tập trung vào ứng dụng ngôn ngữ người Trong trí tuệ nhân tạo xử lý ngôn ngữ tự nhiên phần khó liên quan đến việc phải hiểu ý nghĩa ngôn ngữ - công cụ hoàn hảo tư giao tiếp Xử lý ngôn ngữ xử lý thông tin đầu vào “dữ liệu ngôn ngữ” (dữ liệu cần biến đổi), tức liệu “văn bản” hay “tiếng nói” Các liệu liên quan đến ngôn ngữ viết (văn bản) nói (tiếng nói) dần trở nên kiểu liệu người có lưu trữ dạng điện tử Đặc điểm kiểu liệu cấu trúc nửa cấu trúc chúng lưu trữ khuôn dạng cố định bảng biểu Xử lý ngôn ngữ tự nhiên lĩnh vực nghiên cứu nhằm giúp cho hệ thống máy tính hiểu xử lý ngôn ngữ người Dịch máy ứng dụng xử lý ngôn ngữ tự nhiên 1002 Chƣơng 1: 1.1 Xử lý ngôn ngữ xử lý thông tin đầu vào “dữ liệu ngôn ngữ” (dữ liệu cần biến đổi), tức liệu “văn bản” hay “tiếng nói” Các liệu liên quan đến ngôn ngữ viết (văn bản) nói (tiếng nói) dần trở nên kiểu liệu người có lưu trữ dạng điện tử Đặc điểm kiểu liệu cấu trúc nửa cấu trúc chúng lưu trữ khuôn dạng cố định bảng biểu Theo đánh giá công ty Oracle, có đến 80% liệu không cấu trúc lượng liệu loài người có [Oracle Text] Với đời phổ biến Internet, sách báo điện tử, máy tính cá nhân, viễn thông, thiết bị âm thanh,… người người tạo liệu văn hay tiếng nói Vấn đề ta xử lý chúng, tức chuyển chúng từ dạng ta chưa hiểu thành dạng ta hiểu giải thích được, tức ta tìm thông tin, tri thức hữu ích cho Giả sử có câu sau tiếng nước ngoài: - “We meet here today to talk about Vietnamese language and speech processing.” - “Aujourd'hui nous nous réunissons ici pour discuter le traitement de langue et de parole vietnamienne.” - “Mы встрачаемся здесь сегодня, чтобы говорить о вьетнамском языке и обработке речи.” Nếu có dịch, có chương trình máy tính dịch (biến đổi) chúng tiếng Việt, ta hiểu nghĩa câu là: “Hôm gặp để bàn xử lý ngôn ngữ tiếng nói tiếng Việt.” Nếu câu lưu trữ tệp tiếng Anh, Pháp, Nga Việt ta nhìn thấy trên, ta có liệu “văn bản” Nếu đọc câu này, ghi âm lại, ta chuyển chúng vào máy tính dạng tệp tín hiệu (signal) “tiếng nói” Tín hiệu sóng âm hai âm tiết tiếng Việt nhìn thấy sau: 1002 Hình 1.1 : Tín hiệu sóng âm hai âm tiêt Tiếng Việt Tuy nhiên, văn thật (một báo khoa học chẳng hạn) có đến hàng nghìn câu, ta có mà hàng triệu văn Web nguồn liệu văn khổng lồ, với thư viện điện tử − tương lai gần sách báo xưa nguồn âm chuyển hết vào máy tính (chẳng hạn chương trình nhận dạng chữ, thu nhập âm thanh, gõ thẳng vào máy) − sớm chứa toàn kiến thức nhân loại Vấn đề “xử lý” (chuyển đổi) khối liệu văn tiếng nói khổng lồ qua dạng khác để người có thông tin tri thức cần thiết từ chúng Xử lý ngôn ngữ tự nhiên ứng dụng thực tế để giải toán : nhận dạng chữ viết, nhận dạng tiếng nói, tổng hợp tiếng nói, dịch tự động, tìm kiếm thông tin, tóm tắt văn bản, khai phá liệu phát tri thức 1.2.1 1.2.1.1 Ngôn ngữ hệ thống để giao thiệp hay suy luận dùng cách biểu diễn phép ẩn dụ loại ngữ pháp theo logic, bao hàm tiêu chuẩn hay thật thuộc lịch sử siêu việt Nhiều ngôn ngữ sử dụng điệu bộ, âm thanh, ký hiệu, hay chữ viết, cố gắng truyền khái niệm, ý nghĩa, ý nghĩ, mà nhiều khía cạnh nằm sát quá, khó phân biệt 1.2.1.2 Xử lý ngôn ngữ tự nhiên (natural language processing - NLP) nhánh trí tuệ nhân tạo tập trung vào ứng dụng ngôn ngữ người Trong trí tuệ nhân tạo xử lý ngôn ngữ tự nhiên phần khó liên quan đến việc phải hiểu ý nghĩa ngôn ngữ - công cụ hoàn hảo tư giao tiếp 1002 Trí tuệ nhân tạo hay trí thông minh nhân tạo (tiếng Anh: artificial intelligence hay machine intelligence, thường viết tắt AI) trí tuệ biểu diễn hệ thống nhân tạo Thuật ngữ thường dùng để nói đến máy tính có mục đích không định ngành khoa học nghiên cứu lý thuyết ứng dụng trí tuệ nhân tạo Nhập nhằng ngôn ngữ học tượng thường gặp, giao tiếp hàng ngày người để ý đến họ xử lý tốt tượng Nhưng ứng dụng liên quan đến xử lý ngôn ngữ tự nhiên phải thao tác với ý nghĩa từ vựng mà điển hình dịch tự động nhập nhằng trở thành vấn đề nghiêm trọng Ví dụ câu cần dịch có xuất từ “đường” câu “ra chợ mua cho mẹ đường” vấn đề nảy sinh cần dịch từ road hay sugar, người xác định chúng dễ dàng vào văn cảnh dấu hiệu nhận biết khác với máy không Một số tượng nhập nhằng: Nhập nhằng ranh giới từ, Nhập nhằng từ đa nghĩa, Nhập nhằng từ đồng âm (đồng tự), Nhập nhằng từ loại Dịch máy ứng dụng xử lý ngôn ngữ tự nhiên, dùng máy tính để dịch văn từ ngôn ngữ sang ngôn ngữ khác Mặc dù dịch máy nghiên cứu phát triển 50 năm qua, xong tồn nhiều vấn đề cần nghiên cứu Ở Việt Nam, dịch máy nghiên cứu 20 năm, sản phẩm dịch máy cho chất lượng dịch nhiều hạn chế Hiện nay, dịch máy phân chia thành số phương pháp như: dịch máy sở luật, dịch máy thống kê dịch máy cớ sở ví dụ 1.2.2 X (Probability) Không gian mẫu (sự kiện sở): Ω.Tung đồng xu: Ω = {head,tail} Bầu cử: Ω = {yes/no}.Tung xúc xắc Ω = {1, ,6} Xổ số (|Ω | ≈ 107 1012).Số lượng tai nạn giao thông/năm (Ω = N) Lỗi tả (Ω = Z*), Z bảng chữ cái, Z* tập hợp chuỗi bảng chữ (|Ω | ≈kích thước vốn từ vựng) 1002 1.2.2.2 Events (sự kiện) Sự kiện A tập mẫu A Ω, tập tất A 2Ω Ω kiện chắn , Ø kiện không xảy Ví dụ : Tung đồng xu lần Ω = {HHH, HHT, HTH, HTT, THH, THT, TTH, TTT}.Tính trường hợp có lần xuất Tail A = {HTT, THT, TTH} Tất Head : A = {HHH} 1.2.2.3 Xác suất (probability) Thực thực nghiệm (experiment) nhiều lần: có bao nhiều lần kiện A xảy (“count” c1) Mỗi lần thực nghiệm gọi dãy (bộ) Thực dãy nhiều lần, ghi nhớ lại số ci Nếu thực thật thực nghiệm nhiều lần, tỉ số ci/Ti (Ti tổng số lần thực nghiệm dãy thứ i) dần tới số chưa biết Gọi giá trị Xác xuất A Kí hiệu: p(A) 1.2.2.4 Ước lượng Xác suất Cách tính sau:Từ dãy thực nghiệm :p(A) = c1/T1 Nếu thực nhiều dãy thực nghiệm: tính trung bình cộng ci/Ti 1.2.2.5 Kỳ vọng (expectation) Phương sai (variance) Kỳ vọng: tổng trọng số giá trị X, giá trị trung bình biến ngẫu nhiên Phương sai:là trung bình bình phương độ lệch (độ lệch biến X so với trung bình nó) E( X ) xp( x) x p( x)( x E ( x))2 Var ( X ) x 1.2.3.Lý thuyết thông tin(Information Theory) 1.2.3.1 Khái niệm Lý thuyết thông tin nghiên cứu về: Áp dụng công cụ toán học việc lượng hóa data cho mục đích lưu trữ truyền liệu Độ đo thông tin Entropy, số lượng bít trung bình cần thiết việc lưu trữ hay truyền liệu.Đóng vai trò quan trọng xử lý thông tin phương pháp thống kê, đặc biệt NLP 1002 1.2.3.2 Entropy Entropy độ đo thông tin Entropy ~ hỗn độn, mờ, trái nghĩa với order, Đo độ không chắn : Entropy thấp -> Đo độ không chắn thấp ; Entropy cao > Đo độ không chắn cao Trong vật lý : Entropy giảm lượng sử dụng Ký hiệu p(x) phân bố biến ngẫu nhiên X X Entropy tính sau: H(X) = - ∑ x không gian mẫu p(x) log2p(x) Đơn vị: bits (log10: nats) Kí hiệu: H(X) = Hp(X) = H(p) 1.2.3.3 Perplexity - Cross Entropy Entropy liên quan đến hiểu ngôn ngữ? Liên quan đến ko xác: vấn đề có nhiều thông tin Entropy thấp.Có nhiều mô hình -> entropy đo chất lượng mô hình? Ví dụ: mô hình mã hóa ký tự với trung bình số bít sử dụng ký tự 2.5 Đây mô hình ngôn ngữ 0-gram, đặt liên kết âm tiết sinh mô hình tốt hơn, chẳng hạn cho entropy 1.22 bít ký tự Perplexity Entropy phân bố p(X) :Hp(X)Thì giá trị 2H gọi perplexity perplexity số lượng mẫu trung bình mà biến phải lựa chọn.Perlexity bé (tức entropy bé) mô hình tốt số bít dùng để mã hóa thông tin bé Ví dụ : Cho ngựa với xác suất lựa chọn sau: Ngựa 1: 1/2 ngựa 2: 1/4 ngựa 3: 1/8 ngựa 4: 1/16 Ngựa 5: 1/64 ngựa 2: 1/64 ngựa 3: 1/64 ngựa 4: 1/64 Entropy rate Tính entropy dãy từ ngôn ngữ L H(w1, ,wn) = - W L p(W1n)log(W1n) Entropy rate coi per-word entropy.Coi ngôn ngữ trình ngẫu nhiên sản xuất dãy từ Cần quan tâm đến dãy vô hạn từ Entropy rate H(L) định nghĩa sau: H ( L) lim H (w1, , wn ) n n lim n n p(w1, , wn ) log p(w1, , wn ) L Cross Entropy Cross entropy sử dụng phân bố thật p 1002 Cross-entropy phân bố m phân bố thật p định nghĩa: H ( p, m) lim n n p(w1, , wn ) log m(w1, , wn ) L lim n log m(w1, , wn ) n (theo lý thuyết Shannon-McMillan-Breiman) Cross entropy để so sánh mô hình : H(p) ≤ H(p,m) Cross entropy H(p,m) cận entropy H(p) Mô hình m xác cross entropy H(p,m) gần với entropy H(p) Độ khác H(p,m) H(p) đo độ xác mô hình m Các công thức Cross Entropy Cross entropy biến X với phân bố xác suất p(x) phân bố m tính sau: H ( X , m) H ( X ) D( p || m) p( x) log m( x) x Chú ý:D(p||q) = ∑x p(x) log2 (p(x)/q(x)) 1.3 Qui trình xử lý ngôn ngữ tự nhiên Để máy tính hiểu thực thi chương trình viết ngôn ngữ cấp cao, ta cần phải có trình biên dịch thực việc chuyển đổi chương trình sang chương trình dạng ngôn ngữ đích Chương trình bày cách tổng quan cấu trúc trình biên dịch mối liên hệ với thành phần khác - “họ hàng” - tiền xử lý, tải soạn thảo liên kết,v.v Cấu trúc trình biên dịch mô tả chương cấu trúc mức quan niệm bao gồm giai đoạn: Phân tích từ vựng, Phân tích cú pháp, Phân tích ngữ nghĩa, Sinh mã trung gian, Tối ưu mã Sinh mã đích Nói cách đơn giản, trình biên dịch chương trình làm nhiệm vụ đọc chương trình viết ngôn ngữ - ngôn ngữ nguồn (source language) - dịch thành chương trình tương đương ngôn ngữ khác - ngôn ngữ đích (target languague) Một phần quan trọng trình dịch ghi nhận lại lỗi có chương trình nguồn để thông báo lại cho người viết chương trình Hình: Một trình biên dịch 1002 10 VD: foreach (int temp in arrayOfInts) { Console.WriteLine(temp); } foreach (int temp in arrayOfInts) { temp++; Console.WriteLine(temp); } - : : goto Label1; Console.WriteLine("This won't be executed"); Label1: Console.WriteLine("Continuing execution from here"); - eak: Ta - : - : , (caller) 1002 33 3.2 : - - ) - - 3.2.1 1002 34 : private void btnNhapcau_Click(object sender, EventArgs e) { Stream myStream = null; OpenFileDialog openFile = new OpenFileDialog(); openFile.InitialDirectory = "C:\\"; openFile.Filter = "Text file(*.txt)|*txt|All files(*.*)|*.*"; openFile.RestoreDirectory = true; if (openFile.ShowDialog() == DialogResult.OK) { try { if ((myStream = openFile.OpenFile()) != null) { using (myStream) { using (StreamReader sr = new StreamReader(openFile.FileName)) { 1002 35 txtNhapcau.Text = sr.ReadLine(); } } } } catch (Exception ea) { MessageBox.Show("Không mở file" + ea.ToString()); } } } 3.2.2 1002 36 : private void btnTachtu_Click(object sender, EventArgs e) { if (txtNhapcau.Text == "") { MessageBox.Show("Không có câu nhập"); } else { string[] cauNhap = txtNhapcau.Text.Split(); int length = cauNhap.Length; for (int i = 0; i < length; i++) { if (cauNhap[i].StartsWith("a")) { DuyetTu("a.txt", cauNhap[i], } if (cauNhap[i].StartsWith("b")) { DuyetTu("b.txt", cauNhap[i], } if (cauNhap[i].StartsWith("c")) { DuyetTu("c.txt", cauNhap[i], } if (cauNhap[i].StartsWith("d")) { DuyetTu("d.txt", cauNhap[i], } if (cauNhap[i].StartsWith("e")) { DuyetTu("e.txt", cauNhap[i], } if (cauNhap[i].StartsWith("f")) { DuyetTu("f.txt", cauNhap[i], } if (cauNhap[i].StartsWith("g")) { DuyetTu("g.txt", cauNhap[i], } if (cauNhap[i].StartsWith("h")) { DuyetTu("h.txt", cauNhap[i], } if (cauNhap[i].StartsWith("k")) { DuyetTu("k.txt", cauNhap[i], 1002 i); i); i); i); i); i); i); i); i); 37 } if (cauNhap[i].StartsWith("l")) { DuyetTu("l.txt", cauNhap[i], } if (cauNhap[i].StartsWith("m")) { DuyetTu("m.txt", cauNhap[i], } if (cauNhap[i].StartsWith("n")) { DuyetTu("n.txt", cauNhap[i], } if (cauNhap[i].StartsWith("i")) { DuyetTu("i.txt", cauNhap[i], } if (cauNhap[i].StartsWith("j")) { DuyetTu("j.txt", cauNhap[i], } if (cauNhap[i].StartsWith("o")) { DuyetTu("o.txt", cauNhap[i], } if (cauNhap[i].StartsWith("p")) { DuyetTu("p.txt", cauNhap[i], } if (cauNhap[i].StartsWith("q")) { DuyetTu("q.txt", cauNhap[i], } if (cauNhap[i].StartsWith("r")) { DuyetTu("r.txt", cauNhap[i], } if (cauNhap[i].StartsWith("s")) { DuyetTu("s.txt", cauNhap[i], } if (cauNhap[i].StartsWith("t")) { DuyetTu("t.txt", cauNhap[i], } if (cauNhap[i].StartsWith("v")) { DuyetTu("v.txt", cauNhap[i], } 1002 i); i); i); i); i); i); i); i); i); i); i); i); 38 if (cauNhap[i].StartsWith("u")) { DuyetTu("u.txt", cauNhap[i], } if (cauNhap[i].StartsWith("y")) { DuyetTu("y.txt", cauNhap[i], } if (cauNhap[i].StartsWith("z")) { DuyetTu("z.txt", cauNhap[i], } if (cauNhap[i].StartsWith("w")) { DuyetTu("w.txt", cauNhap[i], } i); i); i); i); } } } public void DuyetTu(string tudien, string cauNhap, int i) { try { using (StreamReader sr = new StreamReader(tudien)) { string line; while ((line = sr.ReadLine()) != null) { string[] dong = line.Split(); if (cauNhap == dong[0]) { Label label1 = new Label(); label1.Text = dong[0]; tlpTachtu.Controls.Add(label1, i, 0); Label label2 = new Label(); label2.Text = dong[1]; tlpTachtu.Controls.Add(label2, i, 1); } } } } catch (Exception a) { MessageBox.Show("Không đọc file", a.ToString()); } } 1002 39 3.2.3 : for (int j = 3; j < length + 1; j++) { for (int i = 0; i < length - j + 1; i++) { for (int k = 1; k < j - 1; k++) { string t = KiemtraCYK(CYKTable[i, k], CYKTable[i + k, j - k]); if (t !="") { CYKTable[i, j] = t; } } } } return CYKTable; 1002 40 3.2.4 1002 41 ) , câu : công” ) : public void NhapTu(string filename, string text, string type) { try { using(StreamWriter sw = new StreamWriter(filename, true)) { sw.WriteLine("\n" + text + " " + type); MessageBox.Show("Đã nhập thành công"); txtTu.Text = ""; txtLoai.Text = ""; } } catch(Exception loi) { MessageBox.Show("Không mở file" + loi.Message); } } 1002 42 private void btnNhap_Click(object sender, EventArgs e) { string word; string loai; word = txtTu.Text; loai = txtLoai.Text.ToUpper(); if (word.StartsWith("a")) { NhapTu("a.txt", word, loai); } if (word.StartsWith("b")) { NhapTu("b.txt", word, loai); } if (word.StartsWith("c")) { NhapTu("c.txt", word, loai); } if (word.StartsWith("d")) { NhapTu("d.txt", word, loai); } if (word.StartsWith("e")) { NhapTu("e.txt", word, loai); } if (word.StartsWith("f")) { NhapTu("f.txt", word, loai); } if (word.StartsWith("g")) { NhapTu("g.txt", word, loai); } if (word.StartsWith("h")) { NhapTu("h.txt", word, loai); } if (word.StartsWith("i")) { NhapTu("i.txt", word, loai); } 1002 43 if (word.StartsWith("j")) { NhapTu("j.txt", word, loai); } if (word.StartsWith("k")) { NhapTu("k.txt", word, loai); } if (word.StartsWith("l")) { NhapTu("l.txt", word, loai); } if (word.StartsWith("m")) { NhapTu("m.txt", word, loai); } if (word.StartsWith("n")) { NhapTu("n.txt", word, loai); } if (word.StartsWith("o")) { NhapTu("o.txt", word, loai); } if (word.StartsWith("p")) { NhapTu("p.txt", word, loai); } if (word.StartsWith("q")) { NhapTu("q.txt", word, loai); } if (word.StartsWith("r")) { NhapTu("r.txt", word, loai); } if (word.StartsWith("s")) { NhapTu("s.txt", word, loai); } if (word.StartsWith("t")) { NhapTu("t.txt", word, loai); 1002 44 } if (word.StartsWith("u")) { NhapTu("u.txt", word, loai); } if (word.StartsWith("y")) { NhapTu("y.txt", word, loai); } if (word.StartsWith("v")) { NhapTu("v.txt", word, loai); } if (word.StartsWith("w")) { NhapTu("w.txt", word, loai); } if (word.StartsWith("x")) { NhapTu("x.txt", word, loai); } if (word.StartsWith("z")) { NhapTu("z.txt", word, loai); } } 1002 45 - (Chương ) ) : Ki ,… 1002 46 TS Lê Anh Cường, Bài giảng Xử lý ngôn ngữ tự nhiên, Khoa CNTT, Đại học Công nghệ - Đại học Quốc gia Hà Nội, 2007 Christopher D Manning, Hinrich Schütze, Foundations of Statistical Natural Language Processing, The MIT Press Cambridge Massachusetts London England, (p32-55) 1999 Steve Renals, Probabilistic context-free grammars, Lecture,11- 2005 http://en.wikipedia.org/wiki/CYK_algorithm Internet 1002 47

Ngày đăng: 05/11/2016, 22:06

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w