Chủ đề của NLP301c - Xử lý ngôn ngữ tự nhiên

NLP301c - Phần 5: Không gian vector, dịch từ và tìm kiếm tài liệu

Mô hình không gian vector đặt mỗi từ hay tài liệu thành một điểm, để độ tương đồng cosine đo góc giữa hai vector mà không bị độ dài văn bản chi phối như khoảng cách Euclid. Ma trận tài liệu–từ cùng chỉ số TF-IDF làm nổi bật những từ đặc trưng cho từng văn bản, còn PCA thu nhỏ số chiều để quan sát. Dịch từ có thể quy về việc học một ma trận biến đổi đưa vector của ngôn ngữ này sang không gian của ngôn ngữ kia rồi tìm láng giềng gần nhất. Khi kho dữ liệu lớn, băm nhạy vị trí chia không gian bằng các siêu phẳng ngẫu nhiên để chỉ so sánh trong cùng một thùng, đổi một chút độ chính xác lấy tốc độ. Mô hình chủ đề và phân cụm k-means cũng dựa trên nền biểu diễn này. Vector học được từ ngữ cảnh là nội dung của Phần 8.

Xem danh sách câu hỏi13 câu hỏi100% có giải thích

Bắt đầu bằng Chế độ học nếu bạn muốn đáp án và giải thích hiện ngay sau mỗi câu — không bấm giờ, dừng lúc nào cũng được. Chọn Thi thử khi muốn biết mình đang ở đâu: có bấm giờ, chấm điểm ở cuối, và giải thích chỉ mở sau khi nộp.

Học ngân hàng câu hỏi của chủ đề

Luyện tập theo chủ đề này

13Câu hỏi hiện có

Câu hỏi của chủ đề

13/13 câuHết danh sách
AIntegers (e.g., assigning each word a unique number)
BOne-hot vectors (e.g., binary vectors with a single 1)
CWord embeddings (e.g., dense vectors capturing semantic meaning)
DEncoding each word based on the number of syllables it contains
Lời giải
Đáp án đúng gồm ba ý: "Integers (e.g., assigning each word a unique number)", "One-hot vectors (e.g., binary vectors with a single 1)" và "Word embeddings (e.g., dense vectors capturing semantic meaning)". Mô hình học máy không xử lý trực tiếp chuỗi ký tự nên mỗi từ phải được ánh xạ sang dạng số. Cách đơn giản nhất là gán cho mỗi từ trong từ vựng một chỉ số nguyên (index), vốn chính là đầu vào của lớp embedding trong mạng nơ-ron. One-hot vector là vector nhị phân dài bằng kích thước từ vựng, chỉ một vị trí bằng 1; nó không mang thông tin ngữ nghĩa nhưng là biểu diễn hợp lệ và là nền của bag-of-words. Word embedding là vector đặc (dense) ít chiều học từ ngữ cảnh, khiến các từ gần nghĩa nằm gần nhau, như Word2Vec hay GloVe. "Encoding each word based on the number of syllables it contains" không phải cách biểu diễn hợp lệ vì số âm tiết là một đặc trưng ngữ âm rất thô: vô số từ khác nghĩa có cùng số âm tiết (cat, dog, run đều một âm tiết), nên ánh xạ này không phân biệt được các từ với nhau và không giữ được nghĩa, đánh mất tính một-một mà mọi phép biểu diễn từ cần có.
Mở trang câu hỏi này →
2TF stands for:4 lựa chọn
ATextual Function
BTerm Frequency
CText Format
DTopic Finder
Lời giải
Đáp án đúng: "Term Frequency". TF là tần suất thuật ngữ (Term Frequency), đo số lần một từ t xuất hiện trong tài liệu d, thường chuẩn hoá bằng cách chia cho tổng số từ của tài liệu: TF(t, d) = số lần t xuất hiện trong d chia cho tổng số từ trong d. Nó là nửa đầu của trọng số TF-IDF, kết hợp với IDF (Inverse Document Frequency) để hạ trọng số các từ xuất hiện ở hầu hết tài liệu. "Textual Function" không phải thuật ngữ chuẩn trong NLP, không có định nghĩa nào gắn với chữ viết tắt TF. "Text Format" chỉ định dạng của tệp văn bản (txt, html…), là chuyện lưu trữ, không phải một đại lượng thống kê. "Topic Finder" gợi tới bài toán tìm chủ đề, vốn được gọi là topic modeling và giải bằng các mô hình như LDA, chứ không phải nghĩa của TF.
Mở trang câu hỏi này →
AK * Log(3) / T
BKT * Log(3)
CT * Log(3) / K
DLog(3) / KT
Lời giải
Đáp án đúng: "K * Log(3) / T". TF (term frequency, tần suất từ) chuẩn hoá theo độ dài văn bản bằng số lần từ xuất hiện chia tổng số từ của văn bản, nên TF = K/T. IDF (inverse document frequency, tần suất văn bản nghịch đảo) bằng log của tổng số văn bản chia số văn bản chứa từ: IDF = log(N/(N/3)) = log(3). Nhân hai thành phần được TF-IDF = (K/T) × log(3), đúng dạng K nhân log(3) rồi chia T. "KT * Log(3)" nhân K với T thay vì chia, tức coi văn bản càng dài thì từ càng quan trọng, ngược với ý nghĩa chuẩn hoá theo độ dài. "T * Log(3) / K" đảo tỉ số TF thành T/K, khiến từ xuất hiện càng nhiều lại có trọng số càng thấp. "Log(3) / KT" đặt cả K vào mẫu số nên trọng số cũng giảm khi từ lặp lại nhiều, trái với vai trò của TF là tăng trọng số cho từ xuất hiện thường xuyên trong văn bản.
Mở trang câu hỏi này →
ALDA
BRNN
CSVM
DGRU
Lời giải
Đáp án đúng: "LDA". Topic modeling (mô hình hoá chủ đề) là bài toán không giám sát tìm các chủ đề ẩn trong một tập văn bản. LDA (Latent Dirichlet Allocation, do Blei, Ng và Jordan đề xuất) giả định mỗi tài liệu là một hỗn hợp nhiều chủ đề, mỗi chủ đề là một phân phối xác suất trên từ vựng, với tiên nghiệm Dirichlet; huấn luyện xong ta có phân phối chủ đề cho từng tài liệu và danh sách từ đặc trưng cho từng chủ đề. "RNN" (mạng nơ-ron hồi quy) là kiến trúc xử lý chuỗi theo thứ tự, dùng cho mô hình ngôn ngữ hay gán nhãn chuỗi, không phải phương pháp chuẩn để khám phá chủ đề. "SVM" (Support Vector Machine) là bộ phân loại có giám sát, cần nhãn sẵn, còn topic modeling không có nhãn. "GRU" (Gated Recurrent Unit) là một biến thể của RNN có cổng cập nhật và cổng đặt lại, cũng là mô hình chuỗi chứ không phải mô hình chủ đề.
Mở trang câu hỏi này →
A1 and 2
BOnly 1
COnly 2
DOnly 3
Lời giải
Đáp án đúng: "1 and 2". Số chiều của ma trận tài liệu–thuật ngữ (document-term matrix) bằng số từ khác nhau trong từ vựng, mỗi cột một từ. (1) đúng: bỏ từ dừng (stopword removal) xoá hẳn các cột như "the", "is", nên làm đổi số chiều. (2) đúng: chuẩn hoá từ (word normalization) như stemming, lemmatization hay sửa biến thể chính tả gộp "play", "plays", "played" về một cột, nên làm giảm số chiều. (3) sai: chuyển chữ thường (lowercasing) gộp "Data", "DATA" và "data" thành một cột, tức cũng làm giảm số chiều chứ không phải không ảnh hưởng. Vậy chỉ (1) và (2) đúng. "Only 1" bỏ sót phát biểu (2) vốn cũng đúng. "Only 2" bỏ sót phát biểu (1) về từ dừng. "Only 3" chọn đúng phát biểu duy nhất sai, vì với tweet viết hoa thường lẫn lộn, lowercasing thường làm giảm số cột đáng kể.
Mở trang câu hỏi này →
6Cosine similarity measures the4 lựa chọn
AEuclidean distance between two vectors
BAngle between two vectors
CMagnitude difference between two vectors
DDot product of two vectors without normalization
Lời giải
Đáp án đúng: "Angle between two vectors". Độ tương đồng cosine bằng tích vô hướng của hai vector chia cho tích độ dài của chúng, cos θ = u·v / (‖u‖‖v‖), nên giá trị chỉ phụ thuộc góc θ giữa hai vector: cùng hướng cho 1, vuông góc cho 0. Trong NLP nó được dùng để so văn bản hay embedding vì hai văn bản cùng chủ đề nhưng dài ngắn khác nhau vẫn có vector cùng hướng. "Euclidean distance between two vectors" là một độ đo khoảng cách khác, nhạy với độ dài vector: văn bản dài gấp đôi cho khoảng cách lớn dù nội dung giống nhau. "Magnitude difference between two vectors" là hiệu độ lớn, đúng thứ mà cosine cố ý loại bỏ khi chia cho chuẩn. "Dot product of two vectors without normalization" chỉ là tử số của công thức; thiếu bước chia cho chuẩn thì kết quả bị chi phối bởi độ dài vector, chưa phải cosine.
Mở trang câu hỏi này →
AKT * Log(3)
BT * Log(3) / K
CK * Log(3) / T
DLog(3) / KT
Lời giải
Đáp án đúng: "K * Log(3) / T". Tần suất thuật ngữ TF bằng số lần thuật ngữ xuất hiện chia cho tổng số thuật ngữ của tài liệu, nên TF(hello) = K / T. Tần suất tài liệu nghịch đảo IDF = log(N / số tài liệu chứa thuật ngữ); hello có mặt trong khoảng N/3 tài liệu nên IDF = log(N chia cho N/3) = log(3). Nhân lại được TF × IDF = (K / T) × log(3), đúng bằng K * Log(3) / T. "KT * Log(3)" sai vì nhân K với T thay vì chia, khiến tài liệu càng dài điểm càng cao, ngược với ý chuẩn hoá theo độ dài. "T * Log(3) / K" đảo ngược TF thành T / K, nên thuật ngữ càng xuất hiện nhiều lại càng nhận điểm thấp. "Log(3) / KT" chia cho cả K lẫn T, cũng làm số lần xuất hiện K kéo điểm xuống thay vì đẩy lên.
Mở trang câu hỏi này →
ANumber of clusters
BClass labels
CDistance metric
DNumber of centroids
Lời giải
Đáp án đúng gồm ba ý: "Number of clusters", "Distance metric" và "Number of centroids". K-means là thuật toán phân cụm không giám sát, dùng trong NLP để gom văn bản hay vector từ theo độ giống nhau. Ngoài tập điểm dữ liệu, nó cần số cụm k, mà mỗi cụm có đúng một tâm nên số cụm và số tâm là cùng một tham số nói theo hai cách; thuật toán khởi tạo k tâm, gán mỗi điểm vào tâm gần nhất theo một độ đo khoảng cách (thường là Euclid, với vector văn bản có thể dùng cosine), cập nhật tâm bằng trung bình các điểm trong cụm và lặp tới khi hội tụ, vì vậy độ đo khoảng cách cũng là đầu vào. "Class labels" không phải đầu vào vì k-means là học không giám sát, nó tự tìm nhóm từ dữ liệu chưa gán nhãn; nhãn lớp chỉ cần cho phân loại có giám sát hoặc để đánh giá kết quả phân cụm sau khi chạy.
Mở trang câu hỏi này →
ATerm frequency
BWord frequency
CInverse document frequency
DBi-gram frequency
Lời giải
Đáp án đúng: "Inverse document frequency". IDF của thuật ngữ t bằng log(N / df(t)), với N là tổng số tài liệu và df(t) là số tài liệu chứa t; thuật ngữ càng hiếm thì df càng nhỏ và IDF càng lớn, nên khi nhân vào TF nó nâng trọng số của từ hiếm, giàu thông tin, và kéo những từ có mặt khắp nơi như the, is về gần 0. Ví dụ với 1.000 tài liệu, từ có mặt trong 10 tài liệu có IDF = log(100), còn từ có mặt trong cả 1.000 tài liệu có IDF = log(1) = 0. "Term frequency" đếm số lần từ xuất hiện trong một tài liệu, nên từ càng phổ biến càng được trọng số cao, ngược với yêu cầu. "Word frequency" cũng chỉ là số đếm tần suất từ, ưu tiên từ thường gặp. "Bi-gram frequency" đếm cặp hai từ liền nhau, vẫn là số đếm thô, không có cơ chế phạt từ phổ biến.
Mở trang câu hỏi này →
A1, 2, 3
Bonly 1
C2, 3
D1, 3
Lời giải
Đáp án đúng: "1, 2, 3". Cả ba phương pháp đều làm giảm số chiều của ma trận tài liệu–thuật ngữ, vốn có một cột cho mỗi từ trong từ vựng. (1) Latent Dirichlet Allocation biểu diễn mỗi tài liệu bằng phân phối trên K chủ đề, nên mỗi tài liệu chỉ còn K chiều thay vì hàng chục nghìn chiều từ vựng. (2) Latent Semantic Indexing (còn gọi là LSA) phân tích ma trận bằng SVD rồi giữ k giá trị kỳ dị lớn nhất, chiếu tài liệu xuống không gian ngữ nghĩa k chiều. (3) Keyword normalization chuẩn hoá các biến thể của từ khoá (viết hoa, số nhiều, chia thì) về một dạng, làm số cột giảm trực tiếp. "only 1" bỏ sót LSI và chuẩn hoá từ khoá. "2, 3" bỏ sót LDA, vốn là phương pháp nén theo chủ đề. "1, 3" bỏ sót LSI, phương pháp giảm chiều kinh điển nhất bằng SVD.
Mở trang câu hỏi này →
ACountVectorizer
BTF-IDF
CBag of Words
DNERs
Lời giải
Đáp án đúng: "CountVectorizer". CountVectorizer là lớp trong scikit-learn làm trọn hai việc: tách văn bản thành token theo mẫu tách từ và xây từ vựng, rồi biến mỗi văn bản thành vector số đếm từng token; kiểu dữ liệu đầu ra có thể đặt là số nguyên hay số thực qua tham số dtype. "TF-IDF" là cách tính trọng số từ theo tần suất trong văn bản và độ hiếm trong kho, tức một công thức gán giá trị; muốn có nó trên văn bản thô vẫn phải token hoá và đếm trước, và trong scikit-learn TfidfVectorizer chính là CountVectorizer nối với TfidfTransformer. "Bag of Words" là mô hình biểu diễn mang tính khái niệm, bỏ qua thứ tự từ, chứ không phải công cụ cụ thể thực hiện việc chuyển đổi. "NERs" là các bộ nhận dạng thực thể có tên, gán nhãn người, địa điểm cho token, không tạo vector số cho văn bản.
Mở trang câu hỏi này →
AKT * Log(3)
BK * Log(3) / T
CT * Log(3) / K
DLog(3) / KT
Lời giải
Đáp án đúng: "K * Log(3) / T". Tính từng phần: TF của "data" trong tài liệu được chọn là số lần xuất hiện chia cho tổng số thuật ngữ, tức K/T. IDF = log(tổng số tài liệu / số tài liệu chứa từ) = log(N / (N/3)) = log(3), vì từ xuất hiện trong khoảng một phần ba số tài liệu. Nhân lại được TF × IDF = (K/T) × log(3) = K * log(3) / T. "KT * Log(3)" sai vì nhân K với T thay vì chia K cho T, làm TF lớn bất thường và tăng theo độ dài tài liệu, trái với mục đích chuẩn hoá. "T * Log(3) / K" đảo ngược tỉ số TF thành T/K, nghĩa là từ càng xuất hiện nhiều thì trọng số càng nhỏ, ngược với ý nghĩa của tần suất. "Log(3) / KT" đặt cả K vào mẫu số, cũng làm trọng số giảm khi từ xuất hiện nhiều hơn, nên không phải TF-IDF.
Mở trang câu hỏi này →
AAlpha: density of topics generated within documents, beta: density of terms generated within topics
BAlpha: number of topics within documents, beta: number of terms within topics
CAlpha: density of terms generated within topics, beta: density of topics generated within terms
DAlpha: number of topics within documents, beta: number of terms within topics
Lời giải
Đáp án đúng: "Alpha: density of topics generated within documents, beta: density of terms generated within topics". LDA (Latent Dirichlet Allocation) mô hình mỗi văn bản là hỗn hợp chủ đề và mỗi chủ đề là phân phối trên từ; alpha là tham số của phân phối Dirichlet tiên nghiệm cho tỉ lệ chủ đề trong văn bản, alpha lớn thì mỗi văn bản chứa nhiều chủ đề trộn đều, alpha nhỏ thì mỗi văn bản tập trung vào ít chủ đề; beta là tham số Dirichlet cho phân phối từ trong chủ đề, beta lớn thì mỗi chủ đề trải ra nhiều từ. Vì vậy chúng đo mật độ chứ không phải số lượng. Chuỗi "Alpha: number of topics within documents, beta: number of terms within topics" được in hai lần và sai vì alpha, beta là tham số nồng độ, còn số chủ đề K là một siêu tham số riêng phải chọn trước, số từ thì do từ vựng quyết định. "Alpha: density of terms generated within topics, beta: density of topics generated within terms" đảo vai hai tham số, và cụm topics generated within terms không có nghĩa trong LDA vì từ không sinh ra chủ đề.
Mở trang câu hỏi này →

Đề có câu hỏi của chủ đề này

3 đề chứa ít nhất một câu thuộc chủ đề — mở đề để làm cả bộ, không chỉ từng câu.