1. 金融新闻标题分词与词性标注

金融新闻标题分词与词性标注 学习卡片

任务说明

对金融新闻标题做中文分词与词性标注,并从中抽取公司名、机构名、金额、日期四类关键实体。使用 jieba 的 posseg 模块完成分词与词性标注,再按词性标签过滤实体。

环境与依赖

pip install jieba

实现代码

import jieba.posseg as pseg

# 词性标签映射:jieba 的 nr=人名, nt=机构团体, ns=地名, m=数词, t=时间
ENTITY_RULES = {
    "company": {"nt"},          # 机构团体名(含公司)
    "org":     {"nt"},          # 机构名
    "money":   {"m"},           # 数词(金额核心)
    "date":    {"t"},           # 时间词
}

def analyze_title(title):
    """分词 + 词性标注,返回词列表和实体字典"""
    words = [(w.word, w.flag) for w in pseg.cut(title)]
    entities = {k: [] for k in ENTITY_RULES}
    for word, flag in words:
        for ent_type, flags in ENTITY_RULES.items():
            if flag in flags:
                entities[ent_type].append(word)
    return words, entities

def extract_entities(title):
    """只返回实体字典"""
    _, entities = analyze_title(title)
    return entities

if __name__ == "__main__":
    titles = [
        "贵州茅台2024年第三季度净利润同比增长15%",
        "中国平安拟收购深圳发展银行全部股份",
        "央行今日开展5000亿元逆回购操作",
        "阿里巴巴宣布在杭州投资100亿元建设数据中心",
    ]
    for t in titles:
        words, ents = analyze_title(t)
        print("标题:", t)
        print("分词:", "/".join(f"{w}({f})" for w, f in words))
        print("实体:", {k: v for k, v in ents.items() if v})
        print("-" * 50)

运行方式

python analyze.py

验证方法与通过条件

  • 运行后每条标题应输出分词结果(词+词性标签)和实体字典。
  • 通过条件:金额类实体能捕获数词(如"5000亿""100亿"中的数词部分),日期类能捕获时间词(如"2024年"),机构类能捕获 nt 标签词(如"央行""阿里巴巴")。
  • 若某类实体为空列表,说明该标题中无对应词性词,属正常情况。

关键点

jieba 的 nt 标签同时覆盖公司和机构,因此 company 与 org 会得到相同结果;如需区分,可加载自定义词典为具体公司名指定标签。金额识别依赖数词 m,实际金额单位(亿/万)可能被切为独立词,可按需合并相邻数词与量词。