Phase 05: NLP: Foundations to Advanced

Xây dựng biểu đồ kiến thức

NER tìm thấy các thực thể. thực thể liên kết được neo chúng. Khóa kết nối tìm thấy các cạnh giữa chúng. Hình đồ kiến thức là tổng số các nút, cạnh và nguồn gốc của chúng.

Type: Build

Languages: Python

Prerequisites: Phase 5 · 06 (NER), Phase 5 · 25 (Entity Linking)

Time: ~60 minutes

Vấn đề

Một nhà phân tích đọc: "Tim Cook trở thành CEO của Apple vào năm 2011".

  • (Tim Cook, role, CEO)
  • (Tim Cook, employer, Apple)
  • (Tim Cook, start_date, 2011)
  • (Apple, type, Organization)

Relation Extraction (RE) biến văn bản tự do thành cấu trúc ba (subject, relation, object)- Tóm lại trên một tập hợp và bạn có một biểu đồ kiến thức. Tóm lại và truy vấn và bạn có một nền luận điểm cho RAG, phân tích, hoặc kiểm toán tuân thủ.

Vấn đề năm 2026: LLM rút ra các mối quan hệ nhiệt tình. quá nhiệt tình. Họ ảo giác về ba lần mà văn bản nguồn không hỗ trợ. Nếu không có nguồn gốc, bạn không thể phân biệt ba lần thực sự từ tiểu thuyết có thể tin được. Câu trả lời năm 2026 là đường ống dẫn neo và xác minh theo kiểu AEVS.

Khái niệm

!Text → triples → knowledge graph

Triple form. (subject_entity, relation_type, object_entity). Các mối quan hệ đến từ một ontology đóng (chất tính của Wikidata, FIBO, UMLS) hoặc một tập mở (tương tự OpenIE, bất cứ điều gì có thể).

Three extraction approaches.

  1. Rule / pattern-based.Các mẫu Hearst: "X như Y" → (Y, isA, X)Thêm Regex thủ công, thô lỗ, chính xác, có thể giải thích được.
  2. Supervised classifier.Với hai sự đề cập của thực thể trong một câu, dự đoán mối quan hệ từ một tập cố định.
  3. Generative LLM.Hãy yêu cầu mô hình phát ra 3 lần, hoạt động ngoài hộp, cần nguồn gốc, hoặc ảo giác những thứ có vẻ hợp lý.

AEVS (Anchor-Extraction-Verification-Supplement, 2026).Quadro giảm ảo giác hiện tại:

  • Anchor.Xác định từng khoảng thời gian thực thể và khoảng thời gian từ ngữ liên quan với vị trí chính xác.
  • Extract.Tạo ba liên kết với các vòng neo.
  • Verify.Đáp lại từng phần tử ba trở lại với văn bản nguồn; từ chối bất cứ điều gì không được hỗ trợ.
  • Supplement.Một thẻ bảo hiểm đảm bảo không có khoảng cách neo được giảm.

Tâm giác giảm mạnh, đòi hỏi tính toán nhiều hơn nhưng có thể kiểm tra được.

The open-vs-closed tradeoff.

  • Closed ontology.Danh sách các tính năng cố định (ví dụ, 11,000+ tính năng của Wikidata). Có thể dự đoán được. Có thể tìm kiếm được. Khó để phát minh.
  • Open IE.Bất kỳ câu nào cũng trở thành mối quan hệ, nhớ lại cao, độ chính xác thấp, rối loạn để hỏi.

KG sản xuất thường trộn lẫn: mở IE cho khám phá, sau đó hợp nhất các mối quan hệ vào một ontology đóng trước khi hợp nhất vào biểu đồ chính.

Hãy xây dựng nó

Bước 1: Lấy lấy dựa trên mẫu

pythonPATTERNS = [
    (r"(?P<s>[A-Z]\w+) (?:is|was) (?:a|an|the) (?P<o>[A-Z]?\w+)", "isA"),
    (r"(?P<s>[A-Z]\w+) (?:is|was) born in (?P<o>\w+)", "bornIn"),
    (r"(?P<s>[A-Z]\w+) works? (?:at|for) (?P<o>[A-Z]\w+)", "worksAt"),
    (r"(?P<s>[A-Z]\w+) founded (?P<o>[A-Z]\w+)", "founded"),
]

Nhìn xemcode/main.pyCác mẫu Hearst vẫn được chuyển vào các đường ống cụ thể vì chúng có thể gỡ lỗi.

Bước 2: Định dạng quan hệ giám sát

pythonfrom transformers import AutoTokenizer, AutoModelForSequenceClassification

tok = AutoTokenizer.from_pretrained("Babelscape/rebel-large")
model = AutoModelForSequenceClassification.from_pretrained("Babelscape/rebel-large")

text = "Tim Cook was born in Alabama. He later became CEO of Apple."
encoded = tok(text, return_tensors="pt", truncation=True)
output = model.generate(**encoded, max_length=200)
triples = tok.batch_decode(output, skip_special_tokens=False)

REBEL là một bộ thu thập mối quan hệ seq2seq: text in, triples out, đã trong ID thuộc tính Wikidata. Được điều chỉnh tốt trên dữ liệu giám sát từ xa.

Bước 3: Phân xuất bằng LLM với việc neo

pythonprompt = f"""Extract (subject, relation, object) triples from the text.
For each triple, include the exact character span in the source text.

Text: {text}

Output JSON:
[{{"subject": {{"text": "...", "span": [start, end]}},
   "relation": "...",
   "object": {{"text": "...", "span": [start, end]}}}}, ...]

Only include triples fully supported by the text. No inference beyond what is stated.
"""

Hãy kiểm tra mọi lần quay lại với nguồn.text[start:end] != triple_entityĐây là bước "thêm nhận" AEVS dưới dạng tối thiểu.

Bước 4: canonicalize vào một ontology đóng

pythonRELATION_MAP = {
    "is the CEO of": "P169",       # "chief executive officer"
    "was born in":   "P19",         # "place of birth"
    "founded":        "P112",       # "founded by" (inverted subject/object)
    "works at":       "P108",       # "employer"
}


def canonicalize(relation):
    rel_low = relation.lower().strip()
    if rel_low in RELATION_MAP:
        return RELATION_MAP[rel_low]
    return None   # drop unmapped open relations or route to manual review

Việc thi công thường chiếm 60-80% công việc kỹ thuật.

Bước 5: xây dựng một biểu đồ nhỏ và truy vấn

pythontriples = extract(text)
graph = {}
for s, r, o in triples:
    graph.setdefault(s, []).append((r, o))


def neighbors(node, relation=None):
    return [(r, o) for r, o in graph.get(node, []) if relation is None or r == relation]


print(neighbors("Tim Cook", relation="P108"))    # -> [(P108, Apple)]

Đây là nguyên tử của mỗi hệ thống RAG-over-KG. Skala nó bằng các cửa hàng ba RDF (Blazegraph, Virtuoso), đồ thị thuộc tính (Neo4j), hoặc các cửa hàng đồ thị tăng vector.

Những bẫy

  • Coreference before RE."Ông ấy đã thành lập Apple" RE cần biết "Ông ấy" là ai.
  • Entity canonicalization."Apple Inc" và "Apple" phải giải quyết cho cùng một nút.
  • Hallucinated triples.LLM phát ra ba lần văn bản không hỗ trợ.
  • Relation canonicalization drift.Các mối quan hệ IE mở không nhất quán ("được sinh ra, " "từ, " " là người bản địa của").
  • Temporal errors."Tim Cook là CEO của Apple" đúng bây giờ, sai trong năm 2005.P580giờ bắt đầu, P582thời gian kết thúc trong Wikidata).
  • Domain mismatch.REBEL được đào tạo trên Wikipedia. Các văn bản pháp lý, y học và khoa học thường cần mô hình RE được điều chỉnh tốt.

Sử dụng nó

Số 2026:

SituationPick
Fast production, general domainREBEL or LlamaPred with Wikidata canonicalization
Domain-specific (biomed, legal)SciREX-style domain fine-tune + custom ontology
LLM-prompted, audited outputAEVS pipeline: anchor → extract → verify → supplement
High-volume news IEPattern-based + supervised hybrid
Building a KG from scratchOpen IE + manual canonicalization pass
Temporal KGExtract with qualifiers (start/end time, point in time)

Mô hình tích hợp: NER → coref → thực thể liên kết → khai thác mối quan hệ → bản đồ ontology → tải đồ thị. Mỗi giai đoạn là một cổng chất lượng tiềm năng.

Chuyển nó

Cứ như outputs/skill-re-designer.md- Có thể là:

markdown---
name: re-designer
description: Design a relation extraction pipeline with provenance and canonicalization.
version: 1.0.0
phase: 5
lesson: 26
tags: [nlp, relation-extraction, knowledge-graph]
---

Given a corpus (domain, language, volume) and downstream use (KG-RAG, analytics, compliance), output:

1. Extractor. Pattern-based / supervised / LLM / AEVS hybrid. Reason tied to precision vs recall target.
2. Ontology. Closed property list (Wikidata / domain) or open IE with canonicalization pass.
3. Provenance. Every triple carries source char-span + doc id. Non-negotiable for audit.
4. Merge strategy. Canonical entity id + relation id + temporal qualifiers; dedup policy.
5. Evaluation. Precision / recall on 200 hand-labelled triples + hallucination-rate on LLM-extracted sample.

Refuse any LLM-based RE pipeline without span verification (source provenance). Refuse open-IE output flowing into a production graph without canonicalization. Flag pipelines with no temporal qualifier on time-bounded relations (employer, spouse, position).

Các bài tập

  1. Easy.Đưa máy lấy mẫu vào code/main.py5 câu trong một bài báo.
  2. Medium.Sử dụng REBEL (hoặc một LLM nhỏ) trên cùng một câu. So sánh ba lần. Phân tích nào có độ chính xác cao hơn? nhớ lại cao hơn?
  3. Hard.Xây dựng đường ống AEVS: trích xuất bằng LLM + xác minh khoảng thời gian so với nguồn. đo tỷ lệ ảo giác trước so với sau bước xác minh trên 50 câu kiểu Wikipedia.

Các điều khoản chính

TermWhat people sayWhat it actually means
TripleSubject-relation-object(s, r, o) tuple that is the atomic unit of a KG.
Open IEExtract anythingOpen-vocabulary relation phrases; high recall, low precision.
Closed ontologyFixed schemaBounded set of relation types (Wikidata, UMLS, FIBO).
CanonicalizationNormalize everythingMap surface names / relations to canonical ids.
AEVSGrounded extractionAnchor-Extraction-Verification-Supplement pipeline (2026).
ProvenanceSource-of-truth linkEvery triple carries a doc id + char-span to its source.
Distant supervisionCheap labelsAlign text with an existing KG to create training data.

Đọc thêm

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.