NLP入门学习3——句法分析(基于LTP4)
NLP入門學(xué)習(xí)3——句法分析(基于LTP4)
- 0.簡(jiǎn)介
- 1.LTP介紹
- 2.安裝
- 2.1 模塊安裝
- 2.2 模型下載
- 3.使用
- 3.1 分句
- 3.2 分詞
- 3.3 詞性標(biāo)注
- 3.4 命名實(shí)體識(shí)別
- 3.5 依存句法分析
- 4.說(shuō)明
- 4.1 詞性標(biāo)注
- 4.2 依存句法分析
0.簡(jiǎn)介
本篇將介紹NLP中的句法結(jié)構(gòu)分析,主要基于LTP工具實(shí)現(xiàn),在過(guò)程中也會(huì)介紹LTP其他功能的使用。
1.LTP介紹
LTP(Language Technology Platform) 提供了一系列中文自然語(yǔ)言處理工具,用戶可以使用這些工具對(duì)于中文文本進(jìn)行分詞、詞性標(biāo)注、句法分析等等工作。
git:https://github.com/HIT-SCIR/ltp
2.安裝
2.1 模塊安裝
舊版的ltp安裝上有點(diǎn)問(wèn)題,linux下執(zhí)行pip,默認(rèn)安裝0.2.1版本。
pip install pyltpwindows下會(huì)存在問(wèn)題,可參考https://github.com/HIT-SCIR/pyltp/issues/125
建議安裝ltp4,一鍵安裝:
2.2 模型下載
官方git中有模型的下載鏈接,包括V1和V2兩個(gè)版本,又包括base,small和tiny三個(gè)模型。
同時(shí),官方git上給出了兩個(gè)版本的各項(xiàng)指標(biāo)。
3.使用
3.1 分句
from ltp import LTP ltp = LTP('../ltp_model/base') # 加載模型,路徑是模型文件解壓后的文件夾 # 后面的代碼全都省略了模型加載這一步sents = ltp.sent_split(["吃葡萄不吐葡萄皮。不吃葡萄倒吐葡萄皮。"]) sents# [out]: ['吃葡萄不吐葡萄皮。', '不吃葡萄倒吐葡萄皮。']3.2 分詞
segment, hidden = ltp.seg(["南京市長(zhǎng)江大橋"]) segment# [out]: [['南京市', '長(zhǎng)江', '大橋']]與其他分詞工具類似,LTP也提供自定義詞典的功能,可以指定加載自定義詞典的路徑。
ltp.init_dict(path="user_dict.txt", max_window=4)也可以直接輸入自定義的詞匯,加入自定義之后的分詞結(jié)果:
ltp.add_words(words=["市長(zhǎng)", "江大橋"], max_window=4)segment, hidden = ltp.seg(["南京市長(zhǎng)江大橋"]) segment# [out]: [['南京', '市長(zhǎng)', '江大橋']]3.3 詞性標(biāo)注
pos = ltp.pos(hidden) pos# [out]: [['ns', 'ns', 'n']] # 這個(gè)結(jié)果對(duì)應(yīng)的是 [['南京市', '長(zhǎng)江', '大橋']]詞性標(biāo)注的結(jié)果與分詞結(jié)果相對(duì)應(yīng),結(jié)果中的ns等,會(huì)在第4部分進(jìn)行備注。
3.4 命名實(shí)體識(shí)別
ltp也可以完成命名實(shí)體識(shí)別的任務(wù),不過(guò)對(duì)于復(fù)雜任務(wù)最好還是用更加復(fù)雜的模型去做,畢竟ltp的參數(shù)量在這擺著呢。
ner = ltp.ner(hidden) ner# [out]: [[('Nh', 0, 0), ('Ns', 1, 1), ('Nh', 2, 2)]]for i in range(len(ner[0])): # 因?yàn)橹挥幸粋€(gè)句子,所以直接取了ner[0]print("{}:".format(ner[0][i][0]), segment[0][ner[0][i][1]: ner[0][i][2]+1]) # [out]: Nh: ['南京'] # Ns: ['市長(zhǎng)'] # Nh: ['江大橋']唉,果然結(jié)果不是很準(zhǔn),南京給認(rèn)成了人名。在詞性標(biāo)注方面,ltp劃分的太細(xì)了,在實(shí)際應(yīng)用的過(guò)程中其實(shí)只需要去判斷動(dòng)詞名詞之類就好,如果要對(duì)人名地點(diǎn)進(jìn)行標(biāo)注,最好還是用專門的NER模型去完成。
3.5 依存句法分析
ltp.add_words(words=["市長(zhǎng)", "江大橋"], max_window=4) segment, hidden = ltp.seg(["南京市長(zhǎng)江大橋是南京市的市長(zhǎng)"]) print(segment) dep = ltp.dep(hidden) dep# [out]: [['南京', '市長(zhǎng)', '江大橋', '是', '南京市', '的', '市長(zhǎng)']] # [out]: [[(1, 2, 'ATT'), # (2, 3, 'ATT'), # (3, 4, 'SBV'), # (4, 0, 'HED'), # (5, 7, 'ATT'), # (6, 5, 'RAD'), # (7, 4, 'VOB')]]舉個(gè)栗子,ATT代表定中關(guān)系,也就是定語(yǔ)和中心詞,南京是市長(zhǎng)的定語(yǔ),市長(zhǎng)是江大橋的定語(yǔ)。這些關(guān)系有很多實(shí)際的應(yīng)用,例如基于這些關(guān)系,在命名實(shí)體識(shí)別中,找到實(shí)體后,將實(shí)體的修飾詞補(bǔ)全等等。
4.說(shuō)明
4.1 詞性標(biāo)注
| a | adjective:形容詞 | 美麗 |
| b | other noun-modifier:其他的修飾名詞 | 大型, 西式 |
| c | conjunction:連詞 | 和, 雖然 |
| d | adverb:副詞 | 很 |
| e | exclamation:感嘆詞 | 哎 |
| g | morpheme | 茨, 甥 |
| h | prefix:前綴 | 阿, 偽 |
| i | idiom:成語(yǔ) | 百花齊放 |
| j | abbreviation:縮寫 | 公檢法 |
| k | suffix:后綴 | 界, 率 |
| m | number:數(shù)字 | 一, 第一 |
| n | general noun:一般名詞 | 蘋果 |
| nd | direction noun:方向名詞 | 右側(cè) |
| nh | person name:人名 | 杜甫, 湯姆 |
| ni | organization name:公司名 | 保險(xiǎn)公司 |
| nl | location noun:地點(diǎn)名詞 | 城郊 |
| ns | geographical name:地理名詞 | 北京 |
| nt | temporal noun:時(shí)間名詞 | 近日, 明代 |
| nz | other proper noun:其他名詞 | 諾貝爾獎(jiǎng) |
| o | onomatopoeia:擬聲詞 | 嘩啦 |
| p | preposition:介詞 | 在, 把 |
| q | quantity:量詞 | 個(gè) |
| r | pronoun:代詞 | 我們 |
| u | auxiliary:助詞 | 的, 地 |
| v | verb:動(dòng)詞 | 跑, 學(xué)習(xí) |
| wp | punctuation:標(biāo)點(diǎn) | ,。! |
| ws | foreign words:國(guó)外詞 | CPU |
| x | non-lexeme:不構(gòu)成詞 | 萄, 翱 |
4.2 依存句法分析
| 主謂關(guān)系 | SBV | subject-verb | 我送她一束花 (我 <– 送) |
| 動(dòng)賓關(guān)系 | VOB | 直接賓語(yǔ),verb-object | 我送她一束花 (送 –> 花) |
| 間賓關(guān)系 | IOB | 間接賓語(yǔ),indirect-object | 我送她一束花 (送 –> 她) |
| 前置賓語(yǔ) | FOB | 前置賓語(yǔ),fronting-object | 他什么書都讀 (書 <– 讀) |
| 兼語(yǔ) | DBL | double | 他請(qǐng)我吃飯 (請(qǐng) –> 我) |
| 定中關(guān)系 | ATT | attribute | 紅蘋果 (紅 <– 蘋果) |
| 狀中結(jié)構(gòu) | ADV | adverbial | 非常美麗 (非常 <– 美麗) |
| 動(dòng)補(bǔ)結(jié)構(gòu) | CMP | complement | 做完了作業(yè) (做 –> 完) |
| 并列關(guān)系 | COO | coordinate | 大山和大海 (大山 –> 大海) |
| 介賓關(guān)系 | POB | preposition-object | 在貿(mào)易區(qū)內(nèi) (在 –> 內(nèi)) |
| 左附加關(guān)系 | LAD | left adjunct | 大山和大海 (和 <– 大海) |
| 右附加關(guān)系 | RAD | right adjunct | 孩子們 (孩子 –> 們) |
| 獨(dú)立結(jié)構(gòu) | IS | independent structure | 兩個(gè)單句在結(jié)構(gòu)上彼此獨(dú)立 |
| 核心關(guān)系 | HED | head | 指整個(gè)句子的核心 |
總結(jié)
以上是生活随笔為你收集整理的NLP入门学习3——句法分析(基于LTP4)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 设计模式-开宝箱
- 下一篇: 每日一题_447.回旋镖的数量