Advertisement

Python 自然语言处理 命名 实体识别

阅读量:

NER系统的构建与评估:

1.将文档分割成句子

2.将句子分割为单词

3.标记每个单词的词性

4.从标记单词集中识别出命名实体

5.识别每个命名实体的分类

6.评估

NLTK(Natural Language Toolkit)自然语言处理工具包,在NLP领域中,比较常用的一个Python库。它提供了易于使用的接口,通过这些接口可以访问超过50个语料库和词汇资源(如WordNet),还有一套用于分类、标记化、词干标记、解析和语义推理的文本处理库,以及工业级NLP库的封装器和一个活跃的讨论论坛。

官方文档:http://www.nltk.org
python安装与测试NLTK链接:<>
百度api自然语言处理的调用 :<>

基于NLTK的命名实体识别:

读入英文文本数据

复制代码
    # -*- coding: utf-8 -*- 
    import nltk  
    
      
      
    
复制代码
    import pprint
    
      
    
复制代码
    # filename = "test.txt"
    # with open(filename, 'r', encoding='utf8') as sampleFile:
    #     text=sampleFile.read()
    
      
      
      
    

减少迁移带来的文本路径问题,我们将文本存为变量

复制代码
    text = "Mexico quakes with joy over World Cup upset win.Mexico’s Earthquake Early Warning and Monitoring System issued a message on the 17th that the Mexican team played against the German team in the World Cup. During the first half of the game until the 35th minute, the Mexican team striker Losano broke the deadlock and scored the first goal, scoring a goal in Mexico. The city monitored minor earthquakes. This monitoring system analyzes that the earthquake was caused by man-made methods or caused by many people excitedly jumping when scoring."
    
      
    
复制代码
    en = {} 
    
      
    

1.将文档分割成句子
2.将句子分割为单词
3.标记每个单词的词性

复制代码
    tokenized = nltk.word_tokenize(text) #分词  
    # pprint.pprint(tokenized)
    
      
      
    
复制代码
    tagged = nltk.pos_tag(tokenized)         #词性标注 
    #pprint.pprint(tagged)
    
      
      
    
复制代码
    chunked = nltk.ne_chunk(tagged)          #命名实体识别 
    
      
    

NN 名词 year,home, costs, time, education

NNS 名词复数 undergraduates scotches

NNP 专有名词 Alison,Africa,April,Washington

NNPS 专有名词复数 Americans Americas Amharas Amityvilles

复制代码
    #pprint.pprint(chunked)# <class 'nltk.tree.Tree'>
    
      
    
复制代码
    print(chunked.draw())
    
      
    
复制代码
    None
    
    
      
    
要注意对树的处理,观察树的形式
复制代码
    for tree in chunked:
    # print(tree)
    # print(type(tree)) 非专有名词为'tuple',是专有名词的为“tree”
    if hasattr(tree, 'label'):
        #print(tree.draw())
        ne = ' '.join(c[0] for c in tree.leaves())
        en[ne] = [tree.label(), ' '.join(c[1] for c in tree.leaves())]
    for key in en.keys():
    print(key, ':', en[key])
    
      
      
      
      
      
      
      
      
      
    
复制代码
    Mexican : ['GPE', 'NNP']
    Early Warning : ['PERSON', 'JJ NNP']
    German : ['GPE', 'JJ']
    Monitoring System : ['ORGANIZATION', 'NNP NNP']
    Mexico : ['GPE', 'NNP']
    Losano : ['PERSON', 'NNP']
    
    
      
      
      
      
      
      
    

百度API实现

复制代码
    textnew= "世界杯爆冷门,墨西哥球迷激动跳跃引发首都墨西哥城地震!墨西哥地震预警监控系统17日发布消息,当天墨西哥队在对阵德国队的世界杯比赛中,上半场比赛进行至第35分钟时,墨西哥队前锋洛萨诺打破僵局攻入首球,进球时墨西哥城监测到轻微地震。这一监控系统分析说,这次地震是由人为方式引发,或因进球时许多民众激动跳跃造成。"
    
      
    
复制代码
    # -*- coding: utf-8 -*-
    import urllib3
    import json
    import urllib.request 
    import pprint
    
      
      
      
      
      
    

第一步:获取access_token
client_id 为官网获取的AK, client_secret 为官网获取的SK

复制代码
    access_token ="24.340837cdde292a61442507b60e6fb64c.2592000.1532060546.282335-11012308"
    
      
    

第二步:post请求调用API,传入参数

复制代码
    import sys
    print(sys.getdefaultencoding())
    http=urllib3.PoolManager()
    url = "https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer?access_token="+access_token
    print(url)
    data ={"text":textnew}
    
      
      
      
      
      
      
    
复制代码
    utf-8
    https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer?access_token=24.340837cdde292a61442507b60e6fb64c.2592000.1532060546.282335-11012308
    
    
      
      
    
复制代码
    encode_data= json.dumps(data).encode('GBK') #传入数据是字典,需要编码
    #JSON:在发起请求时,可以通过定义body 参数并定义headers的Content-Type参数来发送一个已经过编译的JSON数据:
    
      
      
    
复制代码
    request = http.request('POST',
                       url,
                       body=encode_data,
                       headers={'Content-Type':'application/json'}
                       )
    result = str(request.data,'GBK')
    
      
      
      
      
      
      
    
复制代码
    D:\local\Anaconda3\lib\site-packages\urllib3\connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
      InsecureRequestWarning)
    
    
      
      
    
复制代码
    result_dir = eval(result)
    pprint.pprint(result_dir)
    
      
      
    
复制代码
    {'items': [{'basic_words': ['世界', '杯'],
            'byte_length': 6,
            'byte_offset': 0,
            'formal': '',
            'item': '世界杯',
            'loc_details': [],
            'ne': '',
            'pos': 'nz',
            'uri': ''},
           {'basic_words': ['爆冷', '门'],
            'byte_length': 6,
            'byte_offset': 6,
            'formal': '',
            'item': '爆冷门',
            'loc_details': [],
            'ne': '',
            'pos': 'nz',
            'uri': ''},
           {'basic_words': [','],
            'byte_length': 2,
            'byte_offset': 12,
            'formal': '',
            'item': ',',
            'loc_details': [],
            'ne': '',
            'pos': 'w',
            'uri': ''},
           {'basic_words': ['墨西哥'],
            'byte_length': 6,
            'byte_offset': 14,
            'formal': '',
            'item': '墨西哥',
            'loc_details': [],
            'ne': 'LOC',
            'pos': '',
            'uri': ''},
           {'basic_words': ['球迷'],
            'byte_length': 4,
            'byte_offset': 20,
            'formal': '',
            'item': '球迷',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': ['激动'],
            'byte_length': 4,
            'byte_offset': 24,
            'formal': '',
            'item': '激动',
            'loc_details': [],
            'ne': '',
            'pos': 'a',
            'uri': ''},
           {'basic_words': ['跳跃'],
            'byte_length': 4,
            'byte_offset': 28,
            'formal': '',
            'item': '跳跃',
            'loc_details': [],
            'ne': '',
            'pos': 'vn',
            'uri': ''},
           {'basic_words': ['引发'],
            'byte_length': 4,
            'byte_offset': 32,
            'formal': '',
            'item': '引发',
            'loc_details': [],
            'ne': '',
            'pos': 'v',
            'uri': ''},
           {'basic_words': ['首都'],
            'byte_length': 4,
            'byte_offset': 36,
            'formal': '',
            'item': '首都',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': ['墨西哥', '城'],
            'byte_length': 8,
            'byte_offset': 40,
            'formal': '',
            'item': '墨西哥城',
            'loc_details': [],
            'ne': 'LOC',
            'pos': '',
            'uri': ''},
           {'basic_words': ['地震'],
            'byte_length': 4,
            'byte_offset': 48,
            'formal': '',
            'item': '地震',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': ['!'],
            'byte_length': 2,
            'byte_offset': 52,
            'formal': '',
            'item': '!',
            'loc_details': [],
            'ne': '',
            'pos': 'w',
            'uri': ''},
           {'basic_words': ['墨西哥'],
            'byte_length': 6,
            'byte_offset': 54,
            'formal': '',
            'item': '墨西哥',
            'loc_details': [],
            'ne': 'LOC',
            'pos': '',
            'uri': ''},
           {'basic_words': ['地震'],
            'byte_length': 4,
            'byte_offset': 60,
            'formal': '',
            'item': '地震',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': ['预警'],
            'byte_length': 4,
            'byte_offset': 64,
            'formal': '',
            'item': '预警',
            'loc_details': [],
            'ne': '',
            'pos': 'vn',
            'uri': ''},
           {'basic_words': ['监控'],
            'byte_length': 4,
            'byte_offset': 68,
            'formal': '',
            'item': '监控',
            'loc_details': [],
            'ne': '',
            'pos': 'vn',
            'uri': ''},
           {'basic_words': ['系统'],
            'byte_length': 4,
            'byte_offset': 72,
            'formal': '',
            'item': '系统',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': ['17', '日'],
            'byte_length': 4,
            'byte_offset': 76,
            'formal': '',
            'item': '17日',
            'loc_details': [],
            'ne': 'TIME',
            'pos': '',
            'uri': ''},
           {'basic_words': ['发布'],
            'byte_length': 4,
            'byte_offset': 80,
            'formal': '',
            'item': '发布',
            'loc_details': [],
            'ne': '',
            'pos': 'v',
            'uri': ''},
           {'basic_words': ['消息'],
            'byte_length': 4,
            'byte_offset': 84,
            'formal': '',
            'item': '消息',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': [','],
            'byte_length': 2,
            'byte_offset': 88,
            'formal': '',
            'item': ',',
            'loc_details': [],
            'ne': '',
            'pos': 'w',
            'uri': ''},
           {'basic_words': ['当天'],
            'byte_length': 4,
            'byte_offset': 90,
            'formal': '',
            'item': '当天',
            'loc_details': [],
            'ne': 'TIME',
            'pos': '',
            'uri': ''},
           {'basic_words': ['墨西哥', '队'],
            'byte_length': 8,
            'byte_offset': 94,
            'formal': '',
            'item': '墨西哥队',
            'loc_details': [],
            'ne': 'ORG',
            'pos': '',
            'uri': ''},
           {'basic_words': ['在'],
            'byte_length': 2,
            'byte_offset': 102,
            'formal': '',
            'item': '在',
            'loc_details': [],
            'ne': '',
            'pos': 'p',
            'uri': ''},
           {'basic_words': ['对阵'],
            'byte_length': 4,
            'byte_offset': 104,
            'formal': '',
            'item': '对阵',
            'loc_details': [],
            'ne': '',
            'pos': 'v',
            'uri': ''},
           {'basic_words': ['德国', '队'],
            'byte_length': 6,
            'byte_offset': 108,
            'formal': '',
            'item': '德国队',
            'loc_details': [],
            'ne': 'ORG',
            'pos': '',
            'uri': ''},
           {'basic_words': ['的'],
            'byte_length': 2,
            'byte_offset': 114,
            'formal': '',
            'item': '的',
            'loc_details': [],
            'ne': '',
            'pos': 'u',
            'uri': ''},
           {'basic_words': ['世界', '杯'],
            'byte_length': 6,
            'byte_offset': 116,
            'formal': '',
            'item': '世界杯',
            'loc_details': [],
            'ne': '',
            'pos': 'nz',
            'uri': ''},
           {'basic_words': ['比赛'],
            'byte_length': 4,
            'byte_offset': 122,
            'formal': '',
            'item': '比赛',
            'loc_details': [],
            'ne': '',
            'pos': 'vn',
            'uri': ''},
           {'basic_words': ['中'],
            'byte_length': 2,
            'byte_offset': 126,
            'formal': '',
            'item': '中',
            'loc_details': [],
            'ne': '',
            'pos': 'f',
            'uri': ''},
           {'basic_words': [','],
            'byte_length': 2,
            'byte_offset': 128,
            'formal': '',
            'item': ',',
            'loc_details': [],
            'ne': '',
            'pos': 'w',
            'uri': ''},
           {'basic_words': ['上', '半场'],
            'byte_length': 6,
            'byte_offset': 130,
            'formal': '',
            'item': '上半场',
            'loc_details': [],
            'ne': 'TIME',
            'pos': '',
            'uri': ''},
           {'basic_words': ['比赛'],
            'byte_length': 4,
            'byte_offset': 136,
            'formal': '',
            'item': '比赛',
            'loc_details': [],
            'ne': '',
            'pos': 'vn',
            'uri': ''},
           {'basic_words': ['进行'],
            'byte_length': 4,
            'byte_offset': 140,
            'formal': '',
            'item': '进行',
            'loc_details': [],
            'ne': '',
            'pos': 'v',
            'uri': ''},
           {'basic_words': ['至'],
            'byte_length': 2,
            'byte_offset': 144,
            'formal': '',
            'item': '至',
            'loc_details': [],
            'ne': '',
            'pos': 'p',
            'uri': ''},
           {'basic_words': ['第', '35', '分钟'],
            'byte_length': 8,
            'byte_offset': 146,
            'formal': '',
            'item': '第35分钟',
            'loc_details': [],
            'ne': 'TIME',
            'pos': '',
            'uri': ''},
           {'basic_words': ['时'],
            'byte_length': 2,
            'byte_offset': 154,
            'formal': '',
            'item': '时',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': [','],
            'byte_length': 2,
            'byte_offset': 156,
            'formal': '',
            'item': ',',
            'loc_details': [],
            'ne': '',
            'pos': 'w',
            'uri': ''},
           {'basic_words': ['墨西哥', '队'],
            'byte_length': 8,
            'byte_offset': 158,
            'formal': '',
            'item': '墨西哥队',
            'loc_details': [],
            'ne': 'ORG',
            'pos': '',
            'uri': ''},
           {'basic_words': ['前锋'],
            'byte_length': 4,
            'byte_offset': 166,
            'formal': '',
            'item': '前锋',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': ['洛', '萨诺'],
            'byte_length': 6,
            'byte_offset': 170,
            'formal': '',
            'item': '洛萨诺',
            'loc_details': [],
            'ne': 'PER',
            'pos': '',
            'uri': ''},
           {'basic_words': ['打破'],
            'byte_length': 4,
            'byte_offset': 176,
            'formal': '',
            'item': '打破',
            'loc_details': [],
            'ne': '',
            'pos': 'v',
            'uri': ''},
           {'basic_words': ['僵局'],
            'byte_length': 4,
            'byte_offset': 180,
            'formal': '',
            'item': '僵局',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': ['攻入'],
            'byte_length': 4,
            'byte_offset': 184,
            'formal': '',
            'item': '攻入',
            'loc_details': [],
            'ne': '',
            'pos': 'v',
            'uri': ''},
           {'basic_words': ['首'],
            'byte_length': 2,
            'byte_offset': 188,
            'formal': '',
            'item': '首',
            'loc_details': [],
            'ne': '',
            'pos': 'm',
            'uri': ''},
           {'basic_words': ['球'],
            'byte_length': 2,
            'byte_offset': 190,
            'formal': '',
            'item': '球',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': [','],
            'byte_length': 2,
            'byte_offset': 192,
            'formal': '',
            'item': ',',
            'loc_details': [],
            'ne': '',
            'pos': 'w',
            'uri': ''},
           {'basic_words': ['进球'],
            'byte_length': 4,
            'byte_offset': 194,
            'formal': '',
            'item': '进球',
            'loc_details': [],
            'ne': '',
            'pos': 'vn',
            'uri': ''},
           {'basic_words': ['时'],
            'byte_length': 2,
            'byte_offset': 198,
            'formal': '',
            'item': '时',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': ['墨西哥', '城'],
            'byte_length': 8,
            'byte_offset': 200,
            'formal': '',
            'item': '墨西哥城',
            'loc_details': [],
            'ne': 'LOC',
            'pos': '',
            'uri': ''},
           {'basic_words': ['监测'],
            'byte_length': 4,
            'byte_offset': 208,
            'formal': '',
            'item': '监测',
            'loc_details': [],
            'ne': '',
            'pos': 'v',
            'uri': ''},
           {'basic_words': ['到'],
            'byte_length': 2,
            'byte_offset': 212,
            'formal': '',
            'item': '到',
            'loc_details': [],
            'ne': '',
            'pos': 'v',
            'uri': ''},
           {'basic_words': ['轻微'],
            'byte_length': 4,
            'byte_offset': 214,
            'formal': '',
            'item': '轻微',
            'loc_details': [],
            'ne': '',
            'pos': 'a',
            'uri': ''},
           {'basic_words': ['地震'],
            'byte_length': 4,
            'byte_offset': 218,
            'formal': '',
            'item': '地震',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': ['。'],
            'byte_length': 2,
            'byte_offset': 222,
            'formal': '',
            'item': '。',
            'loc_details': [],
            'ne': '',
            'pos': 'w',
            'uri': ''},
           {'basic_words': ['这'],
            'byte_length': 2,
            'byte_offset': 224,
            'formal': '',
            'item': '这',
            'loc_details': [],
            'ne': '',
            'pos': 'r',
            'uri': ''},
           {'basic_words': ['一'],
            'byte_length': 2,
            'byte_offset': 226,
            'formal': '',
            'item': '一',
            'loc_details': [],
            'ne': '',
            'pos': 'm',
            'uri': ''},
           {'basic_words': ['监控'],
            'byte_length': 4,
            'byte_offset': 228,
            'formal': '',
            'item': '监控',
            'loc_details': [],
            'ne': '',
            'pos': 'vn',
            'uri': ''},
           {'basic_words': ['系统'],
            'byte_length': 4,
            'byte_offset': 232,
            'formal': '',
            'item': '系统',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': ['分析'],
            'byte_length': 4,
            'byte_offset': 236,
            'formal': '',
            'item': '分析',
            'loc_details': [],
            'ne': '',
            'pos': 'vn',
            'uri': ''},
           {'basic_words': ['说'],
            'byte_length': 2,
            'byte_offset': 240,
            'formal': '',
            'item': '说',
            'loc_details': [],
            'ne': '',
            'pos': 'v',
            'uri': ''},
           {'basic_words': [','],
            'byte_length': 2,
            'byte_offset': 242,
            'formal': '',
            'item': ',',
            'loc_details': [],
            'ne': '',
            'pos': 'w',
            'uri': ''},
           {'basic_words': ['这次'],
            'byte_length': 4,
            'byte_offset': 244,
            'formal': '',
            'item': '这次',
            'loc_details': [],
            'ne': '',
            'pos': 'r',
            'uri': ''},
           {'basic_words': ['地震'],
            'byte_length': 4,
            'byte_offset': 248,
            'formal': '',
            'item': '地震',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': ['是'],
            'byte_length': 2,
            'byte_offset': 252,
            'formal': '',
            'item': '是',
            'loc_details': [],
            'ne': '',
            'pos': 'v',
            'uri': ''},
           {'basic_words': ['由'],
            'byte_length': 2,
            'byte_offset': 254,
            'formal': '',
            'item': '由',
            'loc_details': [],
            'ne': '',
            'pos': 'p',
            'uri': ''},
           {'basic_words': ['人为'],
            'byte_length': 4,
            'byte_offset': 256,
            'formal': '',
            'item': '人为',
            'loc_details': [],
            'ne': '',
            'pos': 'a',
            'uri': ''},
           {'basic_words': ['方式'],
            'byte_length': 4,
            'byte_offset': 260,
            'formal': '',
            'item': '方式',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': ['引发'],
            'byte_length': 4,
            'byte_offset': 264,
            'formal': '',
            'item': '引发',
            'loc_details': [],
            'ne': '',
            'pos': 'v',
            'uri': ''},
           {'basic_words': [','],
            'byte_length': 2,
            'byte_offset': 268,
            'formal': '',
            'item': ',',
            'loc_details': [],
            'ne': '',
            'pos': 'w',
            'uri': ''},
           {'basic_words': ['或'],
            'byte_length': 2,
            'byte_offset': 270,
            'formal': '',
            'item': '或',
            'loc_details': [],
            'ne': '',
            'pos': 'c',
            'uri': ''},
           {'basic_words': ['因'],
            'byte_length': 2,
            'byte_offset': 272,
            'formal': '',
            'item': '因',
            'loc_details': [],
            'ne': '',
            'pos': 'p',
            'uri': ''},
           {'basic_words': ['进球'],
            'byte_length': 4,
            'byte_offset': 274,
            'formal': '',
            'item': '进球',
            'loc_details': [],
            'ne': '',
            'pos': 'vn',
            'uri': ''},
           {'basic_words': ['时'],
            'byte_length': 2,
            'byte_offset': 278,
            'formal': '',
            'item': '时',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': ['许多'],
            'byte_length': 4,
            'byte_offset': 280,
            'formal': '',
            'item': '许多',
            'loc_details': [],
            'ne': '',
            'pos': 'm',
            'uri': ''},
           {'basic_words': ['民众'],
            'byte_length': 4,
            'byte_offset': 284,
            'formal': '',
            'item': '民众',
            'loc_details': [],
            'ne': '',
            'pos': 'n',
            'uri': ''},
           {'basic_words': ['激动'],
            'byte_length': 4,
            'byte_offset': 288,
            'formal': '',
            'item': '激动',
            'loc_details': [],
            'ne': '',
            'pos': 'a',
            'uri': ''},
           {'basic_words': ['跳跃'],
            'byte_length': 4,
            'byte_offset': 292,
            'formal': '',
            'item': '跳跃',
            'loc_details': [],
            'ne': '',
            'pos': 'vn',
            'uri': ''},
           {'basic_words': ['造成'],
            'byte_length': 4,
            'byte_offset': 296,
            'formal': '',
            'item': '造成',
            'loc_details': [],
            'ne': '',
            'pos': 'v',
            'uri': ''},
           {'basic_words': ['。'],
            'byte_length': 2,
            'byte_offset': 300,
            'formal': '',
            'item': '。',
            'loc_details': [],
            'ne': '',
            'pos': 'w',
            'uri': ''}],
     'log_id': 5196460719007475109,
     'text': '世界杯爆冷门,墨西哥球迷激动跳跃引发首都墨西哥城地震!墨西哥地震预警监控系统17日发布消息,当天墨西哥队在对阵德国队的世界杯比赛中,上半场比赛进行至第35分钟时,墨西哥队前锋洛萨诺打破僵局攻入首球,进球时墨西哥城监测到轻微地震。这一监控系统分析说,这次地震是由人为方式引发,或因进球时许多民众激动跳跃造成。'}
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    

提取所需内容

复制代码
    NNP ={}
    for eachWord in  result_dir['items']:
    if eachWord['ne']!="":
        word = eachWord["item"]
        nnP =  eachWord['ne']
        NNP[word] = nnP
    
      
      
      
      
      
      
    
缩略词 含义 缩略词 含义 缩略词 含义 缩略词 含义
PER 人名 LOC 地名 ORG 机构名 TIME 时间
复制代码
    for key in NNP.keys():
    print(key, ':', NNP[key])
    
      
      
    
复制代码
    第35分钟 : TIME
    洛萨诺 : PER
    德国队 : ORG
    当天 : TIME
    墨西哥城 : LOC
    墨西哥队 : ORG
    17日 : TIME
    上半场 : TIME
    墨西哥 : LOC
    
    
      
      
      
      
      
      
      
      
      
    

{
“text”:”百度是一家高科技公司”,
“items”:[
{
“byte_length”:4,
“byte_offset”:0,
“formal”:”“,
“item”:”百度”,
“ne”:”ORG”,
“pos”:”“,
“uri”:”“,
“loc_details”:[ ],
“basic_words”:[“百度”]
},
{
“byte_length”:2,
“byte_offset”:4,
“formal”:”“,
“item”:”是”,
“ne”:”“,
“pos”:”v”,
“uri”:”“,
“loc_details”:[ ],
“basic_words”:[“是”]
},
{
“byte_length”:4,
“byte_offset”:6,
“formal”:”“,
“item”:”一家”,
“ne”:”“,
“pos”:”m”,
“uri”:”“,
“loc_details”:[ ],
“basic_words”:[“一”,”家”]
},
{
“byte_length”:6,
“byte_offset”:10,
“formal”:”“,
“item”:”高科技”,
“ne”:”“,
“pos”:”n”,
“uri”:”“,
“loc_details”:[ ],
“basic_words”:[“高”,”科技”]
},
{
“byte_length”:4,
“byte_offset”:16,
“formal”:”“,
“item”:”公司”,
“ne”:”“,
“pos”:”n”,
“uri”:”“,
“loc_details”:[ ],
“basic_words”:[“公司”]
}
]
}

将代码集成一下

复制代码
    # -*- coding: utf-8 -*-
    import urllib3
    import json
    import urllib.request 
    
      
      
      
      
    
复制代码
    def baiduNER(myData,APIurl,access_token):
    url = APIurl+access_token
    data ={"text":myData}
    encode_data= json.dumps(data).encode('GBK')
    http = urllib3.PoolManager()
    #JSON:在发起请求时,可以通过定义body 参数并定义headers的Content-Type参数来发送一个已经过编译的JSON数据:
    request = http.request('POST',
                           url,
                           body=encode_data,
                           headers={'Content-Type':'application/json'}
                           )
    result = str(request.data,"GBK")
    result_dir = eval(result)
    NNP ={}
    if "items" in  result_dir.keys():
        for eachWord in  result_dir.setdefault("items"):
            if eachWord['ne']!="":
                word = eachWord.get("item")
                nnP =  eachWord['ne']
                NNP[word] = nnP
    return NNP
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
复制代码
    lawText="""
    省略处理上海市闵行区人民法院
    刑 事 判 决 书
    (2016)沪0112刑初2598号
    公诉机关上海市闵行区人民检察院。
    被告人许洪芳,女,1957年9月10日出生,汉族,户籍地上海市闵行区。
    辩护人李霄,上海嘉钰律师事务所律师。
    被告人自报张同平,男,1968年7月1日出生,汉族,户籍地安徽省铜陵市。.....当及时返还;违禁品和供犯罪所用的本人财物,应当予以没收。没收的财物和罚金,一律上缴国库,不得挪用和自行处理。
    """
    
      
      
      
      
      
      
      
      
      
    
复制代码
    def main():
    #百度AI开放平台通行证
    access_token ="24.340837cdde292a61442507b60e6fb64c.2592000.1532060546.282335-11012308"
    ##具体接口的链接
    APIurl = "https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer?access_token="
    # # myData = ' '.join(each for each in lawText.split())
    # NNP = baiduNER(myData,APIurl,access_token)  短文本这样
    myDataAll =lawText.split("\n")
    NNP ={}
    for each in myDataAll:
      NNPnew =baiduNER(each,APIurl,access_token)
      NNP.update(NNPnew)
    for key in NNP.keys():
        print(key, ':', NNP[key]) 
    if __name__ == '__main__':
    main()   
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    

结果部分为:

复制代码
    上海陈行炼油厂 : ORG
    最高人民检察院 : ORG
    2016年3月30日上午 : TIME
    当天 : TIME
    胡某某 : PER
    李霄 : PER
    丁志 : TIME
    汉族 : ORG
    2016年3月31日 : TIME
    2016年6月15日起 : TIME
    李某 : PER
    中储 : ORG
    2015年6月21日 : TIME
    三十日内 : TIME
    浦江镇 : LOC
    3月15日 : TIME
    五年 : TIME
    6月16日 : TIME
    丁某 : PER
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    

全部评论 (0)

还没有任何评论哟~