Gói Analysis

Một phần của tài liệu Phân tích cú pháp trong tổng hợp tiếng nói tiếng việt (Trang 66)

4.1.3.Tổ chức lưu trữ dữ liệu

4.2.3.4. Gói Analysis

4.2.3.4.1. Lớp CYKBeamSearch

Đây là lớp thực hiện phân tích cú pháp bằng giải thuật CYK kết hợp cắt tỉa beam search.

Bảng 4-15. Bảng mô tả của lớp CYKBeamSeach

Phạm vi: private

Kiểu: String

Tên: sentence Câu đầu vào.

Phạm vi: private

Kiểu: float

Tên: fRatio

Tỉ lệ loại bỏ trong cắt tỉa beam search.

Thuộc tính

Kiểu: RuleSet

Tên: ruleS Tập luật cú pháp.

Phạm vi: private

Kiểu: DefaultMutableTreeNode

Tên: rootNode

Là biến sẽ nhận kết quả trả về từ bộ phân tích cú pháp với giá trị là nút gốc của cây phân tích cú pháp. Phạm vi: private

Kiểu: ArrayList<String>

Tên: specialWord

Mảng lưu các từ đặc biệt, bao gồm danh từ riêng và số từ.

Phạm vi: private

Kiểu: ArrayList<Integer>

Tên: specialIndex

Mảng lưu vị trí các dấu câu, để sử dụng trong việc thêm nhãn

Phạm vi: private

Kiểu: ArrayList<String>

Tên: arlTree

Mảng lưu xâu đọc được từ cây cú pháp.

Phạm vi: private

Kiểu: ArrayList<Word>

Tên: arlWord Mảng lưu trữ các từ trong câu

Phạm vi: private Kiểu: ArrayList<Integer> Tên: arlSize Mảng lưu kích thước các hàng trong bảng CYK Phạm vi: private Kiểu: ArrayList<Cell> Tên: table

Danh sách các ô trong phân tích CYK. Phương thức Phạm vi: public Kiểu: void Tên+tham số: CYK(float step)

Thực hiện phân tích CYK với ngưỡng step.

Phạm vi: public

Kiểu: void

Tên+tham số: run()

Là hàm chính thực hiện công việc phân tích câu đầu vào.

Pham vi: public

Kiểu: void

Tên+tham số:

buildTree()

Dựng cây phân tích từ bảng CYK Phạm vi: public

Kiểu: void

Tên+tham số: joinCell

(int iPos1, int iPos2, Bounds bound1, Bounds bound2 )

Thực hiện việc kết hợp hai ô ở vị trí iPos1 và iPos2 trong bảng CYK.

4.2.3.4.2. Lớp AStar

Đây là lớp thực hiện phân tích cú pháp bằng thuật toán A* có sử dụng thuật toán lelightwin cơ bản.

Bảng 4-16. Bảng mô tả của lớp AStar

Thuộc tính

Kiểu: RuleSet

Tên: ruleS Tập luật cú pháp.

Phạm vi: private

Kiểu: ArrayList<Word>

Tên: arlWord Mảng lưu trữ các từ trong câu. Phạm vi: private

Kiểu: ArrayList<Integer>

Tên: specialIndex

Biến lưu vị trí các dấu câu, để dùng cho việc thêm nhãn cụm từ. Phạm vi: private Kiểu: HashMap<String, AStarElement> Tên: chart Tập CHART được sử dụng trong thuật toán A*.

Phạm vi: private

Kiểu: ArrayList<AStarElement>

Tên: agenda

Tập AGENDA được sử dụng trong thuật toán A*. Phạm vi: private

Kiểu: DefaultMutableTreeNode

Tên: node

Giống như trường hợp của CYK, đây là biến lưu giữ kết quả sau khi phân tích.

Phươn g thức

Phạm vi: public

Kiểu: void

Tên+tham số: run()

Đây là hàm chính trong class thực hiện phân tích AStar. Phạm vi: public

Kiểu: ArrayList<AStarElement>

Tên+tham số:

getCombinedElements(AStarElement e)

Hàm trả về tập phần tử được tạo ra bởi sự kết hợp của phần tử e với các phần tử trong CHART. Phạm vi: public Kiểu: float Tên+tham số: calculateOutside(AStarElement cand)

Thực hiện tính outside cho phần tử cand.

Phạm vi: public

Kiểu: AStarElement

Tên+tham số: candidate()

Trả về phần tử ứng cử viên có ước lượng cao nhất. Phạm vi: public

Kiểu: DefaultMutableTreeNode

Tên+tham số:

getNode(AStarElement a)

Trả về nhánh cây mà a làm nút gốc trong cây phân tích cú pháp đầu ra. Phạm vi: public Kiểu: DefaultMutableTreeNode Tên+tham số: getNode() Trả về biến node. Phạm vi: public Kiểu: String Tên+tham số: key(AstarElement e) Trả về khóa của phần tử e trong AGENDA. 4.2.3.4.3. Lớp LeLightWin

Đây là lớp thực hiện giải thuật lelightwin cơ bản, thực hiện công việc xử lí và trả về một tập các chuỗi kết hợp của phần tử ứng cử viên với các phần tử trong CHART.

Bảng 4-17. Bảng mô tả của lớp LeLightWin

Thuộc tính Phạm vi: private Kiểu: ArrayList<ArrayList<AStarElement>> Tên: chain

Biến để lưu kết quả của thuật toán là các chuỗi kết hợp.

Phạm vi: private

Kiểu:

ArrayList<ArrayList<AStarElement>>

Tên: leftChain

Dãy kết hợp trái của phần tử ứng cử viên Phạm vi: private

Kiểu:

ArrayList<ArrayList<AStarElement>>

Tên: rightChain

Dãy kết hợp phải của phần tử ứng cử viên Phạm vi: private Kiểu: HashMap<String, ArrayList<AStarElement>> Tên: left Tập phần tử nằm bên trái ứng cử viên sau khi đã được phân loại Phạm vi: private

Kiểu:

HashMap<String, ArrayList<AStarElement>>

Tên: right

Tập phần tử nằm bên phải ứng cử viên sau khi đã được phân loại

Phươn g thức Phạm vi: public Kiểu: void Tên+tham số: leftProcess(AStarElement elem) Hàm làm nhiệm vụ sinh ra leftChain của ứng cử viên bắt đầu tại vị trí phần tử elem Phạm vi: public Kiểu: void Tên+tham số: rightProcess(AStarElement elem) Hàm làm nhiệm vụ sinh ra rightChain của ứng cử viên bắt đầu tại vị trí phần tử elem Phạm vi: public Kiểu: void Tên+tham số: classify(AStarElement e, HashMap<String, AStarElement> ea) Hàm làm nhiệm vụ phân loại các phần tử trong CHART và lưu vào hai tập left và right. Phạm vi: public Kiểu: void Tên+tham số: generateSubChain(AStarElement e) Hàm làm nhiệm vụ tạo ra các chuỗi con kết hợp của phần tử ứng cử viên từ hai tập left và right Phạm vi: public Kiểu: ArrayList<ArrayList<AStarElement>> Hàm cuối cùng, là hàm chính trong class, làm nhiệm vụ

Tên+tham số:

getLLWChain(AStarElement e,

HashMap<String, AStarElement> chart)

quan trọng nhất: sinh ra tất cả các chuỗi kết hợp của ứng cử viên e và lưu vào chain.

4.2.3.4.4. Lớp Sentence

Đây có thể coi là lớp chính của gói phân tích câu analysis. Lớp này sẽ đảm nhận nhiệm vụ lưu trữ thông tin về một câu văn bản đầu vào, cung cấp các phương thức để phân tích cú pháp cho câu đó dựa vào tất cả các lớp ở trên.

Bảng 4-18. Bảng mô tả của lớp Sentence

Thuộc tính

Phạm vi: private

Kiểu: String

Tên: sentence

Biến lưu câu văn bản đầu vào Phạm vi: private

Kiểu: ArrayList<String>

Tên: specialWord

biến lưu các từ đặc biệt: danh từ riêng và số từ

Phạm vi: private

Kiểu: ArrayList<Integer>

Tên: specialIndex

biến lưu vị trí các dấu câu, để sử dụng trong việc thêm nhãn cụm từ Phạm vi: private

Kiểu: ArrayList<Word>

Tên: arlWord

mảng lưu trữ các từ trong câu

Phươn g thức Phạm vi: public Kiểu: void Tên+tham số: splitWord() Đảm nhận nhiệm vụ tách từ cho câu đầu vào. Kết quả trả ra file “text.txt”.

Phạm vi: public

Kiểu: void

Tên+tham số: callQTag()

Đọc dữ liệu từ file “text.txt” và thực hiện gán nhãn từ loại. Kết quả lưu trong file

“wordTagged.txt” Phạm vi: public

Kiểu: void

Tên+tham số: readWordFromFile() Đọc dữ liệu từ file “wordTagged.txt” Phạm vi: public

Kiểu: void

Tên+tham số: CYKParser()

Thực hiện phân tích CYK cho câu đầu vào, có sử dụng kết hợp beam search.

Phạm vi: public

Kiểu: void

Tên+tham số: astarParser()

Thực hiện phân tích A* cho câu đầu vào, có sử dụng kết hợp thuật toán lelighwin cơ bản.

Phạm vi: public

Kiểu: DefaultMutableTreeNode

Tên+tham số: getAStarNode Trả về kết quả phân tích của AStar

Phạm vi: public

Kiểu: DefaultMutableTreeNode

Một phần của tài liệu Phân tích cú pháp trong tổng hợp tiếng nói tiếng việt (Trang 66)

Tải bản đầy đủ (DOCX)

(89 trang)
w