1. 程式人生 > >使用Python呼叫Stanford CoreNLP進行分詞

使用Python呼叫Stanford CoreNLP進行分詞

Stanford CoreNLP的原始碼是使用Java寫的,提供了Server方式進行互動。stanfordcorenlp是一個對Stanford CoreNLP進行了封裝的Python工具包,GitHub地址https://github.com/Lynten/stanford-corenlp,使用非常方便。

安裝stanfordcorenlp包之前: 
1:下載安裝JDK 1.8及以上版本。 
2:下載Stanford CoreNLP(可去官網下載)檔案,解壓。 
3:處理中文還需要下載中文的模型jar檔案,然後放到stanford-corenlp-full-2016-10-31根目錄下即可(注意一定要下載這個檔案哦,否則它預設是按英文來處理的)。

本文所用版本為Stanford CoreNLP 3.7.0。

使用
下面就簡單了:

安裝(Ubuntu)

# sudo pip install stanfordcorenlp


簡單使用,處理中文記得引數lang='zh'

# coding=utf-8

from stanfordcorenlp import StanfordCoreNLP

nlp = StanfordCoreNLP(r'/home/gld/stanford-corenlp-full-2016-10-31/', lang='zh')

sentence = '清華大學位於北京。'
print nlp.word_tokenize(sentence)
print nlp.pos_tag(sentence)
print nlp.ner(sentence)
print nlp.parse(sentence)
print nlp.dependency_parse(sentence)


輸出:

[清華, 大學, 位於, 北京, 。]

[(清華, NR), (大學, NN), (位於, VV), (北京, NR), (。, PU)]

[(清華, ORGANIZATION), (大學, ORGANIZATION), (位於, O), (北京, GPE), (。, O)]

...



故障排除
模型初始化通常需要幾十秒,如果很久不出結果,加入quiet=False, logging_level=logging.DEBUG引數輸出Debug資訊:

import logging
from stanfordcorenlp import StanfordCoreNLP

nlp = StanfordCoreNLP(r'path_or_host', quiet=False, logging_level=logging.DEBUG)



如果出現port is in use的出錯資訊,換一個埠就好了:

nlp = StanfordCoreNLP(r'/home/gld/stanford-corenlp-full-2016-10-31/', port=9001, lang='zh')