3.5.1.5. Linguistic Features#

In NLP, there are some linguistic features that provide additional information:

  • Part-of-speed (POS)

  • Named Entities

  • Syntactic strcutures: constituency trees, dependency trees

3.5.1.5.1. POS tags#

POS Tagging là quá trình gán nhãn (label) loại từ cho mỗi từ trong một câu, ví dụ như danh từ (N), động từ (V), tính từ (ADJ), trạng từ (ADV), giới từ (PREP), liên từ (CONJ), v.v.

Mục tiêu: Từ một chuỗi các từ, dự đoán lớp từ tương ứng sao cho phản ánh đúng ngữ pháp và ngữ nghĩa trong ngôn ngữ đó.

Categorizes words by their grammatical roles (e.g., noun, verb), follow by the Standardizes tags across languages Universal POS Tagset


A. Ý nghĩa của việc phân tích POS trong NLP

  1. Hiểu cấu trúc ngôn ngữ

  • Mỗi từ trong câu có một vai trò ngữ pháp và ý nghĩa ngữ dụng khác nhau (danh từ, động từ, tính từ, trạng từ, v.v.).

  • Việc nhận diện chính xác POS giúp mô hình “hiểu” được bối cảnh cơ bản về cấu trúc, từ đó cải thiện độ chính xác trong các tác vụ phức tạp hơn (như phân tích ngữ nghĩa, nhận diện thực thể, trích chọn thông tin,…).

  • Xác định loại từ là bước cơ bản và cần thiết trong nhiều ứng dụng NLP phức tạp hơn, ví dụ:

    • Parsing: Xây dựng cây phân tích cú pháp (syntactic parsing).

    • Dịch máy: Hỗ trợ xác định cấu trúc ngữ pháp, lựa chọn từ tương ứng chính xác.

    • Trích xuất thông tin: Hỗ trợ nhận diện và phân loại từ, cụm từ đặc biệt.

  • POS Tagging giúp máy tính hiểu được chức năng ngữ pháp của từ trong câu, từ đó xử lý ngôn ngữ hiệu quả hơn.

  1. Cải thiện chất lượng cho các bài toán NLP

  • Tách từ (tokenization) và gắn nhãn POS thường là bước xử lý đầu tiên trong pipeline NLP, làm đầu vào cho các bài toán khác như phân tích cú pháp (parsing), phân loại văn bản, sinh ngôn ngữ (text generation), hay dịch máy (machine translation).

  • POS tags giúp mô hình nắm rõ loại từ, từ đó giảm nhiễu, đặc biệt quan trọng với các ngôn ngữ giàu hình thái (như tiếng Việt có hiện tượng biến đổi dấu câu, hoặc tiếng Anh có dạng số ít/số nhiều,…).

  1. Tiết kiệm tài nguyên huấn luyện

  • Có thông tin POS, mô hình có thể “kế thừa” một phần tri thức ngôn ngữ mang tính quy tắc, thay vì phải tự học từ đầu tất cả các hiện tượng ngôn ngữ qua dữ liệu “thô”.

  • Giảm gánh nặng cho mô hình khi phải “học” quá nhiều, nhất là đối với các mô hình nhỏ, dữ liệu ít.


B. Phương pháp

  • Thống kê cổ điển (HMM, CRF): Các mô hình ẩn Markov (HMM) và Mô hình trường ngẫu nhiên có điều kiện (CRF) dựa vào xác suất chuyển tiếp giữa các nhãn và xác suất quan sát từ để dự đoán nhãn POS.

  • Học sâu (Deep Learning): Các mô hình mạng nơ-ron (RNN, LSTM, BiLSTM, Transformers) kết hợp với embeddings (như Word2Vec, GloVe, hay contextual embeddings như BERT) cũng có thể được huấn luyện để gán nhãn POS một cách chính xác hơn, nhất là với những ngôn ngữ giàu ngữ cảnh như tiếng Việt.


C. Thời điểm và trường hợp cần sử dụng POS

  1. Phân tích cú pháp (Syntax Parsing)

  • Kết quả của POS sẽ được dùng trực tiếp để xây dựng cây phân tích cú pháp, định hướng mô hình phân tích xem từ nào làm chủ ngữ, động từ nào là vị ngữ, bổ ngữ ở đâu, v.v.

  1. Các bài toán suy luận ngôn ngữ

  • Gán nhãn POS giúp bóc tách vai trò ngữ pháp, hỗ trợ mô hình suy luận logic/phân tích ý nghĩa.

Ví dụ, khi áp dụng POS trong chatbot hoặc QA system, mô hình sẽ nhận diện động từ chính (main verb) để xác định hành động trong câu, hoặc tìm danh từ chính để xác định đối tượng, từ đó cải thiện độ chính xác.

  1. Trích xuất từ khóa, tóm tắt văn bản

  • Trong trích xuất các cụm từ quan trọng, đôi khi ta ưu tiên tập trung vào danh từ, tính từ hay động từ đặc thù. Sử dụng POS tag giúp lọc nhanh những từ có ý nghĩa chính.

  1. Tiền xử lý cho Named Entity Recognition (NER)

  • Phân tích POS song song với phân tích thực thể để mô hình không nhầm lẫn giữa danh từ riêng (tên người, địa danh) và danh từ chung.

  1. Khi làm việc với các ngôn ngữ nhiều biến đổi (rich morphology)

  • Như tiếng Việt có hiện tượng từ đa nghĩa thay đổi vai trò dựa trên dấu hay vị trí trong câu, tiếng Pháp, tiếng Đức, tiếng Nga, v.v. Nắm bắt POS kèm đặc trưng hình thái (ngôi, số, thời, giống đực/cái,…) là rất quan trọng.

Tuy nhiên, trong một số mô hình ngôn ngữ hiện đại (như BERT, GPT, Transformer-based models), quá trình huấn luyện end-to-end trên lượng dữ liệu lớn có thể “ngầm” học được POS. Vẫn có những tình huống không nhất thiết bắt buộc gắn nhãn POS thủ công, mà sử dụng luôn mô hình pretrained. Song, nếu có POS, quá trình fine-tuning hoặc các bước hậu xử lý vẫn được hưởng lợi rõ rệt.


D. Best Practices khi phân tích POS

  1. Chọn hoặc xây dựng bộ gán nhãn phù hợp

  • Tuân theo chuẩn như Penn Treebank Tagset, Universal Dependencies (UD), hoặc bộ tagset chuẩn hóa của ngôn ngữ cụ thể (VD: VnTreeBank cho tiếng Việt).

  • Mức độ chi tiết của bộ tag (chỉ POS cơ bản hay kèm attributes mở rộng) nên thống nhất xuyên suốt dự án.

  1. Sử dụng mô hình POS hiện đại (neural network-based)

  • Nếu có điều kiện, nên sử dụng mô hình gán nhãn POS dựa trên mạng LSTM/CRF hoặc Transformer-based đã pretrained (chẳng hạn spaCy, Stanza, hay VnCoreNLP cho tiếng Việt).

  • Độ chính xác có thể cao hơn nhiều so với các phương pháp dựa trên quy tắc (rule-based) hay HMM cũ.

  1. Huấn luyện trên dữ liệu đa dạng, có chất lượng

  • Dữ liệu huấn luyện POS cần được gán nhãn thủ công chuẩn, thể hiện đầy đủ các kiểu câu, bối cảnh, phong cách ngôn ngữ.

  • Tránh hiện tượng “overfitting” vào một domain hoặc văn phong hẹp (ví dụ chỉ có tin tức báo chí, thiếu văn bản mạng xã hội, thiếu văn bản chính thống,…).

  1. Kiểm tra và hiệu chỉnh liên tục (error analysis)

  • Xác định các loại lỗi thường gặp (ví dụ: từ đồng hình đồng âm – “chạy” vừa là động từ, vừa có thể hiểu khác trong ngữ cảnh nào đó).

  • Điều chỉnh mô hình (thêm dữ liệu, tăng cường quy tắc, bổ sung tính năng ngữ cảnh) để cải thiện.

  1. Cân nhắc việc tinh chỉnh POS cho bài toán cụ thể

  • Nếu bài toán phân loại văn bản chỉ quan tâm đến danh từ, động từ, tính từ, có thể gộp một số thẻ tương tự nhau để giảm độ phức tạp.

  • Nếu bài toán yêu cầu chi tiết dạng “danh từ số ít/số nhiều” hoặc “động từ nguyên mẫu/đã chia thì”, nên giữ lại thông tin đầy đủ.

  1. Kết hợp gắn nhãn POS với các bước tiền xử lý khác

  • Đồng thời làm sạch dữ liệu (remove stop words, lowercasing – tùy ngôn ngữ, tách từ, tách câu,…).

  • Bước POS tagging thường đi cùng với lemmatization (quy về dạng gốc) hoặc stemming (cắt bỏ đuôi) ở một số ngôn ngữ. Nên lựa chọn cẩn thận cách thức phù hợp.

  1. Luôn xem xét bối cảnh mô hình ngôn ngữ lớn

  • Với các mô hình Transformer-based pretrained (BERT, GPT, v.v.), thông tin POS có thể được “học ngầm”, do đó đôi khi không nhất thiết cần POS thủ công.

  • Tuy nhiên, nếu dữ liệu hạn chế hoặc cần tách bạch cú pháp rõ ràng, POS vẫn rất hữu ích (chẳng hạn, chạy QA hoặc NER trên tài liệu chuyên ngành).


E. Universal POS tags

  1. ADJ (Adjective - Tính từ): Từ mô tả đặc điểm, tính chất của danh từ.

    • Ví dụ: “đẹp”, “cao”, “nhanh”.

  2. ADP (Adposition - Giới từ/Trợ từ): Từ nối danh từ, đại từ hoặc cụm danh từ với phần còn lại của câu.

    • Ví dụ: “trong”, “trên”, “với”.

  3. ADV (Adverb - Trạng từ): Từ bổ nghĩa cho động từ, tính từ hoặc trạng từ khác, thường chỉ cách thức, thời gian, mức độ.

    • Ví dụ: “nhanh chóng”, “rất”, “đã”.

  4. AUX (Auxiliary verb - Trợ động từ): Động từ hỗ trợ cho động từ chính để diễn tả thì, thể, giọng.

    • Ví dụ: “đã”, “đang”, “sẽ”.

  5. CCONJ (Coordinating conjunction - Liên từ kết hợp): Từ nối các từ, cụm từ hoặc mệnh đề độc lập.

    • Ví dụ: “và”, “hoặc”, “nhưng”.

  6. DET (Determiner - Từ hạn định): Từ đứng trước danh từ để xác định rõ danh từ đó.

    • Ví dụ: “một”, “những”, “các”.

  7. INTJ (Interjection - Thán từ): Từ biểu lộ cảm xúc, thường đứng độc lập.

    • Ví dụ: “ôi”, “chao”, “chà”.

  8. NOUN (Noun - Danh từ): Từ chỉ người, sự vật, hiện tượng, khái niệm.

    • Ví dụ: “học sinh”, “cây cối”, “tình yêu”.

  9. NUM (Numeral - Số từ): Từ chỉ số lượng, thứ tự.

    • Ví dụ: “một”, “hai”, “thứ nhất”.

  10. PART (Particle - Tiểu từ): Từ không thuộc các loại từ chính nhưng có chức năng ngữ pháp.

    • Ví dụ: “à”, “ừ”, “nhé”.

  11. PRON (Pronoun - Đại từ): Từ thay thế cho danh từ hoặc cụm danh từ.

    • Ví dụ: “tôi”, “bạn”, “chúng ta”.

  12. PROPN (Proper noun - Danh từ riêng): Tên riêng của người, địa điểm, tổ chức.

    • Ví dụ: “Hà Nội”, “Việt Nam”, “Google”.

  13. PUNCT (Punctuation - Dấu câu): Ký hiệu dùng để ngắt câu, đoạn.

    • Ví dụ: “.”, “,”, “!”.

  14. SCONJ (Subordinating conjunction - Liên từ phụ thuộc): Từ nối mệnh đề phụ thuộc với mệnh đề chính.

    • Ví dụ: “khi”, “nếu”, “bởi vì”.

  15. SYM (Symbol - Ký hiệu): Ký hiệu, biểu tượng.

    • Ví dụ: “$”, “%”, “&”.

  16. VERB (Verb - Động từ): Từ diễn tả hành động, trạng thái của chủ thể.

    • Ví dụ: “chạy”, “nghĩ”, “yêu”.

  17. X (Other - Khác): Từ không thuộc các loại trên, thường là từ vay mượn, từ mới.

  18. SPACE (Space - Khoảng trắng): Ký tự khoảng trắng, dùng để tách các từ trong câu.

  • Sample 1

import spacy

nlp = spacy.load("en_core_web_sm")

doc = nlp("Apple is looking at buying U.K. startup for $1 billion")

print(
    f"{'Token':<10} {'POS':<10} {'Dependency':<10} {'Head':<10} {'Head POS':<10}"
)
print("-" * 60)
for token in doc:
    print(
        f"{token.text:<10} {token.pos_:<10} {token.dep_:<10} {token.head.text:<10} {token.head.pos_:<10}"
    )
Token      POS        Dependency Head       Head POS  
------------------------------------------------------------
Apple      PROPN      nsubj      looking    VERB      
is         AUX        aux        looking    VERB      
looking    VERB       ROOT       looking    VERB      
at         ADP        prep       looking    VERB      
buying     VERB       pcomp      at         ADP       
U.K.       PROPN      nsubj      startup    VERB      
startup    VERB       ccomp      buying     VERB      
for        ADP        prep       startup    VERB      
$          SYM        quantmod   billion    NUM       
1          NUM        compound   billion    NUM       
billion    NUM        pobj       for        ADP       
  • Sample 2

import spacy
import pandas as pd
import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
import re
import matplotlib.pyplot as plt

data = pd.read_csv(
    r"contents\theory\aiml_algorithms\dl_nlp\data\94 - bbc-news.csv"
)
nlp = spacy.load("en_core_web_sm")
# Preprocessing
titles = data[["title"]].copy()

# lower case
titles["preprocessed"] = titles["title"].str.lower()

# stop word removal
en_stopwords = stopwords.words("english")
titles["preprocessed"] = titles["preprocessed"].apply(
    lambda x: " ".join(
        [word for word in x.split() if word not in en_stopwords]
    )
)

# punctation removal
titles["preprocessed"] = titles["preprocessed"].apply(
    lambda x: re.sub(r"[^\w\s]", "", x)
)

# word tokenization
titles["tokens_raw"] = titles["title"].apply(word_tokenize)
titles["tokens_preprocessed"] = titles["preprocessed"].apply(word_tokenize)

# lemmatizing
lemmatizer = WordNetLemmatizer()
titles["tokens_lemmatized"] = titles["tokens_preprocessed"].apply(
    lambda x: [lemmatizer.lemmatize(word) for word in x]
)

# create lists for just our tokens
tokens_raw_list = sum(
    titles["tokens_raw"], []
)  # unpack our lists into a single list

tokens_clean_list = sum(titles["tokens_lemmatized"], [])

# create a spacy doc from our raw text - better for pos tagging
spacy_doc = nlp(" ".join(tokens_raw_list))
# POS Tagging
pos = [{"token": token.text, "pos_tag": token.pos_} for token in spacy_doc]
pd.DataFrame(pos).head()
token pos_tag
0 Can AUX
1 I PRON
2 refuse VERB
3 to PART
4 work VERB
  • Sample 3

# Importing the Natural Language Toolkit (nltk) library
# Downloading the Punkt tokenizer models
import nltk

nltk.download("punkt_tab")

# Downloading the Averaged Perceptron Tagger for PoS tagging

nltk.download("averaged_perceptron_tagger_eng")

# Downloading the Benepar model for English parsing
# benepar.download('benepar_en3')

# Importing necessary functions from nltk
from nltk import word_tokenize, pos_tag


# Sample text for analysis
text = "Apple is looking at buying U.K. start up for $1 billion"

# Tokenizing the text into words using nltk
words = word_tokenize(text)
print(words)

# Performing Part of Speech (PoS) tagging on the tokenized words
pos_tags = pos_tag(words)

# Displaying the original text
print("Original Text:")
print(text)

# Displaying the PoS tagging result, word by word
print("\nPoS Tagging Result:")
for word, pos in pos_tags:
    print(f"{word}: {pos}")
['Apple', 'is', 'looking', 'at', 'buying', 'U.K.', 'start', 'up', 'for', '$', '1', 'billion']
Original Text:
Apple is looking at buying U.K. start up for $1 billion

PoS Tagging Result:
Apple: NNP
is: VBZ
looking: VBG
at: IN
buying: VBG
U.K.: NNP
start: VB
up: RP
for: IN
$: $
1: CD
billion: CD

3.5.1.5.2. NER - Named Entities Recognization#

Named Entity Recognition – Nhận diện thực thể có tên

  • NER là quá trình tự động phát hiện (dò tìm) và phân loại các thực thể “có tên” trong văn bản, ví dụ như tên người, tên địa điểm, tổ chức, thời gian, sự kiện, v.v.

  • Mục tiêu: Xác định đâu là thực thể đặc biệt trong câu và chúng thuộc loại thực thể nào.

Ví dụ câu tiếng Việt: “Ông Nguyễn Văn A làm việc tại Công ty Bkav ở Hà Nội.”

  • “Nguyễn Văn A” → Người (Person)

  • “Công ty Bkav” → Tổ chức (Organization)

  • “Hà Nội” → Địa điểm (Location)

Ý nghĩa

NER là một bước quan trọng trong trích xuất thông tin:

  • Tìm kiếm và tổng hợp thông tin: Cho phép hệ thống hiểu được đối tượng nào đang được đề cập đến (ví dụ, tìm tất cả các tin tức có nhắc đến một người/tổ chức cụ thể).

  • Hỏi đáp tự động (Question Answering): Giúp xác định câu trả lời chính xác khi câu hỏi hướng đến các thực thể (Ví dụ: “Ai là CEO của Google?”).

  • Phân tích ý kiến (Sentiment Analysis): Xem ý kiến của người dùng nhắm vào thực thể nào (nhãn hàng, địa điểm, cá nhân).

Phương pháp

  • Rule-based: Sử dụng luật ngôn ngữ hoặc biểu thức chính quy (regex), kết hợp danh sách các thực thể đã biết. Cách này mang tính đặc thù, thiếu linh hoạt.

  • Thống kê/học máy cổ điển: CRF, MaxEnt (Maximum Entropy), SVM… sử dụng đặc trưng (feature) về từ, ngữ cảnh, chữ hoa/thường, tiền tố/hậu tố, v.v.

  • Học sâu (Deep Learning):

    • Mô hình mạng nơ-ron nhiều tầng (BiLSTM + CRF) hoặc Transformers (BERT, XLM-R, PhoBERT…) huấn luyện đặc trưng tự động, thay vì thủ công.

    • Kết quả NER hiện nay cải thiện rất nhiều nhờ áp dụng mô hình Transformer, đặc biệt khi có dữ liệu gắn nhãn đủ lớn.

ner = [
    {"token": token.text, "ner_tag": token.label_} for token in spacy_doc.ents
]
df = pd.DataFrame(ner).head()
df
token ner_tag
0 Liz Truss PERSON
1 UK GPE
2 Rationing PRODUCT
3 superyachts CARDINAL
4 Russian NORP
from spacy import displacy

displacy.render(spacy_doc[:150], style="ent", jupyter=True)
Can I refuse to work ? ' Liz Truss PERSON the Brief ? ' World reacts to UK GPE political turmoil Rationing PRODUCT energy is nothing new for off-grid community The hunt for superyachts CARDINAL of sanctioned Russian NORP oligarchs Platinum Jubilee : 70 years DATE of the Queen in 70 seconds TIME Red Bull ORG found guilty of breaking Formula 1 's PRODUCT budget cap World Triathlon Championship Series EVENT : Flora Duffy PERSON beats Georgia Taylor-Brown PERSON to women 's title Terry Hall PERSON : Coventry scooter ride-out pays tribute to singer Post Office ORG and Fujitsu ORG to face inquiry over Horizon ORG scandal 'Pavement parking frightens me ' UK GPE interest rates : How will the rise affect you and how high could it go ? They stayed for the storm - what happens now ? Six CARDINAL Nations : Can Scotland GPE 's best since '99 DATE
type(spacy_doc)
spacy.tokens.doc.Doc

3.5.1.5.3. Dependency Tree#

Represent grammatical relationships between words. Read dependency relations

Applications:

  • Aspect-based sentiment analysis: provide syntactic information that helps determine sentiment towards relevents aspects

  • Textual entailment

Mối quan hệ phụ thuộc với head khi sử dụng thuộc tính .dep_

  1. nsubj (nominal subject): Chủ ngữ danh từ của động từ “looking”“Apple”.​

  2. aux (auxiliary): Trợ động từ “is” hỗ trợ cho động từ chính “looking”.​

  3. ROOT: Động từ chính của câu là “looking”.​

  4. prep (prepositional modifier): Giới từ “at” bổ nghĩa cho động từ “looking”.​

  5. pcomp (prepositional complement): Động từ “buying” là bổ ngữ của giới từ “at”.​

  6. compound: “U.K.” là phần bổ nghĩa cho danh từ “startup”.​

  7. dobj (direct object): Tân ngữ trực tiếp của động từ “buying”“startup”.​

  8. quantmod (quantifier modifier): “$” là bổ ngữ định lượng cho “billion”.​

  9. pobj (object of preposition): Danh từ “billion” là tân ngữ của giới từ “for”.​

  10. punct (punctuation): Dấu chấm câu.

import spacy
from spacy import displacy

nlp = spacy.load("en_core_web_sm")
doc = nlp("Apple is looking at buying U.K. startup for $1 billion.")

# Displaying the dependency parsing result for each token
for token in doc:
    print(
        token.text,
        token.dep_,
        token.head.text,
        token.head.pos_,
        [child for child in token.children],
    )

# Visualizing the dependency parse using displaCy
# img =  displacy.render(doc, style='dep',  jupyter=True, distance=1)
options = {"color": "blue", "distance": 100}
img = displacy.render(doc, style="dep", jupyter=True, options=options)
Apple nsubj looking VERB []
is aux looking VERB []
looking ROOT looking VERB [Apple, is, at, .]
at prep looking VERB [buying]
buying pcomp at ADP [startup]
U.K. nsubj startup VERB []
startup ccomp buying VERB [U.K., for]
for prep startup VERB [billion]
$ quantmod billion NUM []
1 compound billion NUM []
billion pobj for ADP [$, 1]
. punct looking VERB []
Apple PROPN is AUX looking VERB at ADP buying VERB U.K. PROPN startup VERB for ADP $ SYM 1 NUM billion. NUM nsubj aux prep pcomp nsubj ccomp prep quantmod compound pobj

3.5.1.5.4. Constituency Trees#

Constituency Trees là một phương pháp biểu diễn cấu trúc ngữ pháp của một câu dưới dạng cây phân cấp. Nó minh họa rõ ràng cách các từ trong câu kết hợp lại với nhau để tạo thành những cụm từ lớn hơn (constituents).

  • Giúp phân tích cấu trúc ngữ pháp rõ ràng hơn.

  • Thể hiện rõ mối liên hệ giữa các cụm từ và từ đơn lẻ.

  • Giải quyết được các trường hợp câu nhập nhằng (một câu có thể hiểu theo nhiều cách khác nhau).


A. Component

  1. A constituent (Cụm từ) is a syntactic unit or phrase that functions as a single unit within a hierarchical structure. Là một nhóm các từ liên kết với nhau, đóng vai trò như một đơn vị thống nhất trong câu. Common types of constituents include:

    • Noun Phrase (NP): “the red car”

    • Verb Phrase (VP): “is driving fast”

    • Prepositional Phrase (PP): “on the road”

  2. Constituency trees show sentences broken down into increasingly smaller components, typically:

    • Sentence (S)

    • Phrases (NP, VP, PP, ADJP, ADVP, etc.)

    • Words/Tokens (terminals)

    Constituency tree are contructed using grammatical rulse like Context Free Grammar (CFG)

  3. Nodes Trees contain two types of nodes:

    • Non-terminal nodes (internal nodes representing phrases or grammatical categories): là các cụm từ như NP (cụm danh từ), VP (cụm động từ), PP (cụm giới từ).

    • Terminal nodes (leaf nodes, typically individual words). là các từ cụ thể trong câu.

  4. Grammatical Categories common categories used to label nodes:

    • S (Sentence)

    • NP (Noun Phrase)

    • VP (Verb Phrase)

    • PP (Prepositional Phrase)

    • ADJP (Adjective Phrase)

    • ADVP (Adverbial Phrase)

    • DET (Determiner)

    • V (Verb)

    • N (Noun)

    • P (Preposition)

    • Adj (Adjective), etc.

  5. Types of Parsing:

    • Top-down parsing: Starts from the highest-level constituent (sentence) and recursively breaks down phrases into smaller units.

    • Bottom-up parsing: Starts with individual words and builds phrases up to the full sentence.

  6. Common algorithms:

    • CKY algorithm (Cocke–Kasami–Younger)

    • Earley parsing


B. Applications in NLP

  1. Ứng dụng trong NLP:

    • Parsing: Constituency trees help parsers identify sentence structure to facilitate tasks such as information extraction, machine translation, and semantic analysis.

    • Semantic interpretation: They guide systems to understand meaning, ambiguity, and grammatical relationships.

    • Grammar checking: Constituency parsing is essential for grammar-correction tools and language modeling.

  2. Khác biệt Constituency Trees vs. Dependency Trees

    • Constituency trees focus on hierarchical phrase structure.

    • Dependency trees focus explicitly on relationships between words (head-dependent relationships), without phrase-level categories.

# Importing the Benepar parser
import benepar

# Downloading the Benepar model for English parsing
benepar.download("benepar_en3")

# Importing necessary functions from nltk
from nltk.tree import Tree

# Reloading the English language model with Benepar parser added to the pipeline
nlp = spacy.load("en_core_web_sm")
nlp.add_pipe("benepar", config={"model": "benepar_en3"})

# Processing a new sample text for constituency parsing
doc = nlp("Apple is looking at buying U.K. startup for $1 billion")

# Extracting the first sentence from the document
sent = list(doc.sents)[0]

# Getting the constituency parse tree as a string
tree = sent._.parse_string

# Converting the string parse tree into an nltk Tree object
t = Tree.fromstring(tree)

# Pretty printing the constituency parse tree
t.pretty_print()
       S                                                             
   ____|_____                                                         
  |          VP                                                      
  |     _____|__________                                              
  |    |                VP                                           
  |    |      __________|________________                             
  |    |     |                           PP                          
  |    |     |      _____________________|_____                       
  |    |     |     |                           S                     
  |    |     |     |                           |                      
  |    |     |     |                           VP                    
  |    |     |     |     ______________________|_______               
  |    |     |     |    |          |                   PP            
  |    |     |     |    |          |            _______|___           
  |    |     |     |    |          |           |           NP        
  |    |     |     |    |          |           |           |          
  NP   |     |     |    |          NP          |           QP        
  |    |     |     |    |      ____|_____      |    _______|_____     
 NNP  VBZ   VBG    IN  VBG   NNP         NN    IN  $       CD    CD  
  |    |     |     |    |     |          |     |   |       |     |    
Apple  is looking  at buying U.K.     startup for  $       1  billion

3.5.1.5.5. Semantic Graph#

Semantic Graph là dạng biểu diễn kiến thức hoặc ý nghĩa của ngôn ngữ bằng đồ thị, trong đó:

  • Các nút (nodes): thể hiện các thực thể (entities), khái niệm (concepts), từ ngữ hoặc ý tưởng.

  • Các cạnh (edges): thể hiện mối liên hệ (relations) về mặt ý nghĩa giữa các nút.

Nói đơn giản, semantic graph mô tả ý nghĩa và mối quan hệ ngữ nghĩa giữa các từ, cụm từ, hoặc thực thể trong câu hoặc văn bản, thay vì chỉ thể hiện cấu trúc ngữ pháp.

Semantic graph có nhiều ứng dụng quan trọng:

  • Trích xuất thông tin (Information Extraction): Giúp tìm kiếm, xác định nhanh chóng các mối quan hệ giữa thực thể, sự kiện trong văn bản.

  • Hệ thống hỏi đáp (Question Answering): Hỗ trợ các chatbot, trợ lý ảo trả lời các câu hỏi dựa trên các mối liên hệ trong đồ thị.

  • Tìm kiếm ngữ nghĩa (Semantic Search): Thực hiện tìm kiếm dựa trên ý nghĩa thay vì chỉ dựa vào từ khóa đơn thuần.

  • Dịch máy (Machine Translation): Cải thiện độ chính xác bằng cách nắm bắt đúng ý nghĩa các câu.

  • Phân tích và suy luận (Reasoning): Semantic graph cho phép các hệ thống tự động suy luận, rút ra thông tin mới dựa trên các mối quan hệ đã biết.