构建结构化NLP服务(loading...)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了构建结构化NLP服务(loading...),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3129字,纯文字阅读大概需要5分钟。
内容图文
![构建结构化NLP服务(loading...)](/upload/InfoBanner/zyjiaocheng/984/6ea21ede5c114fc585e91d9955311d80.jpg)
记录结构化NLP服务之路,本文长期更新
管道(pipeline)
- 从不同数据源(source)获取数据
- 清洗数据
- 构建数据集(dataset)
- 数据集管理
- 拆分训练集/验证集/测试集
- 选择机器学习框架/算法(framework/algorithm)
- 模型训练(train)/预训练/微调训练
- 构建分类器(classifier)
- 基于分类器提供 Rest 服务(server)
- 输出结构化数据
- 结构化数据提供给目标(dest)应用服务
- 服务于应用层(application)
Python 环境
使用Python,一开始都会浪费很多时间在环境上,例如:
- python 的不同版本
- pip 的不同版本,每个python版本都对应一个pip,装python版本还需要装对应的pip
- python 某个库在某个版本下可以装,但是它依赖的库在这个版本下的版本不能跑
手工方式(manual)
- 安装目标 python 版本,例如 3.6的最高版本: python3.6.11
wget https://www.python.org/ftp/python/3.6.11/Python-3.6.11.tgz
tar xzf Python-3.6.11.tgz
cd Python-3.6.11
./configure --enable-optimizations
make altinstall
- 安装对应 pip版本
- 下载 get-pip 脚本
- 使用对应版本的 python 安装对应版本的 pip
python3.6 get-pip.py
- 手工更改
/usr/local/bin
下 python 和 pip 的软连接映射- pip 软链接
ln -s -f /usr/local/bin/pip3 /usr/bin/pip
ln -s -f /usr/local/bin/pip3 /usr/bin/pip3
ln -s -f /usr/local/bin/pip3 /usr/bin/pip3.6
- python 软链接
ln -s -f /usr/local/bin/python3.6 /usr/bin/python
ln -s -f /usr/local/bin/python3.6 /usr/bin/python3
ln -s -f /usr/local/bin/python3.6 /usr/bin/python3.6
- pip 软链接
使用 pyenv 管理
- 使用 pyenv 管理python环境
- 查看管理的 python 版本:
pyenv versions
,带*
号带是当前使用的版本 - 验证当前python版本:
python --version
- 查看有哪些可用版本的python:
pyenv install --list
- 安装指定版本python:
pyenv install 3.6.11
- 切换版本:
pyenv global 3.6.11
- 如果是 Mac 系统,zsh 和 fish 两个shell 环境还需要为两个 shell 添加一些配置,参考 pyenv git 里的说明,请搜关键词
Zsh
或fish
使用 conda 管理
- 使用 conda 管理python环境
- 安装 minicoda
- 创建并安装指定版本的 python 环境:
conda create -n py3.6 python=3.6.11
- 切换环境:
source activate py3.6
- 查看当前生效的python和pip版本:
python --version
,pip --version
机器学习库
万变不离其宗,程序=数据结构+算法
,每一种特定的库处理的是特定数据结构相关的算法,理解这点,保持目标问题导向的库选择和使用。
- pandas,关于DataFrame的数据结构
- numpy,处理多维数组
- jieba,分词
- sklearn,常见NLP任务
- tensorflow,Google深度学习库
- pytorch,更新和维护比tensorflow强
- spacy
- paddlepaddle 中文处理更友好
统一命令行接口
将整个管道的不同阶段操作统一到一致的命令行接口,不要让NLP任务变成一堆无序的项目和脚本,类似 git
,将管道中的多任务统一到一致的接口里。
基本操作心智模型:python main.py -p {profile} -a action_name [sub options]
- 操作说明
-p
指定配置环境,例如与携程阿波罗环境的划分:dev
开发环境配置fat
测试环境配置pre
预发布环境配置pro
线上环境配置
-a
指定action
,例如:-a build -d questions
: 构建问题数据集-a server -t answer
: 启动答案服务
如何迭代
开发/内部部署发布/测试/迭代/发布,其中内部部署发布
是首要重要的事情,遵循一些必要的原则有助于达成这点:
- 内部发布优于第1版正确性,先把流程打通并发布一个版本,快速进入测试-开发迭代优先于1版正确性,最好能达成每周发布。
- 第一性原理,NLP处理的数据是
非结构化
的,NLP的能力是通过对数据向量化,对数据进行分类和标注,提供数据背后的结构化
信息。有了结构化信息,构建这些结构化信息的关系
,进而可以对这些结构化的关系信息
进行查询或推理。围绕这点带着要解决的目标问题去寻找工具,而不是先找工具,再找问题。
(未完待续…)
内容总结
以上是互联网集市为您收集整理的构建结构化NLP服务(loading...)全部内容,希望文章能够帮你解决构建结构化NLP服务(loading...)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。