Lập trình NLP dành cho người mới bắt đầu

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.

Lập trình NLP
Lập trình NLP

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 ChatGPTGPT-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.