Lập trình NLP dần trở nên đơn giản, đặc biệt khi ngày nay, với sự giúp đỡ của các mô hình ngôn ngữ lớn (LLMs) mã nguồn mở và thư viện Python hiện đại, nhiều tác vụ xử lý ngôn ngữ tự nhiên ( NLP ) có thể được giải quyết dễ dàng hơn. Bài viết này sẽ hướng dẫn giải quyết các bài toán lập trình NLP chỉ trong 10 dòng mã Python.
1. Dịch ngôn ngữ
Bài toán lập trình NLP đầu là dịch ngôn ngữ. Chúng ta có thể dùng thư viện Transformers để thực hiện dịch ngôn ngữ. Ví dụ dưới đây sử dụng mô hình T5-base đã được đào tạo trước:
from transformers import T5Tokenizer, T5ForConditionalGeneration preprocessed_text = "translate English to German: the weather is good" tokenizer = T5Tokenizer.from_pretrained('t5-base', ...) tokens = tokenizer.encode(preprocessed_text, ...) model = T5ForConditionalGeneration.from_pretrained('t5-base') outputs = model.generate(tokens, ...) print("Result:", tokenizer.decode(outputs[0], skip_special_tokens=True)) #> Result: Das Wetter ist gut.
Ta cũng có thể dùng pipeline
từ thư viện Transformers để rút ngắn mã lệnh hơn.
2. Tóm tắt văn bản
Bài toán lập trình NLP quan trọng thứ hai là tóm tắt văn bản. Bạn có thể sử dụng mô hình T5 để tóm tắt văn bản thông qua thay đổi tiền tố mong muốn:
from transformers import T5Tokenizer, T5ForConditionalGeneration body = '''Obviously, the lunar surface is covered with craters...''' preprocessed_text = f"summarize: {body}" tokenizer = T5Tokenizer.from_pretrained('t5-base', ...) tokens = tokenizer.encode(preprocessed_text, ...) model = T5ForConditionalGeneration.from_pretrained('t5-base') outputs = model.generate(tokens, ...) print("Result:", tokenizer.decode(outputs[0], skip_special_tokens=True))
3. Trả lời câu hỏi
LLMs cũng có thể trả lời câu hỏi trong ngữ cảnh cho trước. Ví dụ sau đây sử dụng mô hình distilbert-base-cased-distilled-squad
để trả lời câu hỏi dựa trên một đoạn văn:
from transformers import pipeline question_answerer = pipeline("question-answering", ...) result = question_answerer(question="Which surface has collision with meteorites", context=body)
4. Tạo sinh ngôn ngữ
Một hướng thú vị khác là tạo sinh ngôn ngữ. Trong ví dụ này, chúng ta sử dụng mô hình GPT-2 để tạo ra các đoạn văn tự động. GPT-2 là tiền thân của ChatGPT và GPT-4 nổi tiếng.
from transformers import GPT2Tokenizer, TFGPT2LMHeadModel tokenizer = GPT2Tokenizer.from_pretrained("gpt2") input_ids = tokenizer.encode("I am going to say", ...) model = TFGPT2LMHeadModel.from_pretrained("gpt2", ...) output = model.generate(input_ids, ...) print("Output:", tokenizer.decode(output[0], skip_special_tokens=True))
5. Phân tích cảm xúc
Phân tích cảm xúc đóng vai trò quan trọng trong kinh doanh. Trong ví dụ này, chúng ta sẽ sử dụng mô hình distilbert-base-uncased-finetuned-sst-2-english
để phân tích cảm xúc của một đoạn văn:
from transformers import pipeline sentiment_pipeline = pipeline("sentiment-analysis", ...) data = ["It was not bad", "I expected to love it but I was wrong"] sentiment_pipeline(data)
6. Nhận dạng thực thể có tên (NER)
NER giúp trích xuất các thực thể như tên, địa điểm, ngày tháng, v.v., từ văn bản. Chúng ta có thể sử dụng mô hình bert-base-NER
để thực hiện việc này:
from transformers import pipeline ner = pipeline("ner", model="dslim/bert-base-NER", ...) ner(body)
7. Rút trích từ khóa
Ngoài NER, chúng ta cũng có thể sử dụng thuật toán rút trích từ khóa như KeyBERT để tìm thêm thông tin từ cùng đoạn văn:
from keybert import KeyBERT kw_model = KeyBERT() keywords = kw_model.extract_keywords(body, ...) print(keywords)
Kết luận
Qua bài viết này, chúng ta đã tìm hiểu được nhiều kỹ thuật xử lý ngôn ngữ tự nhiên chỉ với vài dòng mã Python. Hãy chia sẻ bài viết và truy cập trituenhantao.io cùng các kênh thông tin khác để cập nhật kiến thức mới nhất về lĩnh vực này.