ltp提供了一系列中文自然語言處理工具,使用者可以使用這些工具對於中文文字進行分詞、詞性標註、句法分析等等工作。從應用角度來看,ltp為使用者提供了下列元件:
針對單一自然語言處理任務,生成統計機器學習模型的工具官網在這:針對單一自然語言處理任務,呼叫模型進行分析的程式設計介面
使用流水線方式將各個分析工具結合起來,形成一套統一的中文自然語言處理系統
系統可呼叫的,用於中文語言處理的模型檔案
針對單一自然語言處理任務,基於雲端的程式設計介面
語義角色分析
pyltp 是 ltp 的 python 封裝,提供了分詞,詞性標註,命名實體識別,依存句法分析,語義角色標註的功能。
我最開始在自己電腦(windows)上安裝不上,主要有以下錯誤:
安裝的過程提示 winerror32:檔案找不到:
from pyltp import sentencesplitter
sents = sentencesplitter.split('元芳你怎麼看?我就趴視窗上看唄!') # 分句
print('\n'.join(sents))
輸出:
元芳你怎麼看?
我就趴視窗上看唄!
import os
from pyltp import segmentor
ltp_data_dir='d:\data\ltp_data_v3.4.0'
cws_model_path=os.path.join(ltp_data_dir,'cws.model')
segmentor=segmentor()
segmentor.load(cws_model_path)
words=segmentor.segment('熊高雄你吃飯了嗎')
print(type(words))
print('\t'.join(words))
segmentor.release()
輸出
熊高雄 你 吃飯 了 嗎
lexicon檔案如下:
ltp_data_dir='d:\data\ltp_data_v3.4.0' # ltp模型目錄的路徑
cws_model_path = os.path.join(ltp_data_dir, 'cws.model') # 分詞模型路徑,模型名稱為`cws.model`
from pyltp import segmentor
segmentor = segmentor() # 初始化例項
segmentor.load_with_lexicon(cws_model_path, 'lexicon') # 載入模型,第二個引數是您的外部詞典檔案路徑
words = segmentor.segment('亞硝酸鹽是一種化學物質')
print('\t'.join(words))
segmentor.release()
輸出
[info] 2018-08-16 19:18:03 loaded 2 lexicon entries
亞硝酸鹽 是 一 種 化學 物質
import os
ltp_data_dir='d:\data\ltp_data_v3.4.0'
# ltp模型目錄的路徑
pos_model_path = os.path.join(ltp_data_dir, 'pos.model') # 詞性標註模型路徑,模型名稱為`pos.model`
from pyltp import postagger
postagger = postagger() # 初始化例項
postagger.load(pos_model_path) # 載入模型
words = ['元芳', '你', '怎麼', '看'] # 分詞結果
postags = postagger.postag(words) # 詞性標註
print('\t'.join(postags))
postagger.release() # 釋放模型
輸出如下
nh r r v
import os
ltp_data_dir='d:\data\ltp_data_v3.4.0' # ltp模型目錄的路徑
ner_model_path = os.path.join(ltp_data_dir, 'ner.model') # 命名實體識別模型路徑,模型名稱為`pos.model`
from pyltp import namedentityrecognizer
recognizer = namedentityrecognizer() # 初始化例項
recognizer.load(ner_model_path) # 載入模型
words = ['元芳', '你', '怎麼', '看']
postags = ['nh', 'r', 'r', 'v']
netags = recognizer.recognize(words, postags) # 命名實體識別
print('\t'.join(netags))
recognizer.release() # 釋放模型
輸出
s-nh o o o
import os
ltp_data_dir='d:\data\ltp_data_v3.4.0' # ltp模型目錄的路徑
par_model_path = os.path.join(ltp_data_dir, 'parser.model') # 依存句法分析模型路徑,模型名稱為`parser.model`
from pyltp import parser
parser = parser() # 初始化例項
parser.load(par_model_path) # 載入模型
words = ['元芳', '你', '怎麼', '看']
postags = ['nh', 'r', 'r', 'v']
arcs = parser.parse(words, postags) # 句法分析
print("\t".join("%d:%s" % (arc.head, arc.relation) for arc in arcs))
parser.release() # 釋放模型
輸出為:
4:sbv 4:sbv 4:adv 0:hed
import os
ltp_data_dir='d:\data\ltp_data_v3.4.0' # ltp模型目錄的路徑
srl_model_path = os.path.join(ltp_data_dir, 'pisrl_win.model') # 語義角色標註模型目錄路徑,模型目錄為`srl`。注意該模型路徑是乙個目錄,而不是乙個檔案。
from pyltp import sementicrolelabeller
labeller = sementicrolelabeller() # 初始化例項
labeller.load(srl_model_path) # 載入模型
words = ['元芳', '你', '怎麼', '看']
postags = ['nh', 'r', 'r', 'v']
# arcs 使用依存句法分析的結果
roles = labeller.label(words, postags, arcs) # 語義角色標註
# 列印結果
for role in roles:
print(role.index, "".join(
["%s:(%d,%d)" % (arg.name, arg.range.start, arg.range.end) for arg in role.arguments]))
labeller.release() # 釋放模
輸出為:
[dynet] random seed: 1676210130
[dynet] allocating memory: 2000mb
[dynet] memory allocation done.
3 a0:(1,1)adv:(2,2)
pyltp的使用指南
中文語法分析是目前的自然語言處理的主要任務之一,語義依賴分析是目前實施中文語法分析的主要理論技術,開源的工具則主要有stanford parser 和哈工大的語音雲ltp ltp 語言技術平台 是哈工大社會計算與資訊檢索研究中心研製的一整套開放中文自然語言處理系統。pyltp 是 ltp 的 pyt...
pyltp模組安裝及使用
系統 win7 語言 python3.6 1.pip install pyltp 失敗 2.使用原始碼安裝也未成功 參考文章選擇使用wheels方法安裝 pyltp 0.2.1 cp35 cp35m win amd64.whl pyltp 0.2.1 cp36 cp36m win amd64.whl...
pyltp使用問題記錄
記錄使用哈工大ltp工具進行自然語言處理中遇見的問題,後續會繼續往下寫。pyltp中segmentor,postagger,parser,namedentityrecognizer載入模型時,模型的路徑要以 分割,不能以 分割,linux檔案路徑是以第一種方式,而windows是第二方式,因此在wi...