github
這是百度開源的一個詞法分析工具
首先要安裝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的實體識別還是非常好的