NLP主体识别 郝伟 2021/03/08 [TOC]
1. 简介
实体识别(EntitiesRecognition,NER)是自然语言处理的一个基础任务。其目的是识别语料中人名、地名、组织机构名等命名实体,比如,对街道、建筑、概述等名词的识别。
2. 实现代码
本文主要面向工程应用,所以使用现有的jieba库进行识别,具体实现代码如下所示:
# -*- coding: utf-8 -*-
"""
日期:2021/03/08
作者:郝伟老师
简介:从文本中提取实体。
参考:
# 安装jieba: conda install -c conda-forge jieba
"""
#import jieba
import jieba.analyse
# import jieba.posseg as posg
sentence=u'''实体提取是从一段文字中提出各类人名、地名或专有名词,这些词汇一般是句子的相关的对象。
关键字则是能够表达文章主要思想的词汇,是文章内容的精练。'''
#sentence='''帮我订张明天的机票,从北京去上海,下午起飞的那种,我电话13344445555,行程单发我邮箱yuanquaner@woshipm.com好的,已为您找到如下符合条件的航班'''
kw=jieba.analyse.extract_tags(sentence,topK=10,withWeight=True,allowPOS=('n','ns'))
print(' 实体排名(前5个) '.center(20, '*'))
for item in kw[:5]:
print(item[0],item[1])
kw=jieba.analyse.textrank(sentence,topK=20,withWeight=True,allowPOS=('ns','n'))
print(' 关键字排名(前5个) '.center(20, '*'))
for item in kw[:5]:
print(item[0],item[1])
3. 输出结果
代码执行以后,可以得到以下结果。
**** 实体排名(前5个) *****
词汇 1.5500725898709091
关键字 0.882820264540909
文章内容 0.8331344730527271
句子 0.8284714462899999
地名 0.7662188162090909
**** 关键字排名(前5个) ****
词汇 1.0
对象 0.5943209668145821
句子 0.5348735705644506
文字 0.531888804020832
实体 0.5283487735071669