简单命名实体识别

使用pyhanlp包识别命名实体(机构名,地名)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from pyhanlp import *
# 目标词性列表
# nt: 机构团体名
# ns: 地名
# nsf: 音译地名
part_of_speech_list = ['nt', 'ns', 'nsf']


# 判断是否为中文单词
# 汉字编码范围\u4E00-\u9FA5
def is_all_chinese(strs):
    flag = True
    for ch in strs:
        if not '\u4e00' <= ch <= '\u9fa5':
            flag = False
    return flag


def get_black_list():
    black_list = []
    with open('./blacklist') as f:
        for line in f:
            line = line.strip()
            if line not in black_list:
                black_list.append(line)
    return black_list


black_list = get_black_list()


def entity_recognition(sentence):
    entity = []
    NLPTokenizer = JClass("com.hankcs.hanlp.tokenizer.NLPTokenizer")
    term_list = NLPTokenizer.segment(sentence)
    for term in term_list:
        word = term.word
        nature = str(term.nature)

        if (len(word) < 2) or (nature not in part_of_speech_list) \
                or (word in black_list) or (word in entity):
            continue
        flag = is_all_chinese(word)
        if not flag:
            continue
        entity.append(word)

    return "|".join(entity)


if __name__ == "__main__":
    text = '北约多国海军参加的“海上微风2021”演习已经开始,不过公开信息显示,美国派出的“罗斯”号导弹驱逐舰还窝在乌克兰港口,而英国士兵则在社交媒体上晒乌克兰方面供应的单调饮食,似乎颇有不满。'
    tags = entity_recognition(text)
    print(tags)
### 命名实体识别的基本概念 命名实体识别(Named Entity Recognition, NER)是自然语言处理领域的一个核心任务,主要目标是从文本中提取并分类特定类型的实体[^2]。这些实体通常包括但不限于人名、地名、组织机构名、日期时间等。 #### NER 的基本原理 NER 的工作流程可以分为以下几个方面: 1. **分词**:将输入的文本分解成单词或短语的基本单元[^3]。 2. **特征提取**:基于语法结构和上下文信息,提取有助于实体识别的关键特征。 3. **模型训练与预测**:使用机器学习或深度学习技术构建模型,对每个单词或短语进行标注,确定其所属的实体类别。 4. **后处理**:结合上下文进一步优化识别结果,解决歧义问题。 #### 简单实现方法 以下是使用 Python 中 `nltk` 库进行简单的人名识别示例: ```python import nltk from nltk import word_tokenize, pos_tag, ne_chunk # 输入一段文本 text = "Barack Obama was born in Hawaii." # 分词和词性标注 tokens = word_tokenize(text) pos_tags = pos_tag(tokens) # 使用 NLTK 进行命名实体识别 ner_tree = ne_chunk(pos_tags) # 输出识别结果 print(ner_tree) ``` 上述代码展示了如何通过 `ne_chunk` 函数快速完成简单命名实体识别任务[^4]。运行该程序后,输出的结果将以树形结构表示,其中包含被识别为人名或其他类别的实体。 ### 结合实际案例说明 假设有一段文本:“Apple is planning to open a new store in New York next month.” 在此情况下,“Apple” 可能既指代水果又可能代表科技公司,而 “New York” 则是一个典型的地理位置实体。通过上下文分析以及预定义规则,NER 能够有效地区分不同含义下的相同词汇。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值