pyltp实体识别_命名实体识别,使用pyltp提取文本中的地址

该博客介绍了如何利用pyltp库进行文本中的地址提取。通过创建Singleton类加载模型,然后使用Segmentor、Postagger和NamedEntityRecognizer进行分词、词性标注和命名实体识别,最终筛选出地名为ns的实体组成地址。
摘要由CSDN通过智能技术生成

首先安装pyltp

单例类(第一次调用时加载模型)

class Singleton(object):

def __new__(cls, *args, **kwargs):

if not hasattr(cls, '_the_instance'):

cls._the_instance = object.__new__(cls, *args, **kwargs)

return cls._the_instance

使用pyltp提取地址

import os

from pyltp import Segmentor, Postagger, NamedEntityRecognizer

from main.models.Singleton import Singleton

class address_extract_model(Singleton):

print('load ltp model start...')

pwd = os.getcwd()

project_path = os.path.abspath(os.path.dirname(pwd) + os.path.sep + ".")

LTP_DATA_DIR = project_path + '\AlarmClassification\main\ltp\model' # ltp模型目录的路径

cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model')

pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model') # 词性标注模型路径,模型名称为`pos.model`

ner_model_path = os.path.join(LTP_DATA_DIR, 'ner.model') # 命名实体识别模型路径,模型名称为`ner.model`

print('path' + cws_model_path)

segmentor = Segmentor() # 初始化实例

segmentor.load(cws_model_path) # 加载模型

postagger = Postagger() # 初始化实例

postagger.load(pos_model_path) # 加载模型

recognizer = NamedEntityRecognizer() # 初始化实例

recognizer.load(ner_model_path) # 加载模型

def get_model(self):

return self.segmentor, self.postagger, self.recognizer

def get_address_prediction(alarm_content):

model = address_extract_model()

segmentor, postagger, recognizer = model.get_model()

words = segmentor.segment(alarm_content) # 分词

postags = postagger.postag(words) # 词性标注

netags = recognizer.recognize(words, postags) # 命名实体识别

result = ''

for i in range(0, len(netags)):

print(words[i] + ': ' + netags[i])

# 地名标签为 ns

if 's' in netags[i]:

result += words[i] + ','

if len(result) < 1:

result = 'No address!'

print(result)

return result

def get_address(alarm_content):

print("start get_address...")

result = "Exception"

try:

result = get_address_prediction(alarm_content)

except Exception as ex:

print(ex)

print("Output is " + result)

return result

# segmentor.release() # 释放模型

# postagger.release()

# recognizer.release()

运行效果

项目源码 ( 命名实体提取代码位于main/ltp, 模型文件需要到pyltp下载 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值