DAT301MChưa đo Cập nhật 2 ngày trước
DAT301m - Phát triển UDTTNT với TensorFlow
100Câu hỏi
2Bộ đề
4Chủ đề
Câu hỏi của môn
84/100 câuCòn 16
65What is transfer learning in TensorFlow?4 lựa chọn
AA technique to transfer models between different programming languages.
BA method to copy the weights of one model directly to another.
CA way to apply knowledge gained from solving one problem to a different but related problem.
DA process of transferring data from one TensorFlow version to another.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "A way to apply knowledge gained from solving one problem to a different but related problem.". Transfer learning (học chuyển giao) tận dụng một mô hình đã học các đặc trưng tổng quát từ tập dữ liệu lớn, ví dụ InceptionV3 hay MobileNetV2 huấn luyện trên ImageNet, rồi dùng lại các lớp đó cho bài toán mới có liên quan như phân loại chó mèo, thường đóng băng phần nền và chỉ huấn luyện các lớp mới phía trên, nên cần ít dữ liệu và thời gian hơn nhiều. "A technique to transfer models between different programming languages." nói về chuyển đổi định dạng hay môi trường triển khai, như xuất mô hình sang TensorFlow.js, không phải chuyển giao tri thức. "A method to copy the weights of one model directly to another." chỉ là thao tác sao chép trọng số, không có ý tái sử dụng tri thức cho một bài toán khác và không kèm bước học tiếp. "A process of transferring data from one TensorFlow version to another." là việc nâng cấp hay chuyển mã giữa các phiên bản thư viện, không liên quan đến học.
AIt measures the dissimilarity between predicted and true class distributions.
BIt calculates the mean squared error between predictions and true labels.
CIt evaluates the cosine similarity between feature vectors.
DThe categorical_crossentropy loss is not used for multiclass classification.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "It measures the dissimilarity between predicted and true class distributions.". categorical_crossentropy tính L = −Σ y_i·log(p_i) giữa nhãn one-hot y và phân phối xác suất p do lớp Dense softmax đưa ra; vì y chỉ có một vị trí bằng 1 nên loss bằng −log của xác suất gán cho lớp đúng, càng gần 0 khi mô hình tự tin đúng và tăng mạnh khi đoán sai, nhờ đó gradient đẩy xác suất lớp đúng lên. "It calculates the mean squared error between predictions and true labels." sai vì đó là mean_squared_error, phù hợp cho hồi quy chứ không phải hàm này. "It evaluates the cosine similarity between feature vectors." sai vì độ tương đồng cosin đo góc giữa hai vector, ứng với loss CosineSimilarity dùng cho embedding, không phải entropy chéo. "The categorical_crossentropy loss is not used for multiclass classification." sai vì đây chính là hàm mất mát chuẩn cho phân loại nhiều lớp với nhãn one-hot.
AThe original text without tokenization
BA list of tokens obtained from the text
CToken indices representing the text
DA tokenized sequence in a matrix form
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "A list of tokens obtained from the text". Về khái niệm, tokenize là bước tokenization (tách token): cắt văn bản thành các đơn vị nhỏ, với BERT là các wordpiece (mảnh từ con) như từ playing thành mảnh play và mảnh đuôi ing, và kết quả của bước này là danh sách token lấy từ văn bản. Cần nói thật rằng hành vi phụ thuộc thư viện: BertTokenizer của Hugging Face trả về danh sách chuỗi token đúng như trên, còn BertTokenizer của TensorFlow Text mặc định trả về ID wordpiece dạng RaggedTensor vì token_out_type mặc định là tf.int64; câu hỏi ở đây hỏi theo nghĩa khái niệm của bước tách token. "The original text without tokenization" sai vì văn bản giữ nguyên thì phương thức chẳng làm gì cả. "Token indices representing the text" là kết quả của bước tra từ điển, như convert_tokens_to_ids hay encode bên Hugging Face, tức đổi token thành số chứ không phải bản thân việc tách token. "A tokenized sequence in a matrix form" là dạng tensor đã đệm (padding) cho cả một lô câu để đưa vào mô hình, việc này do bước gọi tokenizer kèm padding và trả về tensor đảm nhận, không phải tokenize.
68What is the role of hyperparameter tuning in time series forecasting using machine learning?4 lựa chọn
ATo select the appropriate lag values
BTo optimize the learning rate of the model
CTo find the best model architecture
DTo identify the optimal time period for analysis
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "To optimize the learning rate of the model". Hyperparameter tuning (tinh chỉnh siêu tham số) là tìm các giá trị không được học qua gradient mà phải đặt trước khi huấn luyện, và learning rate (tốc độ học) là siêu tham số tiêu biểu nhất: quá lớn thì loss dao động, quá nhỏ thì hội tụ chậm; khi dự báo chuỗi thời gian bằng mạng nơ-ron, ta hay dùng callback LearningRateScheduler tăng dần learning rate qua các epoch, vẽ loss theo learning rate rồi chọn giá trị mà loss thấp và còn ổn định. "To select the appropriate lag values" liên quan đến kích thước cửa sổ đầu vào, thường được quyết định khi chuẩn bị dữ liệu dạng cửa sổ chứ không phải trọng tâm của bước tối ưu khi huấn luyện mà câu hỏi nhắm tới. "To find the best model architecture" là bài toán thiết kế mô hình, rộng hơn việc chỉnh tham số huấn luyện. "To identify the optimal time period for analysis" là lựa chọn phạm vi dữ liệu theo yêu cầu nghiệp vụ, không phải siêu tham số của mô hình.
69What role does the include_top parameter play when loading the Inception model for transfer learning?4 lựa chọn
AIt controls the learning rate during training.
BIt includes the fully-connected layers at the top of the model.
CIt adjusts the target size for input images.
DIt excludes the convolutional layers from the top of the model.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "It includes the fully-connected layers at the top of the model.". Khi tải InceptionV3 bằng tf.keras.applications, include_top=True giữ lại phần đầu phân loại gồm các lớp fully-connected (kết nối đầy đủ) cho 1000 lớp ImageNet; đặt include_top=False sẽ bỏ phần này để chỉ lấy khối tích chập làm bộ trích đặc trưng, rồi ta gắn lớp Dense mới cho bài toán của mình, và khi đó được tự chọn kích thước ảnh vào. "It controls the learning rate during training." sai vì learning rate do bộ tối ưu như RMSprop quy định khi compile. "It adjusts the target size for input images." sai vì kích thước ảnh vào đặt qua input_shape hoặc target_size; include_top chỉ ảnh hưởng gián tiếp vì khi giữ phần đầu thì phải dùng kích thước chuẩn. "It excludes the convolutional layers from the top of the model." sai vì tham số này không đụng tới các lớp tích chập; phần trên cùng của mạng là các lớp kết nối đầy đủ chứ không phải tích chập.
ATo increase the number of training epochs
BTo randomly drop neurons during training to reduce reliance on specific features
CTo set a fixed learning rate for the entire training process
DTo eliminate regularization effects
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "To randomly drop neurons during training to reduce reliance on specific features". Lớp Dropout trong Keras, ví dụ Dropout(0.2), mỗi bước huấn luyện đặt ngẫu nhiên một tỉ lệ đầu ra nơ-ron về 0, nên mạng không thể dựa mãi vào một vài nơ-ron hay đặc trưng cụ thể mà phải phân tán thông tin, giống như huấn luyện nhiều mạng con khác nhau; khi suy luận, dropout tự tắt và toàn bộ nơ-ron được dùng. "To increase the number of training epochs" sai vì số epoch là tham số của model.fit, dropout không thay đổi nó, dù mạng có dropout đôi khi cần thêm epoch để hội tụ. "To set a fixed learning rate for the entire training process" là việc của optimizer, không liên quan đến việc tắt nơ-ron. "To eliminate regularization effects" nói ngược bản chất, vì dropout chính là một kỹ thuật regularization (chuẩn hoá chống quá khớp).
AMore training data reduces overfitting.
BLimited training data decreases the risk of overfitting.
CThe amount of training data has no impact on overfitting.
DOverfitting occurs only when there is an abundance of training data.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "More training data reduces overfitting.". Overfitting (quá khớp) xảy ra khi mô hình đủ mạnh để học thuộc cả nhiễu và chi tiết riêng của tập huấn luyện nhỏ, nên điểm trên tập huấn luyện cao mà trên tập validation thấp; có nhiều dữ liệu hơn, hay tạo thêm biến thể bằng augmentation, buộc mô hình học quy luật chung đúng cho nhiều mẫu, từ đó khoảng cách giữa hai đường loss thu hẹp. "Limited training data decreases the risk of overfitting." sai vì ít dữ liệu mới là nguyên nhân phổ biến nhất khiến mô hình học thuộc lòng. "The amount of training data has no impact on overfitting." sai vì lượng dữ liệu là một trong những yếu tố ảnh hưởng mạnh nhất tới khả năng khái quát. "Overfitting occurs only when there is an abundance of training data." sai vì nó ngược với thực tế: dữ liệu dồi dào giúp giảm quá khớp, còn quá khớp thường gặp nhất khi dữ liệu khan hiếm so với độ phức tạp của mô hình.
AIncreasing image brightness
BReducing image contrast
CFlipping images horizontally
DAll of the above
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "All of the above". Image augmentation (tăng cường ảnh) tạo thêm biến thể của ảnh huấn luyện bằng các phép biến đổi ngẫu nhiên nhưng vẫn giữ nhãn, giúp mô hình bớt overfitting (quá khớp); cả ba kỹ thuật nêu ra đều thông dụng trong TensorFlow nên chọn phương án gộp. "Increasing image brightness" là kỹ thuật đúng, thực hiện qua brightness_range của ImageDataGenerator hoặc tf.image.random_brightness, nhưng chỉ là một trong ba nên chọn riêng nó là chưa đủ. "Reducing image contrast" cũng đúng, dùng tf.image.random_contrast hoặc lớp RandomContrast để mô phỏng điều kiện ánh sáng khác nhau, song chọn riêng nó bỏ sót việc tăng độ sáng và lật ảnh. "Flipping images horizontally" đúng và phổ biến nhất, qua horizontal_flip=True hoặc lớp RandomFlip, nhưng cũng chỉ là một phần của đáp án đầy đủ.
73How does a pre-trained model contribute to achieving good results with a small training dataset?4 lựa chọn
AIt completely replaces the need for any training on the small dataset
BIt provides an initial set of weights that capture generic features, enhancing model performance
CIt hinders the model's ability to adapt to the small dataset
DPre-trained models are not suitable for small datasets
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "It provides an initial set of weights that capture generic features, enhancing model performance". Một mạng đã huấn luyện trên tập lớn đã học được các đặc trưng chung như cạnh, góc, kết cấu và hình khối ở các lớp tích chập; dùng lại các trọng số này làm điểm xuất phát, tập dữ liệu nhỏ chỉ cần dạy thêm các lớp phân loại mới phía trên, hoặc fine-tuning (tinh chỉnh) vài lớp trên cùng, nên đạt độ chính xác cao mà ít bị quá khớp. "It completely replaces the need for any training on the small dataset" sai vì vẫn phải huấn luyện ít nhất các lớp mới để khớp với nhãn của bài toán. "It hinders the model's ability to adapt to the small dataset" ngược lại thực tế, các đặc trưng có sẵn giúp mô hình thích nghi nhanh hơn với ít dữ liệu. "Pre-trained models are not suitable for small datasets" sai vì tập nhỏ chính là trường hợp học chuyển giao phát huy hiệu quả nhất.
A
tf.keras.preprocessing.text_dataset_from_directoryB
tf.keras.datasets.load_imagesC
tf.keras.utils.image_dataset_from_directoryD
tf.keras.datasets.load_dataLời giải
Mở trang câu hỏi này →Đáp án đúng: "tf.keras.utils.image_dataset_from_directory". Hàm này đọc một thư mục có các thư mục con mang tên lớp, tự gán nhãn theo tên thư mục, đưa ảnh về image_size, chia lô theo batch_size, có thể tách tập validation bằng validation_split và trả về tf.data.Dataset; đặt label_mode='categorical' thì nhãn ở dạng one-hot hợp với phân loại nhiều lớp. "tf.keras.preprocessing.text_dataset_from_directory" sai vì nó nạp tệp văn bản thành tập dữ liệu chuỗi cho bài toán ngôn ngữ, không đọc ảnh. "tf.keras.datasets.load_images" sai vì mô-đun tf.keras.datasets không có hàm nào tên như vậy. "tf.keras.datasets.load_data" sai vì load_data là hàm của từng bộ dữ liệu dựng sẵn, ví dụ tf.keras.datasets.mnist.load_data(), chỉ tải các tập mẫu có sẵn như MNIST hay CIFAR-10 chứ không đọc ảnh từ thư mục của người dùng.
75What type of dataset is commonly found on Kaggle for exploring a dog and cat classification problem?4 lựa chọn
AHousing prices dataset
BImage classification dataset
CMovie ratings dataset
DHistorical weather data
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Image classification dataset". Bài toán phân biệt chó và mèo là phân loại ảnh nhị phân: mỗi mẫu là một bức ảnh có nhãn "dog" hoặc "cat", và bộ Dogs vs. Cats trên Kaggle là ví dụ kinh điển để luyện CNN với ImageDataGenerator, flow_from_directory và lớp ra sigmoid với binary_crossentropy. "Housing prices dataset" sai vì giá nhà là dữ liệu dạng bảng cho bài toán hồi quy, đầu ra là số liên tục chứ không phải nhãn ảnh. "Movie ratings dataset" sai vì điểm đánh giá phim dùng cho hệ khuyến nghị, gồm bộ ba người dùng, phim, điểm số. "Historical weather data" sai vì dữ liệu thời tiết theo thời gian là chuỗi thời gian (time series), hợp với bài dự báo bằng RNN hay LSTM, không chứa ảnh chó mèo.
76In the context of convolutional neural networks (CNNs), what problem does padding help to address?4 lựa chọn
AOverfitting
BUnderfitting
CLoss of information at the edges of an image
DLack of model interpretability
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Loss of information at the edges of an image". Khi trượt bộ lọc tích chập mà không đệm, điểm ảnh ở rìa được bộ lọc đi qua ít lần hơn điểm ở giữa và kích thước đầu ra co lại, ví dụ ảnh 28×28 qua bộ lọc 3×3 còn 28 − 3 + 1 = 26; padding (đệm) thêm viền giá trị 0 quanh ảnh, với padding='same' đầu ra giữ nguyên 28×28 và thông tin ở rìa được xử lý đầy đủ hơn. "Overfitting" là hiện tượng mô hình học thuộc dữ liệu huấn luyện, được xử lý bằng dropout, augmentation hay regularization chứ không phải bằng padding. "Underfitting" là mô hình quá yếu để học quy luật, cách chữa là tăng dung lượng hoặc huấn luyện lâu hơn. "Lack of model interpretability" là vấn đề khó giải thích quyết định của mạng, không liên quan đến việc giữ kích thước hay thông tin rìa ảnh.
AIt is fixed and predefined.
BIt is randomly generated during training.
CIt is based on the document frequency of subwords.
DIt is learned from the input text during training.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "It is learned from the input text during training.". Bộ mã hoá từ con (subword text encoder) xây từ vựng bằng cách quét kho văn bản đầu vào, bắt đầu từ ký tự rồi lặp lại việc ghép những mảnh hay đi cùng nhau thành đơn vị lớn hơn cho tới khi đạt kích thước mục tiêu; vì vậy từ vựng phản ánh chính dữ liệu, từ hiếm được tách thành các mảnh quen thuộc và không còn từ nằm ngoài từ vựng. "It is fixed and predefined." sai vì từ vựng không được cho sẵn mà sinh ra từ kho văn bản cụ thể, đổi kho thì từ vựng đổi theo. "It is randomly generated during training." sai vì quá trình xây dựng là tất định dựa trên thống kê của văn bản, không phải ngẫu nhiên. "It is based on the document frequency of subwords." chưa đúng: tần suất xuất hiện có được dùng trong lúc học, nhưng document frequency (số văn bản chứa một từ) là đại lượng của TF-IDF, còn từ vựng từ con là kết quả của quá trình học trên văn bản chứ không phải một phép đếm số văn bản.
AZero padding and feature padding
BCircular padding and symmetric padding
CValid padding and same padding
DDynamic padding and fixed padding
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Valid padding and same padding". Trong các lớp Conv2D và pooling của TensorFlow, tham số padding chỉ nhận hai giá trị: 'valid' là không đệm, bộ lọc chỉ trượt ở vị trí nằm trọn trong ảnh nên đầu ra nhỏ đi (ảnh 28 qua kernel 3 còn 28 − 3 + 1 = 26); 'same' là đệm 0 quanh viền để với stride 1 đầu ra giữ nguyên kích thước đầu vào. "Zero padding and feature padding" sai vì zero padding chỉ là cách thực hiện của 'same', còn feature padding không phải một chế độ có trong TensorFlow. "Circular padding and symmetric padding" sai vì đó là kiểu đệm theo vòng hoặc đối xứng gương; tf.pad có chế độ 'SYMMETRIC' và 'REFLECT' nhưng chúng không phải hai giá trị padding của lớp tích chập. "Dynamic padding and fixed padding" sai vì đây không phải tên chế độ đệm trong TensorFlow; đệm động theo batch là khái niệm của việc xếp batch chuỗi văn bản.
79What is the goal of sentiment analysis?4 lựa chọn
ATo summarize long passages of text
BTo determine the author's identity
CTo classify the emotional polarity of text
DTo translate text from one language to another
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "To classify the emotional polarity of text". Sentiment analysis (phân tích cảm xúc) xác định thái độ mà văn bản thể hiện, như tích cực hay tiêu cực, ví dụ phân loại bình luận phim IMDB hay tiêu đề mỉa mai; trong Keras, văn bản được tokenize, pad_sequences, đưa qua Embedding rồi tới lớp Dense sigmoid cho ra xác suất thuộc lớp tích cực. "To summarize long passages of text" là bài toán tóm tắt văn bản, đầu ra là một đoạn văn ngắn hơn chứ không phải nhãn cảm xúc. "To determine the author's identity" là bài toán xác định tác giả dựa trên văn phong, không quan tâm văn bản vui hay buồn. "To translate text from one language to another" là dịch máy, một bài toán chuỗi sang chuỗi, khác hoàn toàn với việc gán nhãn thái độ cho văn bản.
ATo identify stop words in text
BTo generate creative writing
CTo translate text between languages
DTo predict the probability of a word given its context in a sentence
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "To predict the probability of a word given its context in a sentence". Mô hình ngôn ngữ học phân phối xác suất của từ tiếp theo dựa trên các từ đứng trước (hoặc xung quanh); trong Keras có thể dựng bằng Embedding, LSTM và lớp Dense softmax cỡ từ vựng, và chính khả năng ước lượng xác suất này cho máy nắm được ngữ pháp và ngữ nghĩa, làm nền cho sinh văn bản, gợi ý từ hay dịch máy. "To identify stop words in text" sai vì từ dừng thường được lọc bằng danh sách cố định, không cần mô hình ngôn ngữ. "To generate creative writing" chỉ là một ứng dụng xây trên mô hình ngôn ngữ bằng cách lấy mẫu lặp lại từ phân phối xác suất, không phải vai trò cốt lõi của nó. "To translate text between languages" là một bài toán riêng dùng mô hình seq2seq có bộ mã hoá và bộ giải mã; mô hình ngôn ngữ có thể là một thành phần trong đó nhưng không định nghĩa vai trò được hỏi.
ACreating a bag-of-words representation
BReducing words to their root forms
CBreaking down text into individual words or tokens
DApplying sentiment analysis to words
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Breaking down text into individual words or tokens". Tokenization (tách token) là bước đầu của mã hoá dựa trên từ: câu được cắt thành từng từ hoặc đơn vị (token), rồi mỗi token được gán một số nguyên; trong Keras, Tokenizer với fit_on_texts xây word_index và texts_to_sequences đổi câu thành dãy số, có thể đặt oov_token cho từ chưa gặp. "Creating a bag-of-words representation" sai vì túi từ là cách biểu diễn được xây sau khi đã tách token, đếm tần suất từ và bỏ qua thứ tự. "Reducing words to their root forms" sai vì đó là stemming hoặc lemmatization, một bước chuẩn hoá tuỳ chọn khác với việc tách token. "Applying sentiment analysis to words" sai vì phân tích cảm xúc là bài toán mô hình giải quyết ở phía sau, dùng chuỗi token làm đầu vào chứ không phải chính việc tách token.
A
encoder.decode_subwords(sequence)B
tf.text.decode_subwords(encoder, sequence)C
tf.text.SubwordTextEncoder.decode(sequence)D
encoder.decode(sequence)Lời giải
Mở trang câu hỏi này →Đáp án đúng: "encoder.decode(sequence)". Bộ mã hoá đơn vị dưới từ như SubwordTextEncoder đi kèm bộ dữ liệu imdb_reviews/subwords8k của TensorFlow Datasets là một đối tượng có hai phương thức đối xứng: encode biến chuỗi thành danh sách chỉ số subword, còn decode ghép các chỉ số đó lại thành văn bản gốc; vì từ vựng nằm trong chính đối tượng encoder, ta gọi decode trên thể hiện đó. "encoder.decode_subwords(sequence)" gọi một phương thức không có trên encoder. "tf.text.decode_subwords(encoder, sequence)" không phải hàm của TensorFlow Text, thư viện này không có hàm giải mã nhận encoder làm tham số. "tf.text.SubwordTextEncoder.decode(sequence)" sai ở hai điểm: SubwordTextEncoder thuộc TensorFlow Datasets chứ không nằm trong tf.text, và gọi decode trực tiếp trên lớp thì thiếu thể hiện mang bộ từ vựng cần để giải mã.
A
tf.text.create_subword_encoder()B
tf.text.build_subword_encoder()C
tf.text.generate_subword_encoder()D
tf.text.SubwordTextEncoder.build_from_corpus()Lời giải
Mở trang câu hỏi này →Đáp án đúng: "tf.text.SubwordTextEncoder.build_from_corpus()". build_from_corpus là phương thức lớp thật của SubwordTextEncoder, nhận một bộ sinh văn bản và target_vocab_size rồi học từ vựng từ con trên kho văn bản đó, sau đó dùng encode và decode để chuyển chuỗi ký tự thành dãy số và ngược lại. Cần lưu ý trên thực tế lớp này nằm ở tfds.deprecated.text của TensorFlow Datasets (trước đó là tfds.features.text), không thuộc gói tf.text, nhưng trong bốn lựa chọn đây là cách gọi duy nhất ứng với một API có thật. "tf.text.create_subword_encoder()" sai vì không tồn tại hàm nào tên như vậy. "tf.text.build_subword_encoder()" sai vì tên này nghe giống build_from_corpus nhưng không phải hàm có thật, bộ mã hoá được dựng qua phương thức của lớp chứ không qua hàm tự do. "tf.text.generate_subword_encoder()" cũng là tên không tồn tại; tf.text chỉ cung cấp các tokenizer như WordpieceTokenizer hay SentencepieceTokenizer.
Anltk
Bgensim
Cscikit-learn
Dtf.text
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "tf.text". TensorFlow Text (import tensorflow_text, thường gọi tf.text) là thư viện đi kèm TensorFlow cung cấp các bộ tách subword (từ con) như WordpieceTokenizer, SentencepieceTokenizer và BertTokenizer, chạy được ngay trong đồ thị TensorFlow nên dùng được trong pipeline tf.data và khi triển khai mô hình. "nltk" sai vì NLTK là thư viện xử lý ngôn ngữ tự nhiên độc lập trong Python, mạnh về tách từ cổ điển, stemming, gán nhãn từ loại, không thuộc hệ TensorFlow. "gensim" sai vì Gensim chuyên mô hình chủ đề và vectơ từ như Word2Vec, không phải bộ mã hoá subword của TensorFlow. "scikit-learn" sai vì Scikit-learn có CountVectorizer, TfidfVectorizer cho văn bản nhưng làm việc ở mức từ hoặc n-gram ký tự, không phải thư viện TensorFlow cho subword.