自然語言處理-如何使用百度的中文開源詞法分析工具(LAC) 進行命名實體語料標註 python

github

https://github.com/baidu/lac

這是百度開源的一個詞法分析工具

首先要安裝paddlepaddle

pip install paddlepaddle
pip install paddlehub 

PaddleHub 是基於 PaddlePaddle 開發的預訓練模型管理工具,可以藉助預訓練模型更便捷地開展遷移學習工作,旨在讓 PaddlePaddle 生態下的開發者更便捷體驗到大規模預訓練模型的價值。

它可以幫助我們下載和使用一個Lac的模型

首先將待處理文本分句換行處理好

上代碼

# 導入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的實體識別還是非常好的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章