Skip to main content

一个与 scikit 兼容的文本转换器库,可随时集成到 NLP 管道中以用于各种分类任务。

项目描述

构建状态

NLPkit - 用于文本分类的转换器

一个与 scikit 兼容的文本转换器库,可随时集成到 NLP 管道中以用于各种分类任务。

项目结构

.
├── nlpkit
│   ├── __init__.py
│   └── nlp_feature_extraction
│       ├── __init__.py
│       ├── liwc
│       ├── word_embeddings_features.py
│       ├── syntax_features.py
│       ├── ner_features.py
│       ├── pos_features.py
│       ├── liwc_features.py
│       ├── text_statistics_features.py
│       └── tests
│           ├── __init__.py
│           ├── test_data
│           ├── test_liwc_feature_extraction.py
│           ├── test_ner_feature_extraction.py
│           ├── test_pos_feature_extraction.py
│           ├── test_syntax_feature_extraction.py
│           └── test_word_embeddings_feature_extraction.py
├── examples
├── README.md
├── LICENCE
├── requirements.txt
└── setup.py

入门

这些说明将使您在本地计算机上启动并运行该项目的副本。

先决条件

  1. 蟒蛇 3.6
  2. 斯坦福 CoreNLP 服务器(用于某些转换器)
  3. w2v 转换器的预训练词向量

带有 Docker 的斯坦福 CoreNLP 服务器

选区解析、POS 和 NER 标记需要斯坦福 CoreNLP。

让 CoreNLP 服务器运行最简单的方法是使用 Docker。您可以找到 Dockerfile 和说明,让服务器在Stanford CoreNLP Server - Docker上运行。

词向量

如果您不想训练自己的词嵌入,可以从Stanford GloVe 项目下载预训练的词向量。例如,维基百科模型有 40 万个单词的词汇表,使用 300 维向量表示。词向量采用 GloVe 格式,需要转换为 word2vec 格式。虽然格式几乎相同,但您可以使用 gensim 进行转换。

python -m gensim.scripts.glove2word2vec -i glove.txt -o word2vec.txt

变压器清单

  • POSTagPreprocessor:通过以 word_TAG_ 的形式标记每个单词来预处理文本文档,例如 what_WP。可用于生成 POS 标记的 n-gram
  • NERPreprocessor:通过用通用标签替换命名实体来预处理文本文档,例如 PERSON、LOCATION
  • WordEmbedsDocVectorizer:将文本文档转换为基于 word2vec 的文档向量表示。它将文档的单词映射到 word2vec 向量,并跨维度对它们进行平均以生成文档向量表示
  • POSExtractor:提取文本文档集合的词性 (POS) 计数
  • CFGExtractor:提取文本文档集合中的上下文无关语法 (CFG) 产生规则
  • NamedEntitiesCounter:为文本文档集合提取每个实体类型(例如 PERSON)的命名实体计数
  • LIWCExtractor:提取属于文本文档集合的各种 LIWC 类别的单词比例
  • TextStatsExtractor:计算文本文档集合的各种文本统计信息和可读性分数

用法

所有自定义转换器都扩展了 BaseEstimator 和 TransformerMixin 并实现了 fit 和 transform 方法。

# POSExtractor
sf_parser = CoreNLPParser(url='http://localhost:9000/', tagtype='pos')
pos_extractor = POSExtractor(sf_parser)
X = pos_extractor.fit_transform(corpus)

它们也可以用于管道,例如

pipeline = Pipeline([
                ('pre', TextPreprocessor(stemming=False)),
                ('w2v', WordEmbedsDocVectorizer(self._word2vec, tfidf_weights=True)),
                ('clf', SVC(kernel='linear', C=1, probability=True))
           ])

有关更多信息,您可以运行示例文件夹中包含的示例。

测试

Pytest 框架用于单元测试。该项目中生成的所有自定义文本转换器都带有大量的单元测试。要运行测试,请使用:
pytest src

项目存储库

https://github.com/evanll/nlpkit-ml

作者

由 Evan Lalopoulos 撰写,evan.lalopoulos.2017@ my.bristol.ac.uk作为他使用 NLP 检测假新闻的论文的一部分。

埃文·拉洛普洛斯-埃文尔

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

nlpkit-ml-1.0.0.tar.gz (14.6 kB 查看哈希

已上传 source

内置分布

nlpkit_ml-1.0.0-py3-none-any.whl (36.3 kB 查看哈希

已上传 py3