中文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...