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 全句核心节点

 

 

 

 

你可能感兴趣的:(自然语言处理)