使用Stanford CoreNLP的Python封装包处理中文(分词、词性标注、命名实体识别、句法树、依存句法分析)
Stanford CoreNLP的源代码是使用Java写的,提供了Server方式进行交互。stanfordcorenlp是一个对Stanford CoreNLP进行了封装的Python工具包,GitHub地址,使用非常方便。
安装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")
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: sql查询当天的数据
- 下一篇: 输入10个数,并输出其中的最大数与最小数