# Từ Parser đến 层次分析: Đối sánh phân tích ngữ pháp tự nhiên và khoa học máy tính
**Canonical:** https://wiki.quizzman.com/wiki/tu-parser-den-doi-sanh-phan-tich-ngu-phap-tu-nhien-va-khoa-hoc-may-tinh
**Author:** virgoricomp_102605  |  **Published:** 2026-09-27  |  **Updated:** 2026-09-27
**Tags:** Khoa học, Ngôn ngữ, Thuật toán

> Từ Parser đến 层次分析: Đối sánh phân tích ngữ pháp tự nhiên và khoa học máy tính Phân tích ngôn ngữ tự nhiên và phân tích mã nguồn đều phải giải quyết một vấn đề cơ bản: từ một chuỗi đơn vị tuyến tính,...

# Từ Parser đến 层次分析: Đối sánh phân tích ngữ pháp tự nhiên và khoa học máy tính

Phân tích ngôn ngữ tự nhiên và phân tích mã nguồn đều phải giải quyết một vấn đề cơ bản: từ một chuỗi đơn vị tuyến tính, xác định cấu trúc và quan hệ giữa các đơn vị đó.

Trong khoa học máy tính, quá trình này được hình thức hóa bằng các khái niệm như **Lexer (bộ phân tích từ vựng)**, **Token (đơn vị từ vựng)**, **Parser (bộ phân tích cú pháp)** và **Semantic Analysis (phân tích ngữ nghĩa)**.

Trong ngôn ngữ học, các khái niệm tương ứng gồm **词法分析 (phân tích từ vựng)**, **词类 (từ loại)**, **句法分析 (phân tích cú pháp)**, **层次分析 (phân tích tầng bậc)** và **语义分析 (phân tích ngữ nghĩa)**.

Hai hệ thống không đồng nhất. Việc đối sánh chỉ nhằm làm rõ các tầng khác nhau của quá trình phân tích.

Khoa học máy tính                 Ngôn ngữ tự nhiên

Source Code                      语言材料
↓                                ↓
Lexical Analysis                 词法分析
↓                                ↓
Tokens                           词 / 词类
↓                                ↓
Parsing                          句法分析
↓                                ↓
Parse Tree / AST                 层次结构
↓                                ↓
Semantic Analysis               语义分析


Quan hệ giữa hai hệ thống nên được hiểu là **tương đồng về phương pháp phân tích**, không phải quan hệ tương đương tuyệt đối.



## 1. Từ chuỗi tuyến tính đến cấu trúc

Mã nguồn và ngôn ngữ tự nhiên đều xuất hiện dưới dạng chuỗi tuyến tính.

Mã nguồn:

a + b * c


Ngôn ngữ tự nhiên:

我 喜欢 学习 汉语


Thông tin tuyến tính chỉ cho biết thứ tự:

A → B → C → D


Nó chưa trực tiếp biểu diễn:

đơn vị nào kết hợp với đơn vị nào;
thành phần nào tạo thành một cấu trúc;
cấu trúc nào nằm trong cấu trúc lớn hơn;
quan hệ giữa các thành phần là gì.

Phân tích vì vậy phải chuyển từ **linear sequence (chuỗi tuyến tính)** sang **hierarchical structure (cấu trúc tầng bậc)**.

Linear Sequence
↓
Hierarchical Structure


Đây là điểm tương đồng cơ bản giữa parsing trong khoa học máy tính và 层次分析 trong phân tích ngữ pháp.



## 2. Lexer và 词法分析: nhận diện đơn vị

Trong compiler, Lexical Analysis nhận một chuỗi ký tự và phân chia nó thành các Token.

Characters
↓
Lexical Analysis
↓
Tokens


Ví dụ:

value + 10


có thể được phân tích thành:

IDENTIFIER("value")
PLUS("+")
INTEGER(10)


Trong phân tích ngôn ngữ tự nhiên, 词法分析 cũng phải xác định các đơn vị từ vựng và thuộc tính của chúng.

Ví dụ:

我喜欢学习汉语


có thể được phân chia:

我 / 喜欢 / 学习 / 汉语


và xác định 词类:

我       代词
喜欢     动词
学习     动词
汉语     名词


Có thể đối sánh ở mức phương pháp:

Lexical Analysis  ≈  词法分析
Token             ≈  词法单位
Token Category    ≈  词类


Dấu `≈` biểu thị sự tương đồng phục vụ phân tích, không biểu thị hai khái niệm hoàn toàn đồng nhất.



## 3. Token và 词类 không xác định toàn bộ cấu trúc

Biết loại của từng Token chưa đủ để xác định cấu trúc của chương trình.

Tương tự, biết 词类 của từng từ chưa đủ để xác định cấu trúc của câu.

Một chuỗi:

Noun + Verb + Noun


chỉ mô tả một **Pattern (mẫu cấu trúc)** trên bề mặt.

Nó chưa tự xác định:

Noun
├── ?
Verb
├── ?
Noun


cũng chưa xác định quan hệ ngữ nghĩa giữa ba đơn vị.

Trong ngôn ngữ tự nhiên, cùng một từ còn có thể thuộc nhiều từ loại hoặc có chức năng khác nhau tùy môi trường sử dụng. Việc xác định từ loại vì vậy cũng có thể phụ thuộc vào cấu trúc lớn hơn.

Phân loại đơn vị là điều kiện cần cho phân tích, nhưng không phải kết quả cuối cùng của phân tích.



## 4. Parser và 句法分析: xác định cấu trúc

Trong khoa học máy tính, Parser sử dụng Grammar để xác định cách các Token kết hợp thành cấu trúc.

Tokens
↓
Parser
↓
Syntactic Structure


Trong ngôn ngữ học, 句法分析 xác định quan hệ cấu trúc giữa các đơn vị của câu.

词
↓
句法分析
↓
句法结构


Có thể đối sánh:

Parser / Parsing  ≈  句法分析


Điểm chung nằm ở câu hỏi:

Các đơn vị đang đứng cạnh nhau được tổ chức thành cấu trúc như thế nào?

Một chuỗi tuyến tính không tự cung cấp câu trả lời cho câu hỏi này. Phân tích cú pháp phải xác định ranh giới và quan hệ giữa các thành phần.



## 5. Parse Tree và 层次分析: biểu diễn quan hệ tầng bậc

**Parse Tree (cây phân tích cú pháp)** biểu diễn cấu trúc tầng bậc được Parser xác định.

Trong phân tích ngôn ngữ tự nhiên, 层次分析 cũng phân chia một cấu trúc lớn thành các thành phần trực tiếp, sau đó tiếp tục phân tích các thành phần nhỏ hơn.

Mô hình tổng quát:

Structure
/       \
Unit A     Structure
/      \
Unit B    Unit C


Điều quan trọng không nằm ở hình dạng của cây, mà ở thông tin mà cây biểu diễn:

A + B + C


không nhất thiết có cấu trúc:

(A + B) + C


mà cũng có thể là:

A + (B + C)


Hai cách phân tầng tạo ra hai cấu trúc khác nhau.

Có thể đối sánh:

Parse Tree        ≈  层次结构的形式表示
Parsing           ≈  层次关系的识别


Tuy nhiên, 层次分析 không phải AST của ngôn ngữ tự nhiên. Hai khái niệm chỉ cùng chia sẻ nguyên tắc biểu diễn cấu trúc theo tầng bậc.



## 6. AST và sự trừu tượng hóa cấu trúc

**Abstract Syntax Tree – AST (cây cú pháp trừu tượng)** giữ lại những quan hệ cấu trúc cần thiết và loại bỏ một phần chi tiết hình thức.

Ví dụ:

a + b * c


có thể được biểu diễn:

Add
├── a
└── Multiply
├── b
└── c


Giá trị của AST nằm ở việc biến một chuỗi tuyến tính thành một mô hình có quan hệ rõ ràng.

Trong phân tích ngôn ngữ tự nhiên cũng có nhu cầu tương tự. Một câu không chỉ được mô tả bằng thứ tự từ mà còn bằng cấu trúc và quan hệ giữa các thành phần.

Vì vậy, AST có thể được sử dụng như một **phép đối chiếu về phương pháp biểu diễn**, nhưng không phải một mô hình tương đương hoàn toàn với cấu trúc cú pháp của ngôn ngữ tự nhiên.



## 7. Grammar Rule và 语法规则

Trong khoa học máy tính, **Grammar Rule (quy tắc ngữ pháp hình thức)** xác định những cấu trúc mà Parser được phép xây dựng.

Ví dụ:

Expression → Expression + Expression


cho phép hai Expression kết hợp thông qua toán tử `+`.

Trong ngôn ngữ học, **语法规则 (quy tắc ngữ pháp)** cũng mô tả cách các đơn vị có thể kết hợp và đảm nhiệm chức năng trong cấu trúc lớn hơn.

Hai loại rule có thể được đối sánh ở chức năng mô hình hóa:

Grammar Rule  ≈  语法规则


Nhưng nguồn gốc của chúng khác nhau.

Trong một programming language:

Specification
↓
Grammar
↓
Valid Structure


Trong nghiên cứu natural language:

Language Data
↓
Observation
↓
Generalization
↓
Grammatical Description


Grammar của ngôn ngữ lập trình thường là một bộ phận của specification. Grammar mô tả của ngôn ngữ tự nhiên chủ yếu là mô hình được xây dựng từ dữ liệu ngôn ngữ.



## 8. Pattern không phải Grammar Rule

**Pattern (mẫu cấu trúc)** là một dạng hình thức có thể quan sát được trong dữ liệu.

Ví dụ tổng quát:

A + B + C


chỉ cho biết ba thành phần xuất hiện theo một thứ tự nhất định.

Nếu nhiều trường hợp có dạng tương tự, người phân tích có thể đặt giả thuyết rằng chúng tuân theo cùng một cấu trúc:

A + [B + C]


Tuy nhiên, Pattern không tự chứng minh giả thuyết đó.

Cần phân biệt:

Observed Pattern
↓
Structural Hypothesis


với:

Observed Pattern
≠
Proven Structure


Trong khoa học máy tính, Parser có thể dựa trên một Grammar đã được xác định trước.

Trong nghiên cứu ngôn ngữ tự nhiên, chính Grammar thường là kết quả cần được mô tả hoặc kiểm chứng từ dữ liệu.

Đây là một khác biệt phương pháp luận quan trọng giữa hai lĩnh vực.



## 9. Candidate Structure: cấu trúc cần được kiểm tra

Từ một Pattern có thể hình thành một hoặc nhiều **Candidate Structure (cấu trúc ứng viên)**.

Ví dụ một chuỗi:

A B C


có thể có các Candidate Structure:

[A B] C


hoặc:

A [B C]


Thậm chí một số hệ thống phân tích còn có thể đưa ra những quan hệ không thể biểu diễn đầy đủ chỉ bằng hai cách chia trên.

Do đó:

Surface Pattern
↓
Candidate Structures
↓
Analysis


Việc một Candidate Structure có thể được vẽ thành cây chỉ chứng minh rằng **ta đã xây dựng được một mô hình cấu trúc**.

Nó chưa chứng minh mô hình đó phản ánh đúng các quan hệ trong dữ liệu ngôn ngữ.



## 10. Syntactic Ambiguity và 句法歧义

**Syntactic Ambiguity (mơ hồ cú pháp)** xuất hiện khi một biểu thức có thể được phân tích thành nhiều cấu trúc cú pháp.

Trong tiếng Trung, thuật ngữ tương ứng là **句法歧义 (mơ hồ cú pháp)**.

Mô hình tổng quát:

Input
├── Parse A
└── Parse B


Hai cách parse có thể sử dụng cùng:

từ;
thứ tự từ;
từ loại;

nhưng tạo ra các quan hệ cấu trúc khác nhau.

Do đó:

Same Tokens
≠
Same Structure


và:

Same Surface Pattern
≠
Unique Analysis


层次分析 có vai trò xác định các khả năng cấu trúc này. Tuy nhiên, cấu trúc cú pháp chưa phải tầng cuối cùng của quá trình phân tích.



## 11. Semantic Analysis và 语义分析

Trong compiler, Semantic Analysis kiểm tra các điều kiện mà Parser không thể xác nhận chỉ bằng cấu trúc cú pháp.

Ví dụ:

"hello" - 5


có thể tạo được cấu trúc:

Subtract
├── String
└── Integer


nhưng vẫn bị bác bỏ nếu toán tử `-` không được định nghĩa cho `String`.

Trong ngôn ngữ học, **语义分析 (phân tích ngữ nghĩa)** cũng kiểm tra thông tin mà cấu trúc hình thức đơn thuần chưa thể biểu đạt đầy đủ.

Một phân tích cú pháp phải được đối chiếu với các câu hỏi như:

thành phần nào mô tả thành phần nào;
hành động liên hệ với đối tượng nào;
thuộc tính được gán cho thực thể nào;
các thành phần có tương thích về nghĩa hay không;
cách phân tầng có bảo toàn cách hiểu của câu hay không.

Có thể đối sánh ở mức phương pháp:

Semantic Analysis  ≈  语义关系与语义限制的分析




## 12. Semantic Relations và 语义关系

**Semantic Relations (quan hệ ngữ nghĩa)** mô tả quan hệ về nghĩa giữa các thành phần trong một cấu trúc. Trong tiếng Trung có thể gọi là **语义关系 (quan hệ ngữ nghĩa)**.

Một cấu trúc cú pháp không chỉ cần xác định:

A kết hợp với B


mà còn cần giải thích:

A có quan hệ gì với B?


Hai cây có hình thức hợp lệ có thể biểu diễn hai quan hệ khác nhau.

Vì vậy, phân tích ngữ pháp không chỉ là bài toán:

Words
↓
Tree


mà còn bao gồm:

Words
↓
Structure
↓
Relations


Cây là phương tiện biểu diễn cấu trúc, không phải bằng chứng độc lập cho tính đúng đắn của cấu trúc đó.



## 13. Semantic Constraints và 语义限制

Trong khoa học máy tính, một node có thể đứng ở vị trí hợp lệ về syntax nhưng không đáp ứng semantic constraint.

Ví dụ:

Subtract
├── String
└── Integer


có hình dạng cú pháp hợp lệ nhưng có thể vi phạm yêu cầu về type.

Trong ngôn ngữ tự nhiên cũng tồn tại **语义限制 (ràng buộc ngữ nghĩa)** đối với sự kết hợp giữa các thành phần.

Một Predicate có thể yêu cầu đối tượng mà nó mô tả phải có một số đặc tính ngữ nghĩa nhất định. Một Verb cũng có thể đặt điều kiện đối với các thành phần tham gia vào quan hệ mà nó biểu thị.

Có thể mô hình hóa:

Syntactic Position
↓
Semantic Requirement
↓
Compatible / Incompatible


Phép đối sánh này không có nghĩa semantic constraint của compiler và 语义限制 của natural language là cùng một cơ chế. Điểm chung nằm ở nguyên tắc:

**Khả năng xuất hiện trong một cấu trúc hình thức không tự động bảo đảm tính tương thích về ngữ nghĩa.**



## 14. Vì sao Pattern không đủ để xác nhận một phân tích?

Pattern chỉ cung cấp bằng chứng về hình thức.

Giả sử quan sát được:

A + B + C


Một cách phân tích đề xuất:

A + [B + C]


Để chấp nhận cấu trúc này, ít nhất phải xác định được:

1. B và C có tạo thành một constituent hay không?
2. Rule nào cho phép cấu trúc đó?
3. B và C có quan hệ cú pháp gì?
4. B và C có quan hệ ngữ nghĩa gì?
5. Cấu trúc này có bảo toàn interpretation của toàn biểu thức hay không?


Do đó:

Pattern Match
↓
Candidate Structure
↓
Syntactic Analysis
↓
Semantic Analysis


khác với:

Pattern Match
↓
Conclusion


Một nhãn ngữ pháp cũng không thể tự chứng minh cấu trúc mà nhãn đó giả định. Cấu trúc phải được xác lập bằng quan hệ giữa các thành phần.



## 15. Pattern + Structure + Semantics

Một mô hình phân tích đầy đủ hơn có thể biểu diễn:

Form
↓
Pattern
↓
Candidate Structure
↓
Syntactic Relations
↓
Semantic Relations
↓
Interpretation


Mỗi tầng trả lời một câu hỏi khác nhau.

**Form (hình thức)**:

Những đơn vị nào xuất hiện?

**Pattern (mẫu cấu trúc)**:

Chúng có hình thức phân bố như thế nào?

**Structure (cấu trúc)**:

Chúng được tổ chức theo tầng bậc nào?

**Syntactic Relations (quan hệ cú pháp)**:

Các thành phần có chức năng và quan hệ cú pháp gì?

**Semantic Relations**:

Các thành phần liên hệ với nhau về nghĩa như thế nào?

**Interpretation (cách hiểu)**:

Toàn bộ cấu trúc được hiểu như thế nào trong ngữ cảnh?

Không tầng nào có thể được suy ra hoàn toàn chỉ từ tên gọi của tầng trước.



## 16. Bảng đối sánh

Các khái niệm chính có thể được tổng hợp như sau:

| Khoa học máy tính | Phân tích ngôn ngữ | Điểm đối sánh |
|---|---|---|
| Source Code (mã nguồn) | 语言材料 (ngữ liệu) | Dữ liệu đầu vào |
| Lexical Analysis (phân tích từ vựng) | 词法分析 (phân tích từ vựng) | Nhận diện đơn vị |
| Token (đơn vị từ vựng) | 词 / 词法单位 (từ / đơn vị từ vựng) | Đơn vị được phân tích |
| Token Category (loại token) | 词类 (từ loại) | Phân loại đơn vị |
| Parser (bộ phân tích cú pháp) | 句法分析 (phân tích cú pháp) | Xác định cấu trúc |
| Parse Tree (cây phân tích cú pháp) | 层次结构 (cấu trúc tầng bậc) | Biểu diễn quan hệ tầng bậc |
| AST (cây cú pháp trừu tượng) | Mô hình cấu trúc trừu tượng | Lược bỏ chi tiết không cần thiết |
| Grammar Rule (quy tắc ngữ pháp hình thức) | 语法规则 (quy tắc ngữ pháp) | Mô tả khả năng kết hợp |
| Syntactic Ambiguity (mơ hồ cú pháp) | 句法歧义 (mơ hồ cú pháp) | Nhiều cấu trúc cho cùng biểu thức |
| Semantic Analysis (phân tích ngữ nghĩa) | 语义分析 (phân tích ngữ nghĩa) | Kiểm tra quan hệ về nghĩa |
| Semantic Constraint (ràng buộc ngữ nghĩa) | 语义限制 (ràng buộc ngữ nghĩa) | Điều kiện đối với sự kết hợp |

Các cặp trong bảng là **đối sánh phương pháp**, không phải định nghĩa tương đương.



## 17. Giới hạn của phép đối sánh

Programming language là hệ thống được thiết kế. Natural language là hệ thống hình thành và biến đổi trong quá trình sử dụng của cộng đồng ngôn ngữ.

Compiler thường có thể hỏi:

Cấu trúc này có phù hợp với specification không?


Ngôn ngữ học thường phải hỏi:

Dữ liệu này cho thấy hệ thống đang vận hành như thế nào?


Vì vậy, trong khoa học máy tính:

Grammar
↓
Parser
↓
Accepted / Rejected


Trong nghiên cứu ngôn ngữ tự nhiên, quan hệ thường phức tạp hơn:

Data
↓
Possible Analysis
↓
Comparison
↓
Generalization
↓
Grammatical Model


Ngữ pháp mô tả không phải mã nguồn của ngôn ngữ tự nhiên. Nó là mô hình được xây dựng để giải thích dữ liệu ngôn ngữ.

Phép đối sánh với compiler có giá trị ở **phương pháp phân tầng vấn đề**, không phải ở việc đồng nhất hai hệ thống.



## 18. Tổng kết: Form → Pattern → Structure → Semantics

Phân tích một biểu thức không kết thúc ở việc nhận ra một Pattern.

Mô hình tổng quát là:

Form
↓
Pattern
↓
Candidate Structure
↓
Syntactic Relations
↓
Semantic Relations
↓
Interpretation


Từ góc nhìn này, có thể thiết lập ba nguyên tắc:

Pattern ≠ Structure
Structure ≠ Semantic Validity
Possible Analysis ≠ Established Analysis


Một Pattern cung cấp cơ sở để đề xuất cấu trúc. Cấu trúc phải được kiểm tra bằng quan hệ cú pháp. Quan hệ cú pháp tiếp tục phải được đối chiếu với quan hệ và ràng buộc ngữ nghĩa.

Đây là điểm giao nhau quan trọng nhất giữa phương pháp phân tích của compiler và phương pháp phân tích ngữ pháp tự nhiên.

Bài tiếp theo sẽ áp dụng khung phân tích này vào một vấn đề cụ thể của ngữ pháp tiếng Hán: **主谓谓语句 (câu có vị ngữ chủ-vị)** — cách xác định cấu trúc, phạm vi của thuật ngữ và những cách phân tích khác nhau trong nghiên cứu ngữ pháp hiện đại.