中文NLP技術學習 1 搭建NLP開發環境

2021-09-21 13:08:08 字數 4275 閱讀 8494

中文nlp技術學習系列文章,將以nltk系統為主體框架,通過整合相關的開源系統來學習nlp中涉及的所有模組。下面是我的pc環境:

1. nltk平台搭建

nltk,nature language tool kit,即自然語言工具包,是乙個免費、開源且使用python程式構建的自然語言資料工作平台。ntlk系統提供了易於使用的介面和超過50種語料庫、詞彙資源,同時還包含一套分類、分詞、詞幹、標註、分析和語義推理的基本框架,更為重要的是我們可以將目前比較好的nlp開源應用系統整合到nltp平台來開發nlp專案。

nltk平台特徵:

1.1 安裝python3.6和第三方庫

(1) 安裝python3.6.8

(2) 安裝網路包

pip install tornado
(3) 安裝數**算包

pip install numpy

pip install scipy

1.2 搭建nltk平台

(1) 安裝nltk開發環境

pip install nltk
# nltk_download.py

import sys

import nltk

import importlib

# 載入sys庫

importlib.

reload

(sys)

nltk.download(

)

執行指令碼python nltk_download.py,看到如下介面:

2. ltp環境搭建

ltp(3.4.0),language technology platform,即語言技術平台,是哈爾濱工業大學開發的一整套中文語言處理系統,該平台基於c++實現,提供包括中文分詞詞性標註命名實體識別依存句法分析語義角色標註等豐富、高效、精確的自然語言處理技術,且支援視覺化圖形輸出。另外,為了便於在python環境下使用,ltp還提供了它的python封裝pyltp(0.2.0),其依賴支援情況:

py2.6

py2.6

py3.4

py3.5

py3.6

conda-python

linux

支援支援

支援支援

支援不支援

mac os

支援支援

支援支援

支援不支援

windows vs2015

不支援不支援

不支援支援

支援不支援

windows vs2017

不支援不支援

不支援支援

支援不支援

2.1 pyltp開發環境搭建

(1) 安裝pyltp

pip install pyltp
$ git clone 

$ git submodule init

$ git submodule update

$ python setup.py install

3. 示例演示

在上一小節中,我們成功將nlp開源系統pyltp整合到nltk平台,本節編寫乙個句法解析示例來演示如何利用nltk和pyltp研究nlp相關技術。關於什麼是句法解析,這裡我們放在後面文章中詳講,你只需要知道句法解析就是漢語中解析乙個句子的語法結構。示例**如下:

# parser.py 句法解析示例

# date:2019-05-07 9:43

# author:jiangdongguo

from pyltp import

*import nltk

from scipy._lib.six import

xrange

sentence =

"中國南部的湖南省,省會是長沙市,也是一座世界知名的城市。"

segment_model_path =

"data/ltp_models/cws.model"

# 中文分詞模型

postagger_model_path =

"data/ltp_models/pos.model"

# 詞性標註模型

parser_model_path =

"data/ltp_models/parser.model"

# 句法分析模型

# 1. 中文分詞

segmentor = segmentor(

)segmentor.load(segment_model_path)

segresult = segmentor.segment(sentence)

tmp =

" ".join(segresult)

print

(tmp)

# 2. 詞性標註

words = tmp.split(

" ")

postagger = postagger(

)postagger.load(postagger_model_path)

postags = postagger.postag(words)

# 3. 句法分析

# 將詞性標註和分詞結果都加入到分析器進行句法解析

parser = parser(

)parser.load(parser_model_path)

arcs = parser.parse(words, postags)

arclen =

len(arcs)

conll =

""# 構建conll標準的資料結構

for i in

xrange

(arclen)

:if arcs[i]

.head ==0:

arcs[i]

.relation =

"root"

conll +=

"\t"

+words[i]

+"("

+postags[i]

+")"

+"\t"

+postags[i]

+"\t"

+str

(arcs[i]

.head)

+"\t"

+arcs[i]

.relation+

"\n"

print

(conll)

# 使用nltk構建依存句法關係樹

conlltree = nltk.dependencygraph(conll)

# 轉換為依存句法圖

tree = conlltree.tree(

)# 構建樹結構

tree.draw(

)# 顯示輸出樹

(venv) e:\compython\nlpdemos>python lesson01/parser.py

中國 南部 的 湖南省 , 省會 是 長沙市 , 也 是 一 座 世界 知名 的 城市 。

中國(ns) ns 2 att

南部(nd) nd 4 att

的(u) u 2 rad

湖南省(ns) ns 7 sbv

,(wp) wp 4 wp

省會(n) n 7 sbv

是(v) v 0 root

長沙市(ns) ns 7 vob

,(wp) wp 7 wp

也(d) d 11 adv

是(v) v 7 coo

一(m) m 13 att

座(q) q 17 att

世界(n) n 15 sbv

知名(a) a 17 att

的(u) u 15 rad

城市(n) n 11 vob

本文demo:lesson01

自然語言處理(NLP)學習筆記(二) NLP技術

nlp 此為第二部分,漫談nlp相關技術。說到nlp的相關技術,因為是要教會計算機理解人類語言嘛,所以先弄清楚語言在大腦中是怎麼產生的是很有必要的。歸納來說,目前人們認為語言在大腦中形成有下面兩種看法。其一就是從理性主義的角度出發,認為人類的語言能力就好像是我們生來就會吃飯一樣是天生具備的。這派觀點...

NLP學習筆記 nlp入門介紹

為什麼計算機難以理解人類的自然語言呢?主要是下面6個特性 詞彙量在自然語言中含有很豐富的詞彙,而程式語言中能使用的關鍵字數量是有限的 結構化自然語言是非結構化的,而程式語言是結構化的,例如類和成員。自然語言是線性字串,要分析它,需要用到分詞 命名實體識別 指代消解和關係抽取等。歧義性我們說話含有大量...

NLP學習之隨筆(1)

nlp一般的處理流程為 原始文字 raw data 分詞 segmentation 清洗資料 cleaning 標準化 normalization 特徵提取 feature extraction 建模 modeling 1 分詞 常見的分詞工具有 jieba分詞 snownlp ltp hannlp...