pyltp

說明:以下分析基於python3.6以及macOs 10.12.6

refer: https://pyltp.readthedocs.io/zh_CN/develop/api.html

語料庫下載:https://pan.baidu.com/share/link?shareid=1988562907&uk=2738088569#list/path=%2Fltp-models%2F3.4.0

語料庫版本:3.4.0

----------------------------------------------------------------------------------------------

1.分詞

 

# -*- coding: utf-8 -*-

import os

sample="我的名字叫做推推"
#分詞情況1
from pyltp import Segmentor

#設置一個絕對路徑

abs_path="/Users/hqh/nlp/3.4.0/ltp_data_v3.4.0"
cws_path=os.path.join(abs_path,'cws.model')

seg=Segmentor() #生成對象
seg.load(cws_path) #加載分詞語料庫
words=seg.segment(sample) #開始分詞
print(",".join(words)) #輸出
#print(list(words))。#以list方式進行輸出
seg.release() #釋放實例

2.加載外部字典進行分詞

 

sample1="李克強調研同盾科技"
seg=Segmentor() #生成實例對象
lexicon_path=os.path.join(abs_path,"lexicon")
seg.load_with_lexicon(cws_path,lexicon_path)
words_with_lexicon=seg.segment(sample1)
print(list(words_with_lexicon)) #輸出['李克強', '調研', '同盾科技'],不加載外部字典,輸出['李克強', '調研', '同盾','科技']
seg.release()

3.詞性標註

 

from pyltp import Postagger  #對分好的詞進行標註,前提是分詞
pos=Postagger()
pos_path=os.path.join(abs_path,"pos.model") #加載詞性語料庫
pos.load(pos_path)
words_pos=pos.postag(words)
print(list(words_pos))
for k,v in zip(words,words_pos):
    print(k+'--->'+v)
pos.release()


4.命名實體識別

 

from pyltp import NamedEntityRecognizer
ner=NamedEntityRecognizer()
ner_path=os.path.join(abs_path,"ner.model") #加載命名實體識別語料庫
ner.load(ner_path)
netags=ner.recognize(words,words_pos)
print(list(netags))


5.依存句法分析

from pyltp import Parser
parser=Parser()
parser_path=os.path.join(abs_path,"parser.model")
parser.load(parser_path)
arcs=parser.parse(words,words_pos)
print([(arc.head,arc.relation) for arc in arcs])
parser.release()

6.語義角色標註

 

from pyltp import SementicRoleLabeller
labeller=SementicRoleLabeller()
labeller_path=os.path.join(abs_path,"pisrl.model") #加載語義角色語料庫
labeller.load(labeller_path)
roles=labeller.label(words,words_pos,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]))

 

7.調用ltp雲平臺(https://www.ltp-cloud.com/document/#api_rest_param)

 

import  requests

pattern=['ws','pos','ner','dp','sdp','srl']

def get_ltp_res(url,api_key,text,pattern):
    parameters = {
        'api_key': api_key,
        'text': text,
        'pattern': pattern,
        'format': 'plain'
    }
    res = requests.get(url, params=parameters)
    print(pattern+'-->'+res.text+"\n")

for ele in pattern:
    get_ltp_res('http://api.ltp-cloud.com/analysis','自己申請的key,去平臺註冊就會發到你的郵箱','我的名字叫做推推',ele)

輸出:

 

ws-->我 的 名字 叫做 推推

pos-->我_r 的_u 名字_n 叫做_v 推推_v

ner-->我 的 名字 叫做 推推

dp-->我_0 名字_2 ATT
的_1 我_0 RAD
名字_2 叫做_3 SBV
叫做_3 -1 HED
推推_4 叫做_3 VOB

sdp-->我_0 名字_2 Poss
的_1 我_0 mAux
名字_2 叫做_3 Exp
叫做_3 -1 Root
推推_4 叫做_3 Clas

srl-->[我 的 名字]A1 [叫做]v [推推]A1
 

 

附錄:

一.句法分析:

 

依存語法 (Dependency Parsing, DP) 通過分析語言單位內成分之間的依存關係揭示其句法結構。 直觀來講,依存句法分析識別句子中的“主謂賓”、“定狀補”這些語法成分,並分析各成分之間的關係

 

關係類型 Tag Description Example
主謂關係 SBV subject-verb 我送她一束花 (我 <-- 送)
動賓關係 VOB 直接賓語,verb-object 我送她一束花 (送 --> 花)
間賓關係 IOB 間接賓語,indirect-object 我送她一束花 (送 --> 她)
前置賓語 FOB 前置賓語,fronting-object 他什麼書都讀 (書 <-- 讀)
兼語 DBL double 他請我吃飯 (請 --> 我)
定中關係 ATT attribute 紅蘋果 (紅 <-- 蘋果)
狀中結構 ADV adverbial 非常美麗 (非常 <-- 美麗)
動補結構 CMP complement 做完了作業 (做 --> 完)
並列關係 COO coordinate 大山和大海 (大山 --> 大海)
介賓關係 POB preposition-object 在貿易區內 (在 --> 內)
左附加關係 LAD left adjunct 大山和大海 (和 <-- 大海)
右附加關係 RAD right adjunct 孩子們 (孩子 --> 們)
獨立結構 IS independent structure 兩個單句在結構上彼此獨立
標點 WP punctuation
核心關係 HED head 指整個句子的核心

 

二.語義角色標註:

 

語義角色標註 (Semantic Role Labeling, SRL) 是一種淺層的語義分析技術,標註句子中某些短語爲給定謂詞的論元 (語義角色) ,如施事、受事、時間和地點等

標記 說明
ADV adverbial, default tag ( 附加的,默認標記 )
BNE beneficiary ( 受益人 )
CND condition ( 條件 )
DIR direction ( 方向 )
DGR degree ( 程度 )
EXT extent ( 擴展 )
FRQ frequency ( 頻率 )
LOC locative ( 地點 )
MNR manner ( 方式 )
PRP purpose or reason ( 目的或原因 )
TMP temporal ( 時間 )
TPC topic ( 主題 )
CRD coordinated arguments ( 並列參數 )
PRD predicate ( 謂語動詞 )
PSR possessor ( 持有者 )
PSE possessee ( 被持有 )

 

三.語義依存分析 (Semantic Dependency Parsing, SDP):

 

分析句子各個語言單位之間的語義關聯,並將語義關聯以依存結構呈現。 使用語義依存刻畫句子語義,好處在於不需要去抽象詞彙本身,而是通過詞彙所承受的語義框架來描述該詞彙,而論元的數目相對詞彙來說數量總是少了很多的。語義依存分析目標是跨越句子表層句法結構的束縛,直接獲取深層的語義信息

 

 

關係類型 Tag Description Example
施事關係 Agt Agent 我送她一束花 (我 <-- 送)
當事關係 Exp Experiencer 我跑得快 (跑 --> 我)
感事關係 Aft Affection 我思念家鄉 (思念 --> 我)
領事關係 Poss Possessor 他有一本好讀 (他 <-- 有)
受事關係 Pat Patient 他打了小明 (打 --> 小明)
客事關係 Cont Content 他聽到鞭炮聲 (聽 --> 鞭炮聲)
成事關係 Prod Product 他寫了本小說 (寫 --> 小說)
源事關係 Orig Origin 我軍繳獲敵人四輛坦克 (繳獲 --> 坦克)
涉事關係 Datv Dative 他告訴我個祕密 ( 告訴 --> 我 )
比較角色 Comp Comitative 他成績比我好 (他 --> 我)
屬事角色 Belg Belongings 老趙有倆女兒 (老趙 <-- 有)
類事角色 Clas Classification 他是中學生 (是 --> 中學生)
依據角色 Accd According 本庭依法宣判 (依法 <-- 宣判)
緣故角色 Reas Reason 他在愁女兒婚事 (愁 --> 婚事)
意圖角色 Int Intention 爲了金牌他拼命努力 (金牌 <-- 努力)
結局角色 Cons Consequence 他跑了滿頭大汗 (跑 --> 滿頭大汗)
方式角色 Mann Manner 球慢慢滾進空門 (慢慢 <-- 滾)
工具角色 Tool Tool 她用砂鍋熬粥 (砂鍋 <-- 熬粥)
材料角色 Malt Material 她用小米熬粥 (小米 <-- 熬粥)
時間角色 Time Time 唐朝有個李白 (唐朝 <-- 有)
空間角色 Loc Location 這房子朝南 (朝 --> 南)
歷程角色 Proc Process 火車正在過長江大橋 (過 --> 大橋)
趨向角色 Dir Direction 部隊奔向南方 (奔 --> 南)
範圍角色 Sco Scope 產品應該比質量 (比 --> 質量)
數量角色 Quan Quantity 一年有365天 (有 --> 天)
數量數組 Qp Quantity-phrase 三本書 (三 --> 本)
頻率角色 Freq Frequency 他每天看書 (每天 <-- 看)
順序角色 Seq Sequence 他跑第一 (跑 --> 第一)
描寫角色 Desc(Feat) Description 他長得胖 (長 --> 胖)
宿主角色 Host Host 住房面積 (住房 <-- 面積)
名字修飾角色 Nmod Name-modifier 果戈裏大街 (果戈裏 <-- 大街)
時間修飾角色 Tmod Time-modifier 星期一上午 (星期一 <-- 上午)
反角色 r + main role   打籃球的小姑娘 (打籃球 <-- 姑娘)
嵌套角色 d + main role   爺爺看見孫子在跑 (看見 --> 跑)
並列關係 eCoo event Coordination 我喜歡唱歌和跳舞 (唱歌 --> 跳舞)
選擇關係 eSelt event Selection 您是喝茶還是喝咖啡 (茶 --> 咖啡)
等同關係 eEqu event Equivalent 他們三個人一起走 (他們 --> 三個人)
先行關係 ePrec event Precedent 首先,先
順承關係 eSucc event Successor 隨後,然後
遞進關係 eProg event Progression 況且,並且
轉折關係 eAdvt event adversative 卻,然而
原因關係 eCau event Cause 因爲,既然
結果關係 eResu event Result 因此,以致
推論關係 eInf event Inference 才,則
條件關係 eCond event Condition 只要,除非
假設關係 eSupp event Supposition 如果,要是
讓步關係 eConc event Concession 縱使,哪怕
手段關係 eMetd event Method  
目的關係 ePurp event Purpose 爲了,以便
割捨關係 eAban event Abandonment 與其,也不
選取關係 ePref event Preference 不如,寧願
總括關係 eSum event Summary 總而言之
分敘關係 eRect event Recount 例如,比方說
連詞標記 mConj Recount Marker 和,或
的字標記 mAux Auxiliary 的,地,得
介詞標記 mPrep Preposition 把,被
語氣標記 mTone Tone 嗎,呢
時間標記 mTime Time 才,曾經
範圍標記 mRang Range 都,到處
程度標記 mDegr Degree 很,稍微
頻率標記 mFreq Frequency Marker 再,常常
趨向標記 mDir Direction Marker 上去,下來
插入語標記 mPars Parenthesis Marker 總的來說,衆所周知
否定標記 mNeg Negation Marker 不,沒,未
情態標記 mMod Modal Marker 幸虧,會,能
標點標記 mPunc Punctuation Marker ,。!
重複標記 mPept Repetition Marker 走啊走 (走 --> 走)
多數標記 mMaj Majority Marker 們,等
實詞虛化標記 mVain Vain Marker  
離合標記 mSepa Seperation Marker 吃了個飯 (吃 --> 飯) 洗了個澡 (洗 --> 澡)
根節點 Root Root 全句核心節點

 

 

 

 

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