简单命名实体识别

使用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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值