自然语言处理-如何使用百度的中文开源词法分析工具(LAC) 进行命名实体语料标注 python

github

https://github.com/baidu/lac

这是百度开源的一个词法分析工具

首先要安装paddlepaddle

pip install paddlepaddle
pip install paddlehub 

PaddleHub 是基于 PaddlePaddle 开发的预训练模型管理工具,可以借助预训练模型更便捷地开展迁移学习工作,旨在让 PaddlePaddle 生态下的开发者更便捷体验到大规模预训练模型的价值。

它可以帮助我们下载和使用一个Lac的模型

首先将待处理文本分句换行处理好

自然语言处理-如何使用百度的中文开源词法分析工具(LAC) 进行命名实体语料标注 python_第1张图片

上代码

# 导入paddlehub
import paddlehub as hub
# import tqdm

if __name__ == "__main__":
    # 加载名为lac的预训练模型
    textlist = list()
    with open('./nerOriginal.txt', 'r', encoding='utf-8') as f1:
        for line in f1:
            line.replace('\n', '')
            textlist.append(line)

    lac = hub.Module(name="lac")
    text1 = '''小明同学在北京的北京大学读书
    '''
    test_text = [text1, '小陈今天不去上课']

    # 设定分词的输入,其输入是一个句子集合
    inputs = {"text": textlist}

    result = ''
    # 调用模型进行分词操作,将结果放于results中
    results = lac.lexical_analysis(data=inputs)
    for abb in results:
        for a, b in enumerate(abb['tag']):
            lenght = len(abb['word'][a])
            word = abb['word'][a]
            if b == 'LOC':
                result += word[0] + '\t' + 'B-LOC' + '\n'
                for a in word[1:]:
                    result += a + '\t' + 'I-LOC' + '\n'
            elif b == 'PER':
                result += word[0] + '\t' + 'B-PER' + '\n'
                for a in word[1:]:
                    result += a + '\t' + 'I-PER' + '\n'
            elif b == 'ORG':
                result += word[0] + '\t' + 'B-ORG' + '\n'
                for a in word[1:]:
                    result += a + '\t' + 'I-ORG' + '\n'
            else:
                for a in word:
                    result += a + '\t' + 'O' + '\n'
        result += '\n'

    with open('./nerResult.txt', 'w', encoding='UTF-8') as f2:
        f2.write(result)
    # 展示结果
    print(results)

最后结果保存在nerResult文件中

自然语言处理-如何使用百度的中文开源词法分析工具(LAC) 进行命名实体语料标注 python_第2张图片

看一下标注好的结果,百度lac的实体识别还是非常好的

你可能感兴趣的:(自然语言处理)