Skip to main content

NLPiper,一个轻量级的包,集成了一系列框架来预处理文档。

项目描述

<中心>

测试 执照:麻省理工学院 编解码器 包版本 蟒蛇版本

</center>

NLPiper 是一个包,它整合了不同的 NLP 工具并将它们的转换应用到目标文档中。

目标

与一系列框架集成的轻量级软件包,用于预处理文档。


安装

pip您可以使用或您喜欢的包管理器从 PyPi 安装 NLPiper :

pip install nlpiper

可选依赖项

一些转换需要安装额外的包。下表解释了可以安装的可选依赖项:

包裹 描述
bs4 CleanMarkup中用于从文档中删除 HTML 和 XML。
gensim GensimEmbeddings中用于文档嵌入提取。
hunspell StemmerSpellCheck中使用以规范化文档。
nltk RemoveStopWords中用于从文档中删除停用词。
numpy 用于某些文档的转换。
sacremoses MosesTokenizer中用于标记文档。
spacy SpacyTokenizer中用于标记文档,也可用于提取实体、标签等。
stanza StanzaTokenizer中用于标记文档,也可用于提取实体、标签等。
torchtext TorchTextEmbeddings中用于文档嵌入提取。

要安装您的目的所需的可选依赖项,您可以运行:

pip install nlpiper[<package>]

您可以使用以下命令一次安装所有这些依赖项:

pip install nlpiper[all]

可以使用以下方式安装该软件包pip

pip install nlpiper

对于所有可用的转换: pip install 'nlpiper[all]',否则,只需安装所需的软件包。

用法

定义管道:

>>> from nlpiper.core import Compose
>>> from nlpiper.transformers import cleaners, normalizers, tokenizers
>>> pipeline = Compose([
...                    cleaners.CleanNumber(),
...                    tokenizers.BasicTokenizer(),
...                    normalizers.CaseTokens()
... ])
>>> pipeline
Compose([CleanNumber(), BasicTokenizer(), CaseTokens(mode='lower')])

生成一个文档和文档结构:

>>> from nlpiper.core import Document
>>> doc = Document("The following character is a number: 1 and the next one is not a.")
>>> doc
Document(
    original='The following character is a number: 1 and the next one is not a.',
    cleaned='The following character is a number: 1 and the next one is not a.',
    tokens=None,
    embedded=None,
    steps=[]
)

将管道应用到文档:

>>> doc = pipeline(doc)
>>> doc
Document(
    original='The following character is a number: 1 and the next one is not a.',
    cleaned='The following character is a number:  and the next one is not a.',
    tokens=[
        Token(original='The', cleaned='the', lemma=None, stem=None, embedded=None),
        Token(original='following', cleaned='following', lemma=None, stem=None, embedded=None),
        Token(original='character', cleaned='character', lemma=None, stem=None, embedded=None),
        Token(original='is', cleaned='is', lemma=None, stem=None, embedded=None),
        Token(original='a', cleaned='a', lemma=None, stem=None, embedded=None),
        Token(original='number:', cleaned='number:', lemma=None, stem=None, embedded=None),
        Token(original='and', cleaned='and', lemma=None, stem=None, embedded=None),
        Token(original='the', cleaned='the', lemma=None, stem=None, embedded=None),
        Token(original='next', cleaned='next', lemma=None, stem=None, embedded=None),
        Token(original='one', cleaned='one', lemma=None, stem=None, embedded=None),
        Token(original='is', cleaned='is', lemma=None, stem=None, embedded=None),
        Token(original='not', cleaned='not', lemma=None, stem=None, embedded=None),
        Token(original='a.', cleaned='a.', lemma=None, stem=None, embedded=None)
    ],
    embedded=None,
    steps=['CleanNumber()', 'BasicTokenizer()', "CaseTokens(mode='lower')"]
)

可用的变压器

清洁工

整体清理文档,例如删除 HTML、删除重音、删除电子邮件等。

  • CleanURL:从文本中删除 URL。
  • CleanEmail:从文本中删除电子邮件。
  • CleanNumber:从文本中删除数字。
  • CleanPunctuation:从文本中删除标点符号。
  • CleanEOF:从文本中删除文件结尾。
  • CleanMarkup:从文本中删除 HTML 或 XML。
  • CleanAccents:从文本中删除重音符号。

分词器

清理完成后对文档进行标记(将文档拆分为标记)

归一化器

适用于令牌级别,例如删除停用词、拼写检查等。

  • CaseTokens: 小写或大写所有标记。
  • RemovePunctuation:从结果标记中删除标点符号。
  • RemoveStopWords:删除停用词作为标记。
  • VocabularyFilter:仅允许来自预定义词汇表的标记。
  • Stemmer:从令牌中获取词干。
  • SpellCheck:拼写检查标记,如果给定最大距离,将使用建议的单词计算与标记的 Levenshtein 距离,如果较低,则将标记替换为建议,否则将保留标记。如果单词拼写不正确,则没有给出最大距离,则将替换为空字符串。

嵌入

应用于令牌级别,通过嵌入转换单词

  • GensimEmbeddings:使用 Gensim 词嵌入。
  • TorchTextEmbeddings:使用torchtext模型应用词嵌入GloveCharNGramFastText

文档

Document是一个数据类,包含文本预处理期间使用的所有信息。

文档属性:

  • original: 要处理的原始文本。
  • cleaned:文档启动时要处理的原始文本,然后属性哪个CleanersTokenizers工作。
  • tokens: 使用 . 获得的令牌列表Tokenizer
  • steps:应用于文档的转换列表。
  • embedded: 文档嵌入。

token

  • original: 原始令牌。
  • cleaned:初始时的原始令牌,然后根据 . 修改Normalizers
  • lemma:token lemma(需要使用 normalizer 或 tokenizer 来获得)。
  • stem:token stem(需要使用规范化器来获取)。
  • ner:token entity(需要使用normalizer或者tokenizer来获取)。
  • embedded:令牌嵌入。

撰写

Compose 将选择的转换器应用到给定的文档中。它限制了可以应用转换器的顺序,首先是 Cleaners,然后是 Tokenizer,最后是 Normalizer 和 Embeddings。

可以使用已处理文档中的步骤创建组合:

>>> doc.steps
['CleanNumber()', 'BasicTokenizer()', "CaseTokens(mode='lower')"]
>>> new_pipeline = Compose.create_from_steps(doc.steps)
>>> new_pipeline
Compose([CleanNumber(), BasicTokenizer(), CaseTokens(mode='lower')])

也可以回滚应用于文档的步骤:

>>> new_doc = Compose.rollback_document(doc, 2)
>>> new_doc
Document(
    original='The following character is a number: 1 and the next one is not a.',
    cleaned='The following character is a number:  and the next one is not a.',
    tokens=None,
    embedded=None,
    steps=['CleanNumber()']
)
>>> doc
Document(
    original='The following character is a number: 1 and the next one is not a.',
    cleaned='The following character is a number:  and the next one is not a.',
    tokens=[
        Token(original='The', cleaned='the', lemma=None, stem=None, embedded=None),
        Token(original='following', cleaned='following', lemma=None, stem=None, embedded=None),
        Token(original='character', cleaned='character', lemma=None, stem=None, embedded=None),
        Token(original='is', cleaned='is', lemma=None, stem=None, embedded=None),
        Token(original='a', cleaned='a', lemma=None, stem=None, embedded=None),
        Token(original='number:', cleaned='number:', lemma=None, stem=None, embedded=None),
        Token(original='and', cleaned='and', lemma=None, stem=None, embedded=None),
        Token(original='the', cleaned='the', lemma=None, stem=None, embedded=None),
        Token(original='next', cleaned='next', lemma=None, stem=None, embedded=None),
        Token(original='one', cleaned='one', lemma=None, stem=None, embedded=None),
        Token(original='is', cleaned='is', lemma=None, stem=None, embedded=None),
        Token(original='not', cleaned='not', lemma=None, stem=None, embedded=None),
        Token(original='a.', cleaned='a.', lemma=None, stem=None, embedded=None)
    ],
    embedded=None,
    steps=['CleanNumber()', 'BasicTokenizer()', "CaseTokens(mode='lower')"]
)

开发安装

git clone https://github.com/dlite-tools/NLPiper.git
cd NLPiper
poetry install

要安装可选依赖项,您可以运行:

poetry install --extras <package>

要安装所有可选依赖项,请运行:

poetry install --extras all

贡献

欢迎所有贡献、错误报告、错误修复、文档改进、增强和想法。

可以 在 GitHub 上的贡献指南中找到有关如何贡献的详细概述。


问题

这里提交功能请求或错误修正。


许可证和学分

NLPiper在MIT许可下获得许可,由 Tomás Osório ( @tomassosorio )、Daniel Ferrari ( @FerrariDG )、Carlos Alves ( @cmalves、João Cunha ( @jfecunha )编写和维护

项目详情


下载文件

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

源分布

nlpiper-0.3.1.tar.gz (17.5 kB 查看哈希

已上传 source

内置分布

nlpiper-0.3.1-py3-none-any.whl (17.8 kB 查看哈希

已上传 py3