主页

索引

模块索引

搜索页面

4.3.4. 历史

传统方法-基于规则

  • 基于规则的方法的优点是简单直观,但缺点是对于复杂的文本结构和多样性的实体类别可能效果有限。

示例:

import re

def rule_based_ner(text):
    entities = []

    # 人名识别规则
    person_pattern = re.compile(r"([张李王赵陈刘]先生|[A-Za-z]+\s[A-Za-z]+)")
    persons = re.findall(person_pattern, text)
    entities.extend([(p, "PERSON") for p in persons])

    # 地名识别规则
    location_pattern = re.compile(r"(北京|上海|广州|深圳|[\u4e00-\u9fa5]+[市省])")
    locations = re.findall(location_pattern, text)
    entities.extend([(l, "LOCATION") for l in locations])

    # 组织机构名识别规则
    org_pattern = re.compile(r"(公司|集团|[\u4e00-\u9fa5]+[公司])")
    orgs = re.findall(org_pattern, text)
    entities.extend([(o, "ORGANIZATION") for o in orgs])

    return entities

text = "张先生在北京的公司工作,与李女士一起参加了上海的会议。"
entities = rule_based_ner(text)
print(entities)

# [('张先生', 'PERSON'), ('北京', 'LOCATION'), ('上海', 'LOCATION'), ('张先生在北京的公司', 'ORGANIZATION')]

传统方法-基于统计

  • 通过词频统计判断每个词是否可能是人名、地名或组织机构名。这种方法的优点是简单易懂,缺点是可能对于一些出现频率较低但仍然重要的实体难以识别。

主页

索引

模块索引

搜索页面