上一篇我們搭建了pyltp的基本環境,現在我們用簡單的示例來測試它的使用,因為還是新手,肯定會有很多不全面的地方,后面我慢慢補充。
我們采用PyCharm作為編輯器,進行示例。
0. 檢查pyltp
首先先檢查下python27/Lib/site-packages/目錄下是否存在pyltp的相關文件夾:

1. 創建項目
1.1 創建一個新的python項目
創建一個新的python項目,並取名為:firstLtp
注意更改PyCharm的以下設置,因為你的pyltp是安裝在這里的,所以如此設置你的pyltp才能夠正常使用:

1.2 創建src
在venv目錄下,創建src文件夾。

2. 基本組件的使用
2.1 分詞模塊使用
(1)創建SentenceSplitterTest.py
# -- coding: utf-8 --**
#測試分句使用-SentenceSplitter
from pyltp import Sentence
Splittersentence = SentenceSplitter.split('測試分句,這是分句1。這是分句2。這個是,分句3。')
for i in range(len(sentence)):
print i+1,':',sentence[i]
(2)獲得結果
C:\Python27\python.exe E:/for_study/PyCharmSpace/firstLtp/venv/src/SentenceSplitterTest.py
1 : 測試分句,這是分句1。
2 : 這是分句2。
3 : 這個是,分句3。
Process finished with exit code 0
2.2 分詞使用
(1)SegmentorTest.py
# -- coding: utf-8 --**
#測試分詞使用 - Segmentor
import os
LTP_DATA_DIR = 'F:/zou/LTP/ltp_data/ltp_data' #v3.3.1報錯Segmentor: Model not loaded!,使用新版本模型v3.4.0運行成功
cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') # 分詞模型路徑,模型名稱為‘cws.‘
from pyltp import Segmentorsegmentor = Segmentor() # 初始化實例
segmentor.load(cws_model_path) # 加載模型
words = segmentor.segment('歐幾里得是西元前三世紀的希臘數學家。') # 分詞
print ' '.join(words)segmentor.release() # 釋放模型,但是人名並未識別,以下方法可以識別出人名
path_name = 'F:/zou/LTP/Names-Corpus-master/Names-Corpus/testName.txt'segmentor = Segmentor() # 初始化實例
segmentor.load_with_lexicon(cws_model_path, path_name) # 加載模型地址,參數lexicon是自定義詞典的文件路徑
words = segmentor.segment('歐幾里得是西元前三世紀的希臘數學家。')print ' '.join(words)segmentor.release()

(2)獲得結果
C:\Python27\python.exe E:/for_study/PyCharmSpace/firstLtp/venv/src/SegmentorTest.py
歐 幾 里 得 是 西元前 三 世紀 的 希臘 數學家 。
[INFO] 2019-03-10 13:23:55 loaded 3 lexicon entries
歐幾里得 是 西元前 三 世紀 的 希臘 數學家 。
Process finished with exit code 0
將歐幾里得添加到用戶字典里,於是可以識別到歐幾里得為一個詞(人名),改善結果並提高准確率。
2.3 詞性標注使用
(1)PostaggerTest.py
# -- coding: utf-8 --**
#測試詞性標注- Postagger
LTP_DATA_DIR ='F:/zou/LTP/ltp_data/ltp_data' #v3.3.1同樣報錯模型未加載,采用v3.4.0
import os
pos_model_path = os.path.join(LTP_DATA_DIR,'pos.model')# 詞性標注模型路徑,模型名稱為`pos.model`
from pyltpimport Postagger
postagger = Postagger()# 初始化實例
postagger.load(pos_model_path)# 加載模型
words = ['歐幾里得','是','西元前','三','世紀','的','希臘','數學家','。']
postags = postagger.postag(words)# 詞性標注
for iin range(len(words)):
print words[i],'(',
print postags[i],')',
postagger.release()# 釋放模型
(2)獲得結果
C:\Python27\python.exe E:/for_study/PyCharmSpace/firstLtp/venv/src/PostaggerTest.py
歐幾里得 ( nh ) 是 ( v ) 西元前 ( nt ) 三 ( m ) 世紀 ( n ) 的 ( u ) 希臘 ( ns ) 數學家 ( n ) 。 ( wp )
Process finished with exit code 0
詞性標注對應如下:附錄

2.4 命名實體識別使用
(1)NamedEntityRecognizerTest.py
# -- coding: utf-8 --**
#命名實體識別測試- NamedEntityRecognizer
LTP_DATA_DIR ='F:/zou/LTP/ltp_data/ltp_data' #v3.3.1同樣報錯模型未加載,采用v3.4.0
import os
ner_model_path = os.path.join(LTP_DATA_DIR,'ner.model')# 命名實體識別模型路徑,模型名稱為`ner.model`
from pyltpimport NamedEntityRecognizer
recognizer = NamedEntityRecognizer()# 初始化實例
recognizer.load(ner_model_path)# 加載模型
words = ['歐幾里得','是','西元前','三','世紀','的','希臘','數學家','。']
postags = ['nh','v','nt','m','n','u','ns','n','wp']
nertags = recognizer.recognize(words, postags)# 命名實體識別
print ' '.join(nertags)
recognizer.release()# 釋放模型
(2)獲得結果
C:\Python27\python.exe E:/for_study/PyCharmSpace/firstLtp/venv/src/NamedEntityRecognizerTest.py
S-Nh O O O O O S-Ns O O
Process finished with exit code 0

2.5 依存句法分析的使用
(1)ParserTest.py
# -- coding: utf-8 --**
#依存句法分析測試- Parser
LTP_DATA_DIR ='F:/zou/LTP/ltp_data/ltp_data' #v3.3.1同樣報錯模型未加載,采用v3.4.0
import os
par_model_path = os.path.join(LTP_DATA_DIR,'parser.model')# 依存句法分析模型路徑,模型名稱為`parser.model`
from pyltpimport Parser
parser = Parser()# 初始化實例
parser.load(par_model_path)# 加載模型
words = ['歐幾里得','是','西元前','三','世紀','的','希臘','數學家','。']
postags = ['nh','v','nt','m','n','u','ns','n','wp']
arcs = parser.parse(words, postags)# 句法分析
rely_id = [arc.headfor arcin arcs]# 提取依存父節點id
relation = [arc.relationfor arcin arcs]# 提取依存關系
heads = ['Root' if id ==0 else words[id-1]for idin rely_id]# 匹配依存父節點詞語
for iin range(len(words)):
print relation[i] +'(' + words[i] +', ' + heads[i] +')'
parser.release()# 釋放模型
(2)獲得結果
C:\Python27\python.exe E:/for_study/PyCharmSpace/firstLtp/venv/src/ParserTest.py
SBV(歐幾里得, 是)
HED(是, Root)
ATT(西元前, 世紀)
ATT(三, 世紀)
ATT(世紀, 數學家)
RAD(的, 世紀)
ATT(希臘, 數學家)
VOB(數學家, 是)
WP(。, 是)
Process finished with exit code 0
