Truy vấn thông tin trong tiếng nói tiếng việt

92 153 0
Truy vấn thông tin trong tiếng nói tiếng việt

Đ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

TÓM TẮT LUẬN VĂN THẠC SĨ Đề tài: Truy vấn thông tin tiếng nói tiếng Việt Tác giả luận văn: Mai Cường Thọ Khóa: 2009 Người hướng dẫn: Tiến sĩ Nguyễn Hồng Quang Nội dung tóm tắt: a) Lý chọn đề tài Cùng với tính sẵn dùng tài liệu đa phương tiện ngày gia tăng, tài liệu tiếng nói, nhu cầu tìm kiếm thông tin tài liệu đa phương tiện ngày tăng lên Trên giới có nhiều nghiên cứu có sản phẩm ứng dụng Tuy nhiên thời điểm nước ta, hệ thống truy vấn thông tin tiếng nói tiếng Việt giai đoạn nghiên cứu chưa có hệ thống thực xây dựng Với lý đó, giới thiệu đồng ý hướng dẫn tiến sĩ Nguyễn Hồng nhận đề tài b) Mục đích nghiên cứu luận văn, đối tượng, phạm vi nghiên cứu Nghiên cứu lý thuyết, xây dựng thuật toán, và/để triển khai xây dựng phần mềm “truy vấn thông tin tiếng nói tiếng Việt” Đối tượng nghiên cứu file âm ghi âm với giọng miền Trung phát âm chuẩn Các lattice file sinh module nhận dạng tiếng Việt sử dụng công cụ HTK c) Tóm tắt cô đọng nội dung đóng góp tác giả Luận văn trình bày gồm chương: Chương Giới thiệu chung lý thuyết nhận dạng, với trọng tâm mô hình Markov ẩn ứng dụng nhận dạng tiếng nói, công cụ HTK toolkit hỗ trợ xây dựng hệ nhận dạng tiếng nói liên tục từ vựng lớn Chương Giới thiệu kiến trúc chung hệ truy vấn thông tin tiếng nói yêu cầu xây dựng hệ thống Chương Trình bày chi tiết cụ thể xây dựng hệ truy vấn thông tin tiếng nói tiếng việt liên tục từ vựng lớn Bao gồm việc xây dựng kho liệu, tập truy vấn phục vụ cho toán, việc xây dựng module nhận dạng tiếng nói thuật toán xử lý lưới lập mục thuận ngược, thuật toán tìm kiếm kho mục Chương Trình bày kết luận văn, đưa chi tiết thống kê để đánh giá hiệu hệ thống, bao gồm tốc độ mục, kích thước mục, tốc độ tìm kiếm, tham số đánh giá hệ thống truy vấn  Về đóng góp tác giả: Xây dựng tập mô hình âm học hỗ trợ nhận dạng giọng tiếng nói miền Trung phát âm chuẩn; Chi tiết hóa bước thuật toán tìm kiếm; Đưa qui tắc xây dựng đồ thị so khớp ứng với truy vấn giúp việc tìm so khớp tính xác suất đễ dàng nhờ thuật toán tìm kiếm theo chiều sâu d) Phương pháp nghiên cứu - Nghiên cứu lý thuyết truy vấn thông tin tiếng nói, tìm hiểu ứng dụng HTK toolkit vào xây dựng nhận dạng - Tiến hành ghi âm để xây dựng kho liệu tiếng nói dùng làm liệu đầu vào cho hệ STD hệ nhận dạng - Xây dựng cài đặt thuật toán chương trình - Thử nghiệm đánh giá hiệu hệ thống e) Kết luận Luận văn trình bày nội dung liên quan mật thiết đến đề tài, đặc biệt luận văn đưa mô hình hệ thống chi tiết thuật toán để mục hóa tìm kiếm thông tin hệ thống truy vấn thông tin tiếng nói tiếng Việt Luận văn chưa trình bày vấn đề nâng cao hiệu hệ thống nhận dạng, nâng cao hiệu tìm kiếm Về sản phẩm luận văn tốt nghiệp chương trình truy vấn thông tin tiếng nói tiếng việt (được đặt tên viSTD) Chương trình có giao diện dễ sử dụng, hoạt động tìm kiếm cho kết tương đối tốt BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - Mai Cường Thọ TRUY VẤN THÔNG TIN TRONG TIẾNG NÓI TIẾNG VIỆT Chuyên ngành : Công nghệ thông tin LUẬN VĂN THẠC SĨ KHOA HỌC NGÀNH CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC Tiến sĩ Nguyễn Hồng Quang Hà Nội – Năm 2011 MỤC LỤC Trang DANH MỤC CÁC TỪ VIẾT TẮT DANH MỤC CÁC BẢNG ĐƯỢC SỬ DỤNG DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ LỜI CAM ĐOAN LỜI CẢM ƠN MỞ ĐẦU Lý chọn đề tài Mục đích, đối tượng phạm vi nghiên cứu 11 Tóm tắt số luận điểm đóng góp tác giả 11 Phương pháp nghiên cứu 12 CHƯƠNG TỔNG QUAN VỀ NHẬN DẠNG TIẾNG NÓI 14 1.1 Giới thiệu chung lý thuyết nhận dạng 14 1.2 Tín hiệu tiếng nói 15 1.2.1 Cơ chế tạo tiếng nói 16 1.2.2 Biểu diễn tín hiệu tiếng nói 16 1.3 Hệ thống nhận dạng tiếng nói sử dụng phương pháp nhận thống kê 18 1.4 Nhận dạng tiếng nói sử dụng mô hình markov ẩn 18 1.5 Các thành phần nhận dạng sử dụng mô hình Markov ẩn 19 1.5.1.Phân tích tham số tiếng nói 19 1.5.2 Quá trình nhận dạng tiếng nói liên tục theo mô hình Markov ẩn 20 1.5.3 Huấn luyện mô hình âm học 21 1.5.4 Huấn luyện mô hình ngôn ngữ 22 1.5.5 Từ điển phát âm 22 1.6 Ứng dụng mô hình markov ẩn nhận dạng tiếng nói 23 1.7 Tổng quan công cụ HTK ứng dụng xây dựng hệ nhận dạng 24 1.7.1 Tổng quan vê công cụ HTK 24 1.7.2 Xây dựng hệ thống nhận dạng sử dụng HTK 31 1.7.3 Bộ nhận dạng 33 CHƯƠNG TỔNG QUAN VỀ HỆ THỐNG TRUY VẤN THÔNG TIN TIẾNG NÓI 34 2.1 Giới thiệu truy vấn tiếng nói 34 2.1.1 Khái niệm 34 2.1.2 Mục đích truy vấn tiếng nói 34 2.1.3 Các công việc cần thực hệ thống STD 34 2.1.4 Đặc điểm đầu vào term tìm kiếm 35 2.1.5 Kết đầu hệ thống STD 35 2.1.6 Đánh giá chất lượng hệ thống 35 2.2 Kiến trúc chung hệ truy vấn tiếng nói 37 2.2.1 Bước tiền xử lý 37 2.2.2 Tìm kiếm thông tin mục 37 2.3 Kiến trúc số hệ thống truy vấn tiếng nói giới 37 2.3.1 Hệ thống STD BBN 39 2.3.2 Hệ thống truy vấn thông tin tiếng nói IBM 2006 42 CHƯƠNG XÂY DỰNG HỆ THỐNG TRUY VẤN TIẾNG NÓI TIẾNG VIỆT 44 3.1 Phân tích hệ thống 44 3.2 Sơ đồ tổng quan hệ thống truy vấn thông tin tiếng nói Tiếng Việt 45 3.2.1 ASR module 45 3.2.1.1 Từ điển tiếng Việt 46 3.2.1.2 Mô hình ngôn ngữ 46 3.2.1.3 Mô hình âm học 46 3.2.1.4 Bộ trích chọn tham số tiếng nói 47 3.2.1.5 Bộ giải mã HVite 47 3.2.2 Bộ lập mục 48 3.2.2.1 Cấu trúc file lưới (lattice file) 48 3.2.2.2 Thuật toán xử lý lưới lập mục thuận 50 3.2.2.3 Xử lý lưới lập mục ngược 52 3.2.3 Bộ tìm kiếm 53 3.2.3.1 Thuật toán tìm kiếm 54 3.3 Xây dựng kho liệu tiếng nói tiếng Việt phục vụ luận văn 57 3.4 Xây dựng term tìm kiếm 57 CHƯƠNG 4: KẾT QUẢ VÀ BÀN LUẬN 58 4.1 Cơ sở liệu tiếng nói 58 4.2 Kết huấn luyện mô hình âm học 59 4.3 Đánh mục 60 4.4 Về chương trình kết 61 4.5 Bàn luận 63 KẾT LUẬN VÀ KIẾN NGHỊ 65 PHỤ LỤC 67 DANH MỤC CÁC TỪ VIẾT TẮT STD- Speech Terms Detection: Truy vấn tiếng nói ASR- Automatic Speech Recognision: hệ thống nhận dạng tiếng nói SLF- Standard Littice Format: định dạng lưới chuẩn HTK HTK- The Hidden Markov Model Toolkit : công cụ dùng để xây dựng xử lý mô hình Markov ẩn phục vụ cho hệ thống nhận dạng BBN :Tên công ty BBN Technologies- công ty công nghệ cao, chuyên nghiên cứu phát triển dịch vụ NIST- National Institute of Standards and Technology: Viện nghiên cứu tiêu chuẩn công nghệ quốc gia Mỹ WER - Word Error Rate: Tỉ lệ lỗi từ WCN – Word Confusion Network: mạng lưới từ nhập nhằng WLR - Word Link Record: Bản ghi liên kết từ HMM - Hidden Markov Model: Mô hình Markov ẩn MFCC- Mel-frequency cepstral coefficient: Các hệ số đặc trưng cepstral DANH MỤC CÁC BẢNG ĐƯỢC SỬ DỤNG Bảng 1: Phiên âm số từ từ điển nhận dạng 22 Bảng 2: Kết đầu cho term tìm kiếm của BBN 41 Bảng 3: Kết hoạt động hệ thống STD BBN 41 Bảng 4: Kết loại nguồn liệu truy vấn khác BBN 42 Bảng 5: Cấu trúc từ điển phiên âm 46 Bảng 6: ý nghĩa phiên âm từ điển 46 Bảng 7: nguồn tài liệu cho huấn luyện mô hình ngôn ngữ 46 Bảng 8: Qui định ký tự thay điệu 54 Bảng 9: Thống kê thông tin người nói 58 Bảng 10: Bảng kê chi tiết số file người nói theo chủ đề dành cho huấn luyện mô hình âm học 59 Bảng 11: Bảng kê chi tiết số file người nói theo chủ đề dành cho kiểm tra59 Bảng 12: Chi tiết kết nhận dạng theo người nói 62 Bảng 13: Thống kê hiệu hệ thống 63 Bảng 14: Thống kê chi tiết kết truy vấn theo mục từ 67 DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ Hình 1: Sơ đồ trình hình thành cảm nhận tiếng nói người người nói người nghe [11, tr 17] 15 Hình 2: Bộ máy phát âm người [11, tr.17] 16 Hình 3: Sơ đồ khối máy phát âm[11, tr 17] 16 Hình 4: Biểu diễn tiếng nói miền thời gian 17 Hình 5: Biểu diễn tín hiệu miền tần số khung tín hiệu 17 Hình 6: Biểu diễn Spectrogram tín hiệu 17 Hình 7: Sơ đồ hệ thống nhận dạng tiếng nói theo phương pháp nhận dạng thống kê 18 Hình 8: Sơ đồ tổng quát hệ thống nhận dạng sử dụng mô hình Markov ẩn 18 Hình 9: Hệ thống nhận dạng sử dụng mô hình Markov ẩn 19 Hình 10: Trích chọn tham số tiếng nói 19 Hình 11: Sơ đồ tính toán hệ số MFCC 20 Hình 12: Sơ đồ huấn luyện mô hình thống kê âm học 21 Hình 13: Sơ đồ huấn luyện mô hình ngôn ngữ 22 Hình 16: Kiến trúc HTK [10, tr 15] 25 Hình 17: Bộ giải mã Hvite [10] 25 Hình 18: Các mức độ mạng nhận dạng [12] 26 Hình 19: Mạng nhận dạng cho từ nói liên tục [12] 29 Hình 20: Token ghi lại giới hạn từ [12] 29 Hình 21: Lộ trình di chuyển token [12] 30 Hình 22: Đồ thị lưới kết mức từ tạo HVite 31 Hình 23: Trích chọn thông tin tiếng nói sử dụng HCopy [10] 31 Hình 24: Khởi tạo mô hình HMM [10] 32 Hình 25: Ước lượng tham số HMM [10] 32 Hình 26: Quá trình huấn luyện đầy đủ [10] 32 Hình 27: Mạng lưới từ nhận dạng từ Yes, No [10] 33 Hình 28: Xử lý nhận dạng tín hiệu tiếng nói đầu vào chưa biết [10] 33 Hình 29: Kiến trúc chung hệ truy vấn tiếng nói 37 Hình 30: Kiến trúc hệ STD BNN 39 Hình 31: Phát cụm từ gần lattice BBN 40 Hình 32: Cầu trúc mục BBN.) 40 Hình 33: Kiến trúc hệ thống STD IBM 42 Hình 34: Kiến trúc hệ truy vấn tiếng nói tiếng Việt luận văn 45 Hình 35: Cấu trúc lưới kết 48 Hình 36: Lưới mô tả theo lưu đồ thời gian 50 Hình 37: Mô tả xử lý lưới lập mục, ví dụ loại bỏ cung bị đánh dấu chéo 51 Hình 38: Đồ thị so khớp 56 Hình 39: Giao diện chương trình kết ví dụ 61 LỜI CAM ĐOAN Tôi cam đoan kết luận văn thực hiện, số liệu thực nghiệm theo kết chương trình Nếu sai xin chịu hoàn toàn trách nhiệm LỜI CẢM ƠN Trước hết, cho phép mở đầu luận văn lời cảm ơn chân thành gửi tới quí thầy cô giáo Viện Công nghệ thông tin truyền thông, Viện đào tạo Đại học Sau đại học, Trường Đại học Bách Khoa Hà Nội tạo điều kiện giảng dạy cho kiến thức thực quí báu hữu ích thân Đặc biệt em gửi lời cảm ơn đến Tiến sĩ Nguyễn Hồng Quang hướng dẫn trợ giúp nhiệt thành việc thực luận văn tốt nghiệp em Tôi không quên cảm ơn thầy cô giáo đồng nghiệp khoa Công nghệ thông tin trường Đại học Nha Trang tạo điều kiện thời gian hỗ trợ công việc cho học thuận lợi Tôi xin cảm ơn em sinh viên trường Đại học Nha Trang hỗ trợ công việc ghi âm liệu tiếng nói Xin cảm ơn! Học viên Mai Cường Thọ HERest -B -C cfg/HERest.cfg -I mlf/wintri.mlf -t 250.0 150.0 1000.0 -s stats -S txt/atrain.scp -H hmm16/macros -H hmm16/hmmdefs -M hmm17 tiedlist bước 36 Tái ước lượng tiếp HERest -B -C cfg/HERest.cfg -I mlf/wintri.mlf -t 250.0 150.0 1000.0 -s stats -S txt/atrain.scp -H hmm17/macros -H hmm17/hmmdefs -M hmm18 tiedlist bước 37 Mixture Incrementing: tăng số hàm Gauss dùng để xấp xỉ mô hinh hmm từ lên HHEd -H hmm18/macros -H hmm18/hmmdefs -M hmm19 ins/mix2.hed tiedlist bước 38 Tái ước lượng HERest -B -C cfg/HERest.cfg -I mlf/wintri.mlf -t 250.0 150.0 1000.0 -s stats -S txt/atrain.scp -H hmm19/macros -H hmm19/hmmdefs -M hmm20 tiedlist bước 39 Tái ước lượng tiếp HERest -B -C cfg/HERest.cfg -I mlf/wintri.mlf -t 250.0 150.0 1000.0 -s stats -S txt/atrain.scp -H hmm20/macros -H hmm20/hmmdefs -M hmm21 tiedlist bước 40 Mixture Incrementing: tăng số hàm Gauss dùng để xấp xỉ mô hinh hmm từ lên HHEd -H hmm15/macros -H hmm21/hmmdefs -M hmm22 ins/mix3.hed tiedlist bước 41 Tái ước lượng HERest -B -C cfg/HERest.cfg -I mlf/wintri.mlf -t 250.0 150.0 1000.0 -s stats -S txt/atrain.scp -H hmm22/macros -H hmm22/hmmdefs -M hmm23 tiedlist bước 42 Tái ước lượng tiếp HERest -B -C cfg/HERest.cfg -I mlf/wintri.mlf -t 250.0 150.0 1000.0 -s stats -S txt/atrain.scp -H hmm23/macros -H hmm23/hmmdefs -M hmm24 tiedlist Kết thúc việc xây dựng mô hình âm học; mô hình âm học kết nằm hmm24 c Nhận dạng liệu test (1-Best) + Cú pháp: HVite –C cfg/Hvite.cfg -H hmm24/macros -H hmm24/hmmdefs -S test/test.scp -i test/recout.mlf -w txt/wdnet txt/dict.dct tiedlist + Đầu vào: Hvite.cfg ( tập tin cấu hình); hmm24/macros; hmm24/hmmdefs;test.scp (tập tin chứa danh sách file mfc cần nhận dạng); wordnet, dict, tiedlist + Đầu ra: recout.mlf (transcription nhận dạng được) Xuất kết C:\>HResults –f –t -I mlf/words.mlf tiedlist test/recout.mlf > test/result 76 d Nhận dạng liệu test (n-Best)- Sinh File lưới (*.lat) + Cú pháp: HVite -C cfg/Hvite.cfg -n -z lat -l E:/STD/ASR/lattices_4token -D -V -T -H hmm24/macros -H hmm24/hmmdefs -S test/test.scp -i test/recout.mlf -w lm/wdnet -p 0.0 -s 5.0 txt/dict.dct tiedlist 77 Mã nguồn đoạn chương trình lập mục private void btnChiMuc_Click(object sender, EventArgs e) { // Lấy thư mục chứa lattices string latticepath = Application.StartupPath + "\\ASR\\lattices_4token"; // Lấy danh sách file string[] s = Directory.GetFiles(latticepath); int N; // Biến lưu số lượng từ W[] tu; // Danh sách từ có lưu thêm thông tin khác ItemIndex idx; //Biến lưu mục mục thuận int i, fileCounter; // biến đếm string idtailieu,sfile; // chuỗi lưu định danh tài liệu //=========Phần xây dựng mục ngược============================ #region Xây dựng mục ngược, file invertindex.txt ITree IVIndex; // Cây mục ngược // Nếu chưa có file mục ngược tạo if (!File.Exists(Application.StartupPath + "\\Iindex\\invertindex.txt")) IVIndex = new ITree("Iindex\\invertindex.txt"); else { IVIndex = ITree.load(); } // Nếu có nạp vào nhớ RAM, lưu dạng nhị phân InvertIndexData item; //node liệu mục ngược for (fileCounter = 0; fileCounter < s.Length; fileCounter++) // Duyệt file cần đánh mục { //Lấy id tài liệu idtailieu = (s[fileCounter].Remove(0, latticepath.Length + 1).Replace(".lat", "")); // Kiểm tra xem tài liệu đánh mục ngược chưa // rồi, tiếp tục với file khác sfile = Application.StartupPath + "\\index\\" + idtailieu + ".txt"; if (File.Exists(sfile)) continue; // Xử lý mục từ file để xây dựng mục ngược tu = Lattice2Word_I(s[fileCounter], out N); // Hàm xử lý lưới để lấy mảng từ for (i = 0; i < N; i++) // Duyệt mục từ { item = new InvertIndexData(); // tạo mục rỗng item.tu = tu[i].wd; //cập nhật từ định danh tài liệu xuất từ 78 item.dmtailieu = idtailieu; IVIndex.InsertNode(item); // Thêm vào mục ngược } } // Hết duyệt file để đánh mục ngược // Ghi lại liệu thiết bị lưu trứ if (File.Exists(Application.StartupPath + "\\Iindex\\invertindex.txt")) File.Delete(Application.StartupPath + "\\Iindex\\invertindex.txt"); if (IVIndex.daughi == null) IVIndex.daughi = new System.IO.StreamWriter("Iindex\\invertindex.txt"); IVIndex.save(IVIndex.root); IVIndex.CloseFile(); //đóng file #endregion Chỉ mục ngược (InvertIndex) //========= Hết phần xây dựng mục ngược ======================= // ===============Phần xây dựng mục thuận===================== #region Chỉ mục file: input lattice file, output ext file Tree[] BiTree = new Tree[1500]; ////Duyet danh sach cac file for (fileCounter = 0; fileCounter < s.Length; fileCounter++) { // Lấy định danh tài liệu idtailieu = (s[fileCounter].Remove(0, latticepath.Length + 1).Replace(".lat", "")); // Ghép thành tên file mục thuận cho file lưới tương ứng sfile = Application.StartupPath + "\\index\\" + idtailieu + ".txt"; // Nếu file lưới đánh mục bỏ qua để xử lý file khác if (File.Exists(sfile)) continue; // BiTree[fileCounter] = new Tree(sfile,0); //sinh file mục thuận // Xử lý file, lấy từ mục tu = Lattice2Word(s[fileCounter], out N); // Duyệt qua danh mục từ mục tài liệu for (i = 0; i < N; i++) { idx = new ItemIndex(); // Tạo mục từ mục, //không mục từ Enter, Null, Exit idx.tu = tu[i].wd; if ((tu[i].wd.CompareTo("!NULL") != 0)) if ((tu[i].wd.CompareTo("!ENTER") != 0)) if ((tu[i].wd.CompareTo("!EXIT") != 0)) { 79 Arc goc = tu[i].arcLst.root; // đanh sách cung i while (goc != null) // cung từ { BanGhiData dt = new BanGhiData(); dt._idDoc = idtailieu; // lấy định danh tài liệu // thời gian tồn cung dt.duration = goc.data.endTime - goc.data.startTime dt.startTime = goc.data.startTime; // thời gian bắt đầu cung // điểm xác suất chuyển đổi để từ khác dt.Prob = goc.data.probabilityScore dt.startNode = goc.data.StartNode; // node bắt đầu cung dt.endNode = goc.data.EndNode; // node kết thúc cung idx.rec.addNew(dt); // Thêm vào danh sách liên kết chứa cung goc = goc.pnext; } BiTree[fileCounter].InsertNode(idx); // Chèn tử mục vào } } // hết for i: hết xử ly từ cần mục lattice file //Lưu file mục BiTree[fileCounter].Save(BiTree[fileCounter].root); BiTree[fileCounter].CloseFile(); // BiTree.PreorderTraverse(BiTree.root); } // Het xu ly cac file #endregion Hết mục thuận //============================================== Về mã nguồn chương trình tìm kiếm private void btnSearch_Click(object sender, EventArgs e) { // Lấy môc thời gian để tính thời gian tìm kiếm timertimkiem.Enabled = true; DateTime d1 = new DateTime(); d1 = DateTime.Now; dataGridView1.Rows.Clear(); // Xóa grid string ss = ""; //Danh mục tài liệu chứa câu truy vấn // -#region Xử lý mục ngược, để tìm tài liệu chứa câu truy vấn //Lấy từ câu truy vấn string[] t = Break2Term(toMyVNI(comboBox1.Text.ToLower())); // Tìm kiếm lần lược từ mục ngược IBSTree[] foundnode= new IBSTree[t.Length]; // Các node tìm thấy for (int i = 0; i < t.Length; i++) 80 foundnode[i] = invertindextree.Search(invertindextree.root, t[i]); //Kiểm tra xem có mục ngược hay chưa bool trongchimucnguoc = true; for (int i = 0; i < t.Length; i++) if (foundnode[i] == null) trongchimucnguoc = false; if (trongchimucnguoc) { int minpos = 0; int minlen = foundnode[minpos].data.dmtailieu.Length; for (int i = 1; i < foundnode.Length; i++) if (foundnode[i].data.dmtailieu.Length < minlen) { minpos = i; minlen = foundnode[i].data.dmtailieu.Length; } string[] tailieu = Break2Term(foundnode[minpos].data.dmtailieu); bool[] check = new bool[tailieu.Length]; for (int kk = 0; kk < tailieu.Length; kk++) { for (int i = 0; i < foundnode.Length; i++) if ((foundnode[i].data.dmtailieu.Contains(tailieu[kk].ToLower()))) check[kk] = true; else { check[kk] = false; break; } } for (int i = 0; i < tailieu.Length; i++) if (check[i] == true) ss += " " + tailieu[i]; } // End if, có mục ngược else MessageBox.Show("Không có mục ngược"); #endregion Hết phần xác định file mục ngượ // -#region Nạp tài liệu (file) có chứa all term truy vấn vào RAM string[] tlieu = Break2Term(ss); Tree[] cay_file = new Tree[tlieu.Length]; for (int i = 0; i < tlieu.Length; i++) { cay_file[i] = new Tree(Application.StartupPath + "\\index\\" + tlieu[i].ToLower() + ".txt", 1); cay_file[i] = Tree.Load(Application.StartupPath + "\\index\\" + tlieu[i].ToLower() + ".txt"); } #endregion Đầu ra: Tree[] cay_file; file co the chua cau truy van // #region Xử lý file (từng file): IN Vocabulary Tree[] p = new Tree[t.Length]; for (int i = 0; i < p.Length; i++) p[i] = new Tree(); 81 bool cotrongfile = true; for (int i = 0; i < cay_file.Length; i++) { for (int j = 0; j < t.Length; j++) // Tìm term, tính p { //root p lưu địa từ tìm thấy p[j].root = cay_file[i].Search(cay_file[i].root, t[j]); if (p[j].root == null) cotrongfile = false; } if (cotrongfile) { // -#region// Duyệt mảng P để xem độ hợp lý thời gian bool[] thoa = new bool[t.Length]; double x; for (int j = 0; j < t.Length - 1; j++) { thoa[j] = false; BanGhi bg0 = p[j].root.data.rec.root; BanGhi bg1 = p[j + 1].root.data.rec.root; BanGhi bgsave = bg1; while ((bg0 != null) && (!thoa[j])) { while ((bg1 != null) && (!thoa[j])) { x = bg1.data.startTime - (bg0.data.startTime + bg0.data.duration); if (((x = 0)) && (bg0.data.endNode == bg1.data.startNode)) { thoa[j] = true; } else bg1 = bg1.pnext; } bg1 = bgsave; bg0 = bg0.pnext; } } bool ketluan = true; for (int j = 0; j < t.Length - 1; j++) if (!thoa[j]) { ketluan = false; break; } #endregion // -#region Tính mảng so khớp 82 int sohang = 0, socot = 0; for (int j = 0; j < t.Length; j++) socot += p[j].root.data.rec.sobanghi; for (int j = 0; j < t.Length; j++) sohang += p[j].root.data.rec.sobanghi; msokhop = new BanGhiData[sohang, socot]; int csh = -1, csc = -1, tt = 0; BanGhi bgStart = p[0].root.data.rec.root; BanGhiData tam = new BanGhiData(); // Xây dựng ma trận khối vuông cho term // Đặc trưng có chéo lưu tin while (bgStart != null) { tam.startTime = bgStart.data.startTime; tam.Prob = bgStart.data.Prob; tam.duration = bgStart.data.duration; msokhop[tt, tt] = tam; tt++; bgStart = bgStart.pnext; } // Xây dựng chéo ma trận khối khác cho term BanGhi bgE = p[t.Length - 1].root.data.rec.root; tt = sohang - p[t.Length - 1].root.data.rec.sobanghi; while (bgE != null) { tam.startTime = bgE.data.startTime; tam.Prob = bgE.data.Prob; tam.duration = bgE.data.duration; msokhop[tt, tt] = tam; tt++; bgE = bgE.pnext; } // Xây dựng khối; từ khối term j+1 tt = 0; for (int j = 0; j < t.Length - 1; j++) { tt += p[j].root.data.rec.sobanghi; // mốc bắt đầu term j+1 BanGhi bg0 = p[j].root.data.rec.root; BanGhi bg1 = p[j + 1].root.data.rec.root; BanGhi bgsave = bg1; while ((bg0 != null)) { csh++; //bắt đầu từ hàng csc = -1; while ((bg1 != null)) 83 { csc++; // bắt đầu cột khối dành cho term j+1 x = bg1.data.startTime - (bg0.data.startTime + bg0.data.duration); if (((x = 0)) && (bg0.data.endNode == bg1.data.startNode)) { tam.startTime = bg1.data.startTime; tam.Prob = bg1.data.Prob; msokhop[csh, csc + tt] = tam; } bg1 = bg1.pnext; } bg1 = bgsave; bg0 = bg0.pnext; } } int KK = 0; #endregion so khớp // -#region xử lý mảng so khớp, để tìm path + xác suất FindPath f = new FindPath(sohang); f.setData(msokhop); double[,] xs = new double[sohang, sohang]; for (int d = 0; d < p[0].root.data.rec.sobanghi; d++) { f.DFS(d); for (int j = sohang - p[t.Length - 1].root.data.rec.sobanghi; j < sohang; j++) for (int r = 0; r < sohang - p[t.Length - 1].root.data.rec.sobanghi; r++) if (msokhop[r, j].Prob != 0) xs[d, j] = f.CalulateProb(d, j); } // Thêm vào Grid if (ketluan) { int tambd = 0, tamkt = 0; for (int j = 0; j < sohang - 1; j++) for (int r = j + 1; r < sohang; r++) if (xs[j, r] != 0) { DataGridViewRow row = new DataGridViewRow(); DataGridViewCell c1 = new DataGridViewTextBoxCell(); DataGridViewCell c2 = new DataGridViewTextBoxCell(); DataGridViewCell c3 = new DataGridViewTextBoxCell(); DataGridViewCell c4 = new DataGridViewTextBoxCell(); 84 DataGridViewCell c5 = new DataGridViewLinkCell(); DataGridViewCell c6 = new DataGridViewLinkCell(); c1.Value = tlieu[i].ToLower() + ".wav"; c2.Value = msokhop[j, j].startTime; c3.Value = msokhop[r, r].startTime + msokhop[r, r].duration; c4.Value = xs[j, r]; c5.Value = "Nghe"; c6.Value = "Nghe đoạn"; row.Cells.Add(c1); row.Cells.Add(c2); row.Cells.Add(c3); row.Cells.Add(c4); row.Cells.Add(c5); row.Cells.Add(c6); if (Convert.ToInt16(c3.Value) - Convert.ToInt16(c2.Value) > 0) if ((Math.Abs(tambd - Convert.ToInt16(c2.Value)) > 10) && (Math.Abs(tamkt - Convert.ToInt16(c3.Value)) > 10)) { dataGridView1.Rows.Add(row); tambd = Convert.ToInt16(c2.Value); tamkt = Convert.ToInt16(c3.Value); } } } // Xử lý trường hợp term tìm kiếm từ if (t.Length == 1) { int tambd = 0, tamkt = 0; for (int j = 0; j < sohang; j++) { DataGridViewRow row = new DataGridViewRow(); DataGridViewCell c1 = new DataGridViewTextBoxCell(); DataGridViewCell c2 = new DataGridViewTextBoxCell(); DataGridViewCell c3 = new DataGridViewTextBoxCell(); DataGridViewCell c4 = new DataGridViewTextBoxCell(); DataGridViewCell c5 = new DataGridViewLinkCell(); DataGridViewCell c6 = new DataGridViewLinkCell(); c1.Value = tlieu[i].ToLower() + ".wav"; c2.Value = msokhop[j, j].startTime;// c3.Value = msokhop[j, j].startTime + msokhop[j, j].duration; c4.Value = msokhop[j, j].Prob; c5.Value = "Nghe"; c6.Value = "Nghe đoạn"; 85 row.Cells.Add(c1); row.Cells.Add(c2); row.Cells.Add(c3); row.Cells.Add(c4); row.Cells.Add(c5); row.Cells.Add(c6); if (Convert.ToInt16(c3.Value) - Convert.ToInt16(c2.Value) > 0) if ((Math.Abs(tambd - Convert.ToInt16(c2.Value)) > 10) && (Math.Abs(tamkt - Convert.ToInt16(c3.Value)) > 10)) { dataGridView1.Rows.Add(row); tambd = Convert.ToInt16(c2.Value); tamkt = Convert.ToInt16(c3.Value); } } } #endregion } }// Hết for i #endregion //Xử lý file DateTime d2= new DateTime(); d2=DateTime.Now; TimeSpan dd= new TimeSpan(); dd= d2-d1; timertimkiem.Enabled = false; lblTGBD.Text = "Thời gian tìm kiếm: " + dd.ToString() + " giây"; if (dataGridView1.RowCount == 0) MessageBox.Show("Hệ thống không tìm thấy cụm từ này!", "Thông báo"); DataGridViewColumn c = dataGridView1.Columns[3]; dataGridView1.Sort(c, ListSortDirection.Descending); lblSoTermPhatHien.Text ="Xuất " + dataGridView1.RowCount.ToString() + " lần"; lblSoFilePhatHien.Text = "trong tổng số "; string chuoitam=""; string sss=""; int ttt = 0; for (int k = 0; k < dataGridView1.RowCount; k++) { sss=dataGridView1.Rows[k].Cells[0].Value.ToString(); if (!chuoitam.Contains(sss)) { ttt++; chuoitam += sss; } } lblSoFilePhatHien.Text = "trong tổng số " + ttt.ToString() + " file phát } hiện"; 86 Về Phần mềm quản lý ghi âm theo chủ đề a Giao diện chương trình + Quản lý người dùng: sử dụng để thêm người ghi âm cập nhật thôgn tin liên quan + Chọn chủ đề: Chọn chủ đề để ghi âm + Record: Bắt đầu ghi âm the nội dung đặt + Play: nghe lại file vừa ghi + Delete: Xóa file vừa ghi + Next: Chuyển sang ghi âm câu chủ đề b Phần giao diện quản lý người dùng 87 Về công cụ TextAnalyzer Text Analyzer công cụ phân tích văn online, địa http://textanalyzer.net Công cụ cho phép phân tích văn từ file đĩa cứng, từ file mạng văn nhập vào hộp văn trang web Sau nhập văn xong, nhấn nút Analyze the text cở góc trái trang web để tiến hành phân tích Kết phân tích tổng quát 88 10 từ đứng đầu có số lần xuất nhiều 89 Kết phân tích tần số, số lần xuất độ bật cụm từ Tương tự vậy, ta có kết phân tích cụm từ, từ, từ 90 ... truy vấn thông tin tiếng nói IBM 2006 42 CHƯƠNG XÂY DỰNG HỆ THỐNG TRUY VẤN TIẾNG NÓI TIẾNG VIỆT 44 3.1 Phân tích hệ thống 44 3.2 Sơ đồ tổng quan hệ thống truy vấn thông tin tiếng. .. nước ta, hệ thống truy vấn thông tin tiếng nói tiếng Việt giai đoạn nghiên cứu chưa có hệ thống thực xây dựng Nhu cầu tìm kiếm thông tin liệu tiếng nói đặc biệt với tiếng nói tiếng Việt ngày tăng... truy vấn thông tin tiếng nói tiếng Việt, giới thiệu đồng ý hướng dẫn tiến sĩ Nguyễn Hồng Quang – Viện Công nghệ thông tin Truy n thông- Đại học Bách khoa Hà Nội, nhận đề tài Truy vấn thông tin

Ngày đăng: 27/07/2017, 20:34

Mục lục

  • MC LC

  • DANH MC CÁC T VI

  • DANH MC CÁC HÌNH V VÀ  TH

  • LI CAM OAN

  • CHƠNG 1. T(NG QUAN V) NH*N DNG TI

  • CHƠNG 2. T(NG QUAN V) H THCNG TRUY V N THÔNG TIN

  • CHƠNG 3. XÂY DDNG H THCNG TRUY V N TI

  • CHƠNG 4: Kết quả và bàn luận

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

  • Đang cập nhật ...

Tài liệu liên quan