Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

附录:NLP的Python库

Python 是构建基于 NLP 的专家系统的最佳选择之一,有许多开源的 NLP 库可供 Python 程序员使用。这些库和包包含了一系列可直接使用的模块和函数,用于集成复杂的 NLP 步骤和算法,使实现变得快速、简单和高效。 在本节中,我们将描述三个基于 Python 的 NLP 库,它们被认为是最有用的,也是我们在本章中将要使用的。

NLTK

NLTK是一个用于建立Python程序来处理人类语言的工具库。 它为50多个语料库和词汇资源(如WordNet)提供了易于使用的接口,以及一套用于分类、标记化、词根化、标签化、解析和语义推理的文本处理库。

它的模块化结构使其非常适合学习和探索 NLP 概念。然而,它功能强大,学习曲线陡峭。 NLTK 可以使用典型的安装过程安装。安装 NLTK 后,还需要下载 NLTK 数据。NLTK 数据包括一个预训练的英语分词器 punkt,也可以下载:

import nltk
import nltk.data 
nltk.download('punkt')
NLTK库信息: {'nltk_data path': 'nltk/nltk_data', 'nltk_data included': ['tokenizers/punkt', 'taggers/averaged_perceptron_tagger', 'taggers/universal_tagset', 'corpora/.DS_Store', 'corpora/inaugural', 'corpora/wordnet.zip', 'corpora/stopwords.zip']}
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[1], line 3
      1 import nltk
      2 import nltk.data 
----> 3 nltk.download('punkt')

AttributeError: module 'nltk' has no attribute 'download'

大多数时候,通过NLTK自己的HTTP方式在国内是无法下载NLTK语料库的,可以通过以下方式解决。

NLTK Corpora下载地址:https://www.nltk.org/nltk_data/ ,单独下载语料库,放置在nltk/nltk_data/corpora下即可

TextBlob

TextBlob 是建立在 NLTK 之上的。这是用于快速原型设计或构建具有最小性能要求的应用程序的最佳库之一。TextBlob 通过为 NLTK 提供直观的接口,使文本处理变得简单。可以使用以下命令导入 TextBlob:

from textblob import TextBlob

spaCy

spaCy 是一个旨在快速、精简和适用于生产环境的 NLP 库。它的理念是为每个目的提供唯一的算法(最佳算法)。我们不需要做选择,可以专注于提高生产力。spaCy 使用自己的管道同时执行多个预处理步骤。我们将在后续章节中进行演示。 spaCy 的模型可以安装为 Python 包,就像任何其他模块一样。要加载一个模型,可以使用 spacy.load 加上模型的快捷链接、包名称或数据目录的路径:

通过以下命令行代码来下载en_core_web_lg模型

python -m spacy download en_core_web_lg
import spacy
nlp = spacy.load("en_core_web_lg")
---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
Cell In[3], line 2
      1 import spacy
----> 2 nlp = spacy.load("en_core_web_lg")

File ~/.local/lib/python3.11/site-packages/spacy/__init__.py:51, in load(name, vocab, disable, enable, exclude, config)
     27 def load(
     28     name: Union[str, Path],
     29     *,
   (...)
     34     config: Union[Dict[str, Any], Config] = util.SimpleFrozenDict(),
     35 ) -> Language:
     36     """Load a spaCy model from an installed package or a local path.
     37 
     38     name (str): Package name or model path.
   (...)
     49     RETURNS (Language): The loaded nlp object.
     50     """
---> 51     return util.load_model(
     52         name,
     53         vocab=vocab,
     54         disable=disable,
     55         enable=enable,
     56         exclude=exclude,
     57         config=config,
     58     )

File ~/.local/lib/python3.11/site-packages/spacy/util.py:472, in load_model(name, vocab, disable, enable, exclude, config)
    470 if name in OLD_MODEL_SHORTCUTS:
    471     raise IOError(Errors.E941.format(name=name, full=OLD_MODEL_SHORTCUTS[name]))  # type: ignore[index]
--> 472 raise IOError(Errors.E050.format(name=name))

OSError: [E050] Can't find model 'en_core_web_lg'. It doesn't seem to be a Python package or a valid path to a data directory.

除了这些之外,还有一些其他库,例如 gensim,我们将在本章的一些示例中进行探索。