精华内容
下载资源
问答
  • hanlp命名实体识别
    2021-10-12 10:23:51

    首先需要安装依赖包:pip install pyhanlp

    识别人名的代码如下:

    from pyhanlp import HanLP
    
    
    def extract_chinese_name(string: str) -> list:
        """使用HanLP人名识别"""
        if (string is None) or (string == ""):
            return []
        segment = HanLP.newSegment().enableNameRecognize(True)
        user_list = []
        for i in segment.seg(string):
            split_words = str(i).split('/')  # check //m
            word, tag = split_words[0], split_words[-1]
            if tag == 'nr':
                user_list.append(word)
        return user_list
    
    
    if __name__ == '__main__':
        user_list = extract_chinese_name("《八佰》(英語:The Eight Hundred)是一部于2020年上映的以中国历史上的战争为题材的电影,由管虎执导,黄志忠、张俊一.....")
        print(user_list) # ['管虎', '黄志忠', '张俊']
    

    这里的nr就表示人名的含义,Hanlp使用隐马模型进行分词,词性标注表可以参考:https://www.hankcs.com/nlp/part-of-speech-tagging.html

    更多相关内容
  • 环境配置 1.jdk安装配置环境变量 2.jpype安装 pip3 install jpype1 3.hanlp相关资源下载,百度云...startJVM(getDefaultJVMPath(), "-Djava.class.path=D:\hanlp\hanlp-1.7.8.jar;D:\han

    环境配置

    1.jdk安装配置环境变量
    2.jpype安装 pip3 install jpype1
    3.hanlp相关资源下载,百度云https://pan.baidu.com/s/1sw4fDjiLO0PhvYxJ2YMOOw 提取码4lm4
    在这里插入图片描述

    代码

    # -*- coding: utf-8 -*-
    
    from jpype import *
    
    #路径
    startJVM(getDefaultJVMPath(), "-Djava.class.path=D:\hanlp\hanlp-1.7.8.jar;D:\hanlp", "-Xms1g", "-Xmx1g")
    
    #繁体转简体
    def TraditionalChinese2SimplifiedChinese(sentence_str):
        HanLP = JClass('com.hankcs.hanlp.HanLP')
        return HanLP.convertToSimplifiedChinese(sentence_str)
    
    #切词&命名实体识别与词性标注(可以粗略识别)
    def NLP_tokenizer(sentence_str):
        NLPTokenizer = JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer')
        return NLPTokenizer.segment(sentence_str)
    
    #地名识别,标注为ns
    def Place_Recognize(sentence_str):
        HanLP = JClass('com.hankcs.hanlp.HanLP')
        segment = HanLP.newSegment().enablePlaceRecognize(True)
        return HanLP.segment(sentence_str)
    
    #人名识别,标注为nr
    def PersonName_Recognize(sentence_str):
        HanLP = JClass('com.hankcs.hanlp.HanLP')
        segment = HanLP.newSegment().enableNameRecognize(True)
        return HanLP.segment(sentence_str)
    
    #机构名识别,标注为nt
    def Organization_Recognize(sentence_str):
        HanLP = JClass('com.hankcs.hanlp.HanLP')
        segment = HanLP.newSegment().enableOrganizationRecognize(True)
        return HanLP.segment(sentence_str)
    
    #标注结果转化成列表
    def total_result(function_result_input):
        x = str(function_result_input)
        y = x[1:len(x)-1]
        y = y.split(',')
        return y
    
    #时间实体
    def time_result(total_result):
        z = []
        for i in range(len(total_result)):
            if total_result[i][-2:] == '/t':
                z.append(total_result[i])
        return z
    
    #Type_Recognition 可以选 ‘place’,‘person’,‘organization’三种实体,
    #返回单一实体类别的列表
    def single_result(Type_Recognition,total_result):
        if Type_Recognition == 'place':
            Type = '/ns'
        elif Type_Recognition == 'person':
            Type = '/nr'
        elif Type_Recognition == 'organization':
            Type = '/nt'
        else:
            print ('请输入正确的参数:(place,person或organization)')
        z = []
        for i in range(len(total_result)):
            if total_result[i][-3:] == Type:
                z.append(total_result[i])
        return z
    
    #把单一实体结果汇总成一个字典
    def dict_result(sentence_str):
        sentence = TraditionalChinese2SimplifiedChinese(sentence_str)
        total_dict = {}
        a = total_result(Place_Recognize(sentence))
        b = single_result('place',a)
        c = total_result(PersonName_Recognize(sentence))
        d = single_result('person',c)
        e = total_result(Organization_Recognize(sentence))
        f = single_result('organization',e)
        g = total_result(NLP_tokenizer(sentence))
        h = time_result(g)
        total_list = [i for i in [b,d,f,h]]
        total_dict.update(place = total_list[0],person = total_list[1],organization = total_list[2],time = total_list[3])
        shutdownJVM()#关闭JVM虚拟机
        return total_dict
    
    #测试
    test_sentence="2018年武胜县新学乡政府大楼门前锣鼓喧天,6月份蓝翔给宁夏固原市彭阳县红河镇捐赠了挖掘机,中国科学院计算技术研究所的宗成庆教授负责教授自然语言处理课程"
    print (dict_result(test_sentence))
    

    配置及修改

    1.在d盘创建hanlp目录将下载好的文件解压放到里面
    2.修改hanlp.properties文件root=D:/hanlp/不然会报如下错误,注意是/不是\

    jpype._jclass.ExceptionInInitializerError: java.lang.ExceptionInInitializerError
    

    上面是使用 jpype来实现的,后来发现可以直接安装调用pyhanlp实现简单实现代码如下:

    # -*- coding:utf-8 -*-
    from pyhanlp import *
    
    content = "现如今,机器学习和深度学习带动人工智能飞速的发展,并在图片处理、语音识别领域取得巨大成功。"
    print(HanLP.segment(content))
    
    content = "马伊琍与文章宣布离婚,华为是背后的赢家。"
    print('原句:' + content)
    print(HanLP.segment(content))
    
    # 添加自定义词典
    # insert会覆盖字典中已经存在的词,add会跳过已经存在的词,
    # add("文章","nr 300") ,nr为词性,300为词频; add("交易平台","nz 1024 n 1") 表示可以一词多性 ,交易平台词性即可为nz 词频为1024,也可为n 词频为1
    CustomDictionary.add("文章", "nr 300")
    CustomDictionary.insert("工程机械", "nz 1024")
    CustomDictionary.add("交易平台", "nz 1024 n 1")
    print(HanLP.segment(content))
    
    segment = HanLP.newSegment().enableNameRecognize(True)
    print(HanLP.segment(content))
    
    展开全文
  • python调用hanlp进行命名实体识别

    千次阅读 2019-07-15 09:11:35
    本文分享自6丁一的猫 的博客,主要是python调用hanlp进行命名实体识别的方法介绍。以下为分享的全文。 1、python与jdk版本位数一致 2、pip install jpype1(python3.5) 3、类库hanlp.jar包、模型data包、配置...

    本文分享自 6丁一的猫 的博客,主要是python调用hanlp进行命名实体识别的方法介绍。以下为分享的全文。

    1、python与jdk版本位数一致

    2、pip install jpype1(python3.5)

    3、类库hanlp.jar包、模型data包、配置文件hanlp.properties放在一个新建目录

    4、修改hanlp.properties中root根目录,找到data

     

    代码调用如下:

     

    1|#coding:utf-8

    2|'''

    3|Created on 2017-11-21

    4|

    5|@author: 刘帅

    6|'''

    7|

    8|

    9|from jpype import *

    10|

    11|startJVM(getDefaultJVMPath(), "-Djava.class.path=D:\hanlp\hanlp-1.3.4.jar;D:\hanlp", "-Xms1g", "-Xmx1g") # 启动JVM,Linux需替换分号;为冒号:

    12|HanLP = JClass('com.hankcs.hanlp.HanLP')

    13|# 中文分词

    14|print(HanLP.segment('你好,欢迎在Python中调用HanLP的API'))

    testCases = [

    15|    "商品和服务",

    16|    "结婚的和尚未结婚的确实在干扰分词啊",

    17|    "买水果然后来世博园最后去世博会",

    18|    "中国的首都是北京",

    19|    "欢迎新老师生前来就餐",

    20|    "工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作",

    21|    "随着页游兴起到现在的页游繁盛,依赖于存档进行逻辑判断的设计减少了,但这块也不能完全忽略掉。"]

    22|for sentence in testCases: print(HanLP.segment(sentence))

    23|# 命名实体识别与词性标注

    24|NLPTokenizer = JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer')

    25|print(NLPTokenizer.segment('中国科学院计算技术研究所的宗成庆教授正在教授自然语言处理课程'))

    26|# 关键词提取

    27|document = "水利部水资源司司长陈明忠9月29日在国务院新闻办举行的新闻发布会上透露," \

    28|           "根据刚刚完成了水资源管理制度的考核,有部分省接近了红线的指标," \

    29|           "有部分省超过红线的指标。对一些超过红线的地方,陈明忠表示,对一些取用水项目进行区域的限批," \

    30|           "严格地进行水资源论证和取水许可的批准。"

    31|print(HanLP.extractKeyword(document, 2))

    32|# 自动摘要

    33|print(HanLP.extractSummary(document, 3))

    34|# 依存句法分析

    35|print(HanLP.parseDependency("徐先生还具体帮助他确定了把画雄鹰、松鼠和麻雀作为主攻目标。"))

    36|shutdownJVM()

     

    结果如下:

     

    1|[你好/vl, ,/w, 欢迎/v, 在/p, Python/nx, 中/f, 调用/v, HanLP/nx, 的/ude1, API/nx]

    2|[商品/n, 和/cc, 服务/vn]

    3|[结婚/vi, 的/ude1, 和/cc, 尚未/d, 结婚/vi, 的/ude1, 确实/ad, 在/p, 干扰/vn, 分词/n, 啊/y]

    4|[买/v, 水果/n, 然后/c, 来/vf, 世博园/n, 最后/f, 去/vf, 世博会/n]

    5|[中国/ns, 的/ude1, 首都/n, 是/vshi, 北京/ns]

    6|[欢迎/v, 新/a, 老/a, 师生/n, 前来/vi, 就餐/vi]

     

    作者:6丁一的猫

    原文链接:https://blog.csdn.net/weixin_36541072/article/details/78591690

    展开全文
  • 实体识别,用hanlp工具输入必须是用列表切分的单个字符 # 命名实体识别 import hanlp recognizer = hanlp.load(hanlp.pretrained.ner.MSRA_NER_BERT_BASE_ZH) # 中文命名实体识别,用hanlp工具输入必须是用列表切分...

    jieba

    分词:按照字序列的一定顺序重新组合

    作用:帮助人更好的理解文字的意思

    jieba通常有三种用法:精确模式, 全模式, 搜索引擎模式

    import jieba
    
    # jieba.cutl如果不给参数,默认是精确模式
    content = "工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作"
    # jieba.cut(content, cut_all=False)
    # 返回一个生成器对象,cut_all=False是精确模式
    print(jieba.lcut(content, cut_all=False))
    ['工信处', '女干事', '每月', '经过', '下属', '科室', '都', '要', '亲口', '交代', '24', '口', '交换机', '等', '技术性', '器件', '的', '安装', '工作']
    
    # cut_all=True 全模式,里面所有能作为词的汉字组合全被提取出来,全模式里面的词有一些并不是必须要的。
    print(jieba.lcut(content, cut_all=True))
    ['工信处', '处女', '女干事', '干事', '每月', '月经', '经过', '下属', '科室', '都', '要', '亲口', '口交', '交代', '24', '口交', '交换', '交换机', '换机', '等', '技术', '技术性', '性器', '器件', '的', '安装', '安装工', '装工', '工作']
    
    
    
    # 搜索引擎模式,相对于全模式,只会切分比较长的词
    jieba.cut_for_search(content)
    print(jieba.lcut_for_search(content))
    ['工信处', '干事', '女干事', '每月', '经过', '下属', '科室', '都', '要', '亲口', '交代', '24', '口', '交换', '换机', '交换机', '等', '技术', '技术性', '器件', '的', '安装', '工作']

    对于一些专用名词,例如默写专业领域的词,jieba通常无法识别分割,我们可以自定义词典,将自定义的词典写进userdict.txt中。

    格式:词语  词频(可省略)  词性 (可省略),用空格隔开

    顺序不能颠倒


     hanlp做分词

    tokenizer = hanlp.load('CTB6_CONVSEG')
    print(tokenizer("工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作"))
    tokenizer=hanlp.utils.rules.tokenizer_english
    print(tokenizer("Open your books and turn to page 20"))

    用hanlp做命名实体识别

    命名实体:各种名词。人名、地名、机构名等等

    例如:周杰伦,朝花夕拾,苹果公司等等。

    命名实体识别(NER):就是识别出一段文本中可能存在的命名实体。

    实体识别,用hanlp工具输入必须是用列表切分的单个字符

    # 命名实体识别
    import hanlp
    
    recognizer = hanlp.load(hanlp.pretrained.ner.MSRA_NER_BERT_BASE_ZH)
    
    # 中文命名实体识别,用hanlp工具输入必须是用列表切分的单个字符
    print(recognizer(list("上海华安工业(集团)公司董事长谭旭光和秘书长张晚霞来到美国纽约现代艺术博物馆参观")))
    
    # 英文命名实体识别
    recognizer1 = hanlp.load(hanlp.pretrained.ner.CONLL03_NER_BERT_BASE_CASED_EN)
    print(recognizer1(["President", "Obama", "is", "speaking", "at", "the", "white", "House"]))

    使用jieba做词性标注

    常见的词性有14中,如名词,动词,形容词等等。

    此行标注以分词为基础,是对文本语言的另一个角度的理解,因此也常常成为AI解决NLP领域高阶任务的重要基础环节。

    词性标注:不仅把词分开,还要标注词性。

    import jieba.posseg as pseg
    
    print(pseg.lcut('我爱北京天安门'))
    
    # [pair('我', 'r'), pair('爱', 'v'), pair('北京', 'ns'), pair('天安门', 'ns')]
    tagger = hanlp.load(hanlp.pretrained.pos.CTB5_POS_RNN_FASTTEXT_ZH)
    print(tagger(["我", "的", "希望", "是", "希望", "和平"]))

    展开全文
  • 8.HanLP实现--命名实体识别

    千次阅读 2020-02-12 18:37:28
    识别出句子中命名实体的边界与类别的任务称为**命名实体识别**。由于上述难点,命名实体识别也是一个统计为主、规则为辅的任务。 对于规则性较强的命名实体,比如网址、E-mail、IBSN、商品编号等,完全可以通过...
  • python调用Hanlp进行命名实体识别

    千次阅读 2017-11-21 13:39:53
    3 类库hanlp.jar包、模型data包、配置文件hanlp.properties放在一个新建目录 4 修改hanlp.properties中root根目录,找到data代码调用如下:#coding:utf-8 ''' Created on 2017-11-21@author: 刘帅 ''
  • 预处理 jieba中文分词 1.首先对文本进行n_gram分词 2.根据上一步的结果 对词典的的词语进行对比 3.... Hankcs bought hankcs.com for 1.5 thousand dollars.') print(b) 命名实体识别(NER) 词性标注(POS)
  • HanLP分词命名实体提取详解

    千次阅读 2019-01-11 11:01:46
    分享一篇大神的关于hanlp分词命名实体提取的经验文章,文章中分享的内容略有一段时间(使用的hanlp版本比较老),最新一版的hanlp已经出来了,也可以去看看新版的hanlp在这方面有何提升! 文本挖掘是抽取有效、新颖...
  • 命名实体识别 教程 教程 教程 ner PKU、MSRA、OntoNotes 依存句法分析 教程 教程 教程 dep SD、UD、PMT 成分句法分析 教程 教程 教程 con Chinese Tree Bank 语义依存分析 教程 教程 教程 sdp CSDP 语义...
  • 切词&命名实体识别与词性标注(可以粗略识别) def NLP_tokenizer(sentence_str): NLPTokenizer = jpype.JClass( ' com.hankcs.hanlp.tokenizer.NLPTokenizer ' ) return NLPTokenizer.segment(sentence_str) ...
  • HanLP-命名实体识别总结

    千次阅读 2019-09-18 05:20:17
    人名识别 在HanLP中,基于角色标注识别了中国人名。...理论指导文章为:《基于层叠隐马尔可夫模型的中文命名实体识别》 机构名识别 机构名的理论指导文章为:《基于角色标注的中文机构名识别》 命名实体识别De...
  • 之前需要做一个中文命名实体识别的api,看完了一些相关论文以后觉得短时间内自己实现不大现实,于是找了一些开源工具,其中哈工大的LTP效果是很好的,但是免费使用限流量,需要给钱才行; NLPIR的pynlpir似乎还不能...
  • from pyhanlp import *importosfrom pyhanlp.static importdownload, remove_file, HANLP_DATA_PATHimportzipfileNERTrainer= JClass('com.hankcs.hanlp.model.perceptron.NERTrainer')AbstractLexicalAnalyzer= JCl...
  • 命名实体识别 依存句法分析 语义依存分析 新词发现 关键词短语提取 自动摘要 文本分类聚类 拼音简繁转换 自然语言处理 HanLP: Han Language Processing | | | 面向生产环境的多语种自然语言处理工具包,基于 ...
  • pyhanlp 命名实体识别

    千次阅读 2018-09-20 21:54:03
    pyhanlp中的命名实体识别 对于分词而言,命名实体识别是一项非常重要的功能,当然发现新词同样重要(这部分内容被我放在之后的“关键词、短语提取...HanLP开启命名实体识别 ""&quo
  • 通过简单的pyhanlp 分词然后根据词性获取实体对象 from pyhanlp import * # 词性切分 sentence = u'''上线三年就成功上市,拼多多上演了互联网企业的上市奇迹,却也放大平台上存在的诸多问题,拼多多在美国上市。''' ...
  • 最近做了一点微小的工作,搞了下命名实体识别(named entity recongnition, NER),这里总结一下目前的认识。内容比较杂,先亮一下目录,如图0-1。图0-1 目录一、什么是命名实体1.1 什么是实体实体(entity)指客观存在...
  • 命名实体识别(NER)综述

    万次阅读 多人点赞 2021-07-12 21:42:32
    然后介绍了命名实体识别研究的发展进程,从最初的规则和字典方法到传统的统计学习方法再到现在的深度学习方法,不断地将新技术应用到命名实体识别研究中以提高性能; 最后针对评判命名实体识别模型的好坏,总结了...
  • Python 命名实体识别(NER) 库 使用指南

    万次阅读 多人点赞 2019-12-21 16:55:05
    最近工作中需要使用命名实体识别来做一版人名及机构名的预识别demo,评估了独立训练一套NER模型所耗费的标注成本巨大,加上目前只是对该需求进行demo版本的开发,所以花了一段时间对目前现有的开源 NER 工具包进行了...
  • 基于HMM角色标注的命名实体识别(速度快) 、、、、 基于线性模型的命名实体识别(精度高) 、 关键词提取 自动摘要 短语提取 多音字、声母、韵母、声调 简繁分歧词(简体、繁体、台湾正体、香港繁体) 语义推荐、...
  • 借助世界上最大的多语种语料库,HanLP2.1支持包括简繁中英日俄法德在内的104种语言上的10种联合任务:分词(粗分、细分2个标准,强制、合并、校正3种)、词性标注(PKU、863、CTB、UD四套词性规范)、命名实体识别...
  • 1.中国人名识别 (默认开启)  标注为 nr 2.音译人名识别 (默认开启)  标注为 nrf ...HanLP这五个,基于HMM角色标注的命名实体识别 (速度快) 另外有基于线性模型的命名实体识别(精度高):...
  • 二、搭建环境三、nltk使用1、英文实体命名初体验2、使用nltk来处理中文资料结巴分词使用foolnltk 命名实体识别一、简介二、python版本使用Ltp 实体命名识别一、简介二、使用LAC 实体命名一、简介二、python版本使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,276
精华内容 510
关键字:

hanlp命名实体识别