目录
一、问题描述:
因任务需求,需要使用到一些特征信息,比如词性或依存解析结果。目前,存在很多的工具包可以实现对中文或英文句子进行解析,如spacy, nltk, stanford CoreNLP等。
补充说明~
Spacy,NLTK和Stanford CoreNLP都是自然语言处理(NLP)库。这些库都可以处理中文和英文文本。下面是它们各自的优缺点:
- Spacy:速度快,内存占用少,易于使用,支持多语言,但是对于一些特殊任务可能不太适用。
- NLTK:功能强大,支持多种语言,有大量的文档和教程,但是速度较慢。
- Stanford CoreNLP:支持多种语言,功能强大,有很多可用的模型和工具,但是需要Java环境。
根据实际需求,我选择了spacy工具包。
下面分别介绍如何使用spacy工具包,实现对中文和英文文本的解析。
二、问题解决:
2.1 英文文本
1. 首先,需要安装Spacy, 你可以使用以下命令在终端中安装Spacy:
pip install spacy
2. 安装完成后,你需要下载一个预训练的模型。你可以使用以下命令下载英文模型:
python -m spacy download en_core_web_sm
注意事项:
1)安装的en_core_web_sm包,要与spacy版本一致。 e.g., 我使用的spacy 版本是2.2.1, 因此我的en_core_web_sm版本是2.3.0。
2)最简单的安装方式,是先下载对应的.tar.gz文件,官网下载地址,然后,直接使用安装命令安装。
pip install en_core_web_sm-2.3.0.tar.gz
3. 安装完成后,可以实现自己想要的功能。如想要输出每个单词的文本,词性和依赖关系,可以采用下面的代码:
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("This is an example sentence.")
for token in doc:
print(token.text, token.pos_, token.dep_)
Tips:
如果想要可视化解析结果,可参考另一篇博客:Click Here
2.2 中文文本
若想对中文文本进行解析,方法同英文。区别仅在于需要针对不同的语种,安装不同的包。
若Spacy工具包,版本是2.2.1, 则需要下载的是 pip install zh_core_web_sm-2.3.0.tar.gz
使用的时候,仅有如下一行代码不同,其余完全相同。
nlp = spacy.load("zh_core_web_sm")