Chuyển đến nội dung chính

レッスン 16: テキストの要約と機械翻訳

抽出的な要約と抽象的な要約。 T5、BART、ペガサスを要約します。評価: ROUGE メトリクス。機械翻訳: MarianMT、mBART、NLLB。翻訳品質: BLEU、chrF。ニュースとベトナム語翻訳をまとめたデモ。

🧠 AI と ML — レッスン 15 レッスン 16: テキストの要約と機械 翻訳

NLP の基礎から上級まで: 自然言語処理をマスターする

パート 5: NLP の応用問題 — 実践プロジェクト

xdev.asia

はじめに

要約 (要約) と 機械翻訳 (機械翻訳) は、2 つの最も重要な シーケンス間の問題です。入力はテキストであり、出力もテキストです。どちらもエンコーダ/デコーダ アーキテクチャ (T5、BART、mBART) を使用します。


1. テキストの要約

1.1 抽出的 vs 抽象的

タイプ仕組み利点制限事項
抽出最も重要な文を選択してください幻覚はありません支離滅裂かも
抽象的新しい要約文を生成一貫性のある、自然な幻覚が見える

1.2 T5 による抽象的な要約

from transformers import pipeline

summarizer = pipeline("summarization", model="facebook/bart-large-cnn")

article = """
Natural Language Processing (NLP) is a subfield of artificial intelligence
that focuses on enabling computers to understand, interpret, and generate
human language. NLP combines computational linguistics, machine learning,
and deep learning to process and analyze large amounts of natural language
data. Key applications include machine translation, sentiment analysis,
chatbots, and text summarization. Recent advances in transformer-based
models like BERT and GPT have significantly improved NLP capabilities.
"""

summary = summarizer(article, max_length=60, min_length=20, do_sample=False)
print(summary[0]["summary_text"])

1.3 評価: ROUGE メトリクス

from rouge_score import rouge_scorer

scorer = rouge_scorer.RougeScorer(['rouge1', 'rouge2', 'rougeL'], use_stemmer=True)

reference = "NLP enables computers to understand human language using AI and deep learning."
hypothesis = "NLP is an AI subfield that helps computers process natural language."

scores = scorer.score(reference, hypothesis)
for key, value in scores.items():
    print(f"  {key}: P={value.precision:.3f} R={value.recall:.3f} F1={value.fmeasure:.3f}")
メトリクス何を測定するか
ルージュ-1ユニグラムオーバーラップ
ルージュ2バイグラムの重複
ルージュエル最長共通部分列

2. 機械翻訳

2.1 顔を抱きしめながら翻訳する

from transformers import pipeline

# English → Vietnamese
translator = pipeline("translation", model="Helsinki-NLP/opus-mt-en-vi")
result = translator("Natural Language Processing is a fascinating field of AI")
print(result[0]["translation_text"])

# Multilingual translation với NLLB
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

model_name = "facebook/nllb-200-distilled-600M"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)

# Dịch EN → VI
text = "Machine learning is transforming every industry."
inputs = tokenizer(text, return_tensors="pt")

translated = model.generate(
    **inputs,
    forced_bos_token_id=tokenizer.convert_tokens_to_ids("vie_Latn"),
    max_length=128,
)
print(tokenizer.decode(translated[0], skip_special_tokens=True))

2.2 評価: BLEU スコア

from sacrebleu import corpus_bleu

references = [["Xử lý ngôn ngữ tự nhiên là lĩnh vực hấp dẫn của AI"]]
hypotheses = ["Xử lý ngôn ngữ tự nhiên là lĩnh vực thú vị của trí tuệ nhân tạo"]

bleu = corpus_bleu(hypotheses, references)
print(f"BLEU: {bleu.score:.2f}")
メトリクス何を測定するか範囲
ブルーN グラムの精度0-100
chrF文字の F スコア0-100
コメット学習済みメトリクス (ニューラル)0-1

3. ViT5 によるベトナム語のまとめ

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM

model_name = "VietAI/vit5-base-vietnews-summarization"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)

article = """Trí tuệ nhân tạo đang thay đổi mọi lĩnh vực trong cuộc sống.
Từ y tế, giáo dục đến tài chính, AI mang lại nhiều lợi ích to lớn.
Tuy nhiên, việc phát triển AI cũng đặt ra nhiều thách thức về đạo đức
và quyền riêng tư cần được giải quyết."""

inputs = tokenizer(article, return_tensors="pt", max_length=512, truncation=True)
outputs = model.generate(**inputs, max_length=100)
summary = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(summary)

概要

数学の問題モデルメトリクスベトナム語
要約BART、T5、ペガサスルージュ-1/2/LViT5、BARTpho
翻訳マリアンMT、NLLB、mBARTブルー、chrF、COMETopus-mt-en-vi、NLLB

次の記事

レッスン 17: ベトナム語のための NLP — ベトナム語 NLP の具体的な課題と解決策: 単語分割、PhoBERT、ViT5。