标签归档:neural-networks

SpaCy-基于Python语言的💫工业级自然语言处理

Spacy:工业实力NLP

Spacy是一个图书馆,用于高级自然语言处理在Python和Cython中。它建立在最新的研究基础上,从第一天起就被设计用于真正的产品中

Spacy伴随着pretrained pipelines,并且当前支持标记化和培训60多种语言它的特点是最先进的速度和神经网络模型用于标记、解析命名实体识别文本分类更重要的是,通过预先培训实现多任务学习变形金刚像伯特一样,也是一个随时准备生产的training system以及轻松的模型打包、部署和工作流管理。Spacy是在麻省理工学院许可下发布的商业开源软件

💫现在发布3.0版!
Check out the release notes here.

📖文档

文档
⭐️spaCy 101 对Spacy来说是新手吗?这是你需要知道的一切!
📚Usage Guides 如何使用Spacy及其功能
🚀New in v3.0 新功能、向后不兼容性和迁移指南
🪐Project Templates 您可以克隆、修改和运行端到端工作流
🎛API Reference Spacy的API的详细参考资料
📦Models 为Spacy下载经过培训的管道
🌌Universe 来自Spacy生态系统的插件、扩展、演示和书籍
👩‍🏫Online Course 在这个免费的交互式在线课程中学习Spacy
📺Videos 我们的YouTube频道提供视频教程、讲座等
🛠Changelog 更改和版本历史记录
💝Contribute 如何为Spacy项目和代码库做出贡献

💬在哪里提问?

Spacy项目由@honnibal@ines@svlandeg@adrianeboyd@polm请理解,我们将不能通过电子邮件提供个人支持。我们还相信,如果帮助被公开分享,那么它就更有价值,这样更多的人就可以从中受益

类型 站台
🚨错误报告 GitHub Issue Tracker
🎁功能要求和想法 GitHub Discussions
👩‍💻使用问题 GitHub Discussions·Stack Overflow
🗯一般性讨论 GitHub Discussions

功能

  • 支持60多种语言
  • 训练有素的管道对于不同的语言和任务
  • 带预训练的多任务学习变形金刚像伯特一样
  • 对预训人员的支持词向量和嵌入
  • 最先进的速度
  • 生产准备就绪培训系统
  • 语言动机标记化
  • 命名的组件实体识别词性标注、依存关系分析、句子切分文本分类、词汇化、词法分析、实体链接等
  • 通过以下功能轻松扩展自定义组件和属性
  • 支持中的自定义模型PyTorchTensorFlow和其他框架
  • 内置可视化工具对于语法和NER
  • 简单易懂模型包装、部署和工作流管理
  • 稳健、经过严格评估的准确性

📖有关更多详细信息,请参阅facts, figures and benchmarks

⏳安装空间

有关详细的安装说明,请参阅documentation

  • 操作系统:MacOS/OS X·Linux·Windows(Cygwin、MinGW、Visual Studio)
  • Python版本:Python 3.6+(仅64位)
  • 包管理器pip·conda(通过conda-forge)

管道

使用pip,spacy发行版以源码包和二进制轮子的形式可用。在安装Spacy及其依赖项之前,请确保您的pipsetuptoolswheel是最新的

pip install -U pip setuptools wheel
pip install spacy

要安装额外的数据表以进行列举化和规范化,可以运行pip install spacy[lookups]或安装spacy-lookups-data分开的。使用列举化数据创建空白模型需要使用查找包,并需要使用尚未附带预先训练的模型和第三方库支持的语言进行词汇化

使用pip时,一般建议在虚拟环境中安装包,避免修改系统状态:

python -m venv .env
source .env/bin/activate
pip install -U pip setuptools wheel
pip install spacy

孔达

您也可以从安装Spacyconda通过conda-forge频道。有关原料(包括构建配方和配置),请查看this repository

conda install -c conda-forge spacy

更新空间

Spacy的一些更新可能需要下载新的统计模型。如果您运行的是spacy v2.0或更高版本,则可以使用validate命令检查您安装的型号是否兼容,如果不兼容,则打印有关如何更新它们的详细信息:

pip install -U spacy
python -m spacy validate

如果您训练过自己的模型,请记住您的训练和运行时输入必须匹配。更新Spacy后,我们建议重新培训您的模型使用新版本

📖有关从spacy 2.x升级到spacy 3.x的详细信息,请参阅migration guide

📦下载模型包

经过培训的空间管道可以安装为Python包这意味着它们是应用程序的一个组件,就像任何其他模块一样。可以使用Spacy的安装模型download命令,或通过将pip指向路径或URL手动执行

文档
Available Pipelines 详细的管道描述、精度数字和基准
Models Documentation 详细的使用和安装说明
Training 如何根据您的数据培训您自己的管道
# Download best-matching version of specific model for your spaCy installation
python -m spacy download en_core_web_sm

# pip install .tar.gz archive or .whl from path or URL
pip install /Users/you/en_core_web_sm-3.0.0.tar.gz
pip install /Users/you/en_core_web_sm-3.0.0-py3-none-any.whl
pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.0.0/en_core_web_sm-3.0.0.tar.gz

加载和使用模型

要加载模型,请使用spacy.load()使用模型名称或模型数据目录的路径

import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("This is a sentence.")

您还可以import直接通过其全名创建模型,然后调用其load()不带参数的方法

import spacy
import en_core_web_sm

nlp = en_core_web_sm.load()
doc = nlp("This is a sentence.")

📖有关更多信息和示例,请查看models documentation

⚒从源代码编译

安装Spacy的另一种方法是克隆其GitHub repository并从源头上建造它。如果您想要更改代码库,这是常用的方法。您需要确保您有一个由Python发行版组成的开发环境,其中包括头文件、编译器pipvirtualenvgit已安装。编译器部分是最棘手的。如何做到这一点取决于您的系统

站台
Ubuntu 通过以下方式安装系统级依赖项apt-getsudo apt-get install build-essential python-dev git
Mac 安装最新版本的XCode包括所谓的“命令行工具”。MacOS和OS X附带预装的Python和Git
窗口 安装一个版本的Visual C++ Build ToolsVisual Studio Express与用于编译Python解释器的版本相匹配

有关更多详细信息和说明,请参阅上的文档compiling spaCy from source以及quickstart widget获取适合您的平台和Python版本的正确命令

git clone https://github.com/explosion/spaCy
cd spaCy

python -m venv .env
source .env/bin/activate

# make sure you are using the latest pip
python -m pip install -U pip setuptools wheel

pip install -r requirements.txt
pip install --no-build-isolation --editable .

要与附加软件一起安装,请执行以下操作:

pip install --no-build-isolation --editable .[lookups,cuda102]

🚦运行测试

Spacy伴随着一个extensive test suite为了运行测试,您通常需要克隆存储库并从源代码构建空间。这还将安装在中定义的所需开发依赖项和测试实用程序requirements.txt

或者,您可以运行pytest在已安装的spacy包裹。别忘了也要通过Spacy的安装测试实用程序requirements.txt

pip install -r requirements.txt
python -m pytest --pyargs spacy

Keras-人类的深度学习

Keras: Deep Learning for humans

此存储库托管Kera库的开发。阅读keras.io上的文档

关于Keras

KERAS是一个用Python编写的深度学习API,运行在机器学习平台TensorFlow之上。它的开发重点是实现快速实验。能够尽快从想法转化为结果是做好研究的关键。

Keras特点是:

  • Simple
  • Flexible
  • Powerful

Kera&TensorFlow 2

TensorFlow 2是一个端到端的开源机器学习平台。您可以将其视为可区分编程的基础架构层。它结合了四项关键功能:

  • Efficiently executing low-level tensor operations on CPU, GPU, or TPU.
  • Computing the gradient of arbitrary differentiable expressions.
  • Scaling computation to many devices, such as clusters of hundreds of GPUs.
  • Exporting programs (“graphs”) to external runtimes such as servers, browsers, mobile and embedded devices.

KERAS是TensorFlow 2的高级API:TensorFlow 2是一个平易近人、高效的界面,用于解决机器学习问题,重点是现代深度学习。它为开发和发布高迭代速度的机器学习解决方案提供了必要的抽象和构建块

Kera使工程师和研究人员能够充分利用TensorFlow 2的可扩展性和跨平台功能:您可以在TPU或大型GPU群集上运行Kera,还可以导出Kera模型以在浏览器或移动设备上运行


与Keras的第一次接触

KERAS的核心数据结构是层和模型。最简单的模型类型是顺序模型,即层的线性堆栈。对于更复杂的体系结构,您应该使用Kera Functional API,它允许构建任意的层图,或者通过子类化完全从头开始编写模型

以下是顺序模型:

from tensorflow.keras.models import Sequential

model = Sequential()

堆叠层与.add()一样简单:

from tensorflow.keras.layers import Dense

model.add(Dense(units=64, activation='relu'))
model.add(Dense(units=10, activation='softmax'))

一旦您的模型看起来不错,就可以使用.Compile()配置其学习过程:

model.compile(loss='categorical_crossentropy',
              optimizer='sgd',
              metrics=['accuracy'])

如果需要,您可以进一步配置优化器。KERAS的理念是让简单的事情变得简单,同时允许用户在需要的时候完全控制(最终的控制是通过子类化实现源代码的轻松可扩展性)

model.compile(loss=tf.keras.losses.categorical_crossentropy,
              optimizer=tf.keras.optimizers.SGD(
                  learning_rate=0.01, momentum=0.9, nesterov=True))

现在,您可以批量迭代您的培训数据:

# x_train and y_train are Numpy arrays.
model.fit(x_train, y_train, epochs=5, batch_size=32)

在一行中评估您的测试损失和指标:

loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)

或对新数据生成预测:

classes = model.predict(x_test, batch_size=128)

您刚才看到的是使用KERAS的最基本的方式

然而,KERAS也是一个高度灵活的框架,适合重复最先进的研究思想。KERAS遵循逐步披露复杂性的原则:它使入门变得容易,但它使处理任意高级用例成为可能,每一步只需要增量学习

就像您可以用几行代码训练和评估上面的简单神经网络一样,您可以使用KERAS快速开发新的训练过程或奇异的模型体系结构。以下是一个低级培训循环示例,将KERAS功能与TensorFlow GradientTape相结合:

import tensorflow as tf

# Prepare an optimizer.
optimizer = tf.keras.optimizers.Adam()
# Prepare a loss function.
loss_fn = tf.keras.losses.kl_divergence

# Iterate over the batches of a dataset.
for inputs, targets in dataset:
    # Open a GradientTape.
    with tf.GradientTape() as tape:
        # Forward pass.
        predictions = model(inputs)
        # Compute the loss value for this batch.
        loss_value = loss_fn(targets, predictions)

    # Get gradients of loss wrt the weights.
    gradients = tape.gradient(loss_value, model.trainable_weights)
    # Update the weights of the model.
    optimizer.apply_gradients(zip(gradients, model.trainable_weights))

有关KERAS的更多深入教程,您可以查看:


安装

Kera与TensorFlow2一起打包为tensorflow.keras。要开始使用Kera,只需安装TensorFlow 2


支持

您可以提问并加入发展讨论:

您还可以在GitHub问题中发布错误报告和功能请求(仅限)