snownlp和nltk啥关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了snownlp和nltk啥关系相关的知识,希望对你有一定的参考价值。

没什么关系吧。 SnowNLP的开发者在GitHub描述中提到是受TextBlobd的启发才写的SnowNLP,而这两个类库的最大区别就是SnowNLP具体实现的时候没有用nltk,主要针对中文文本处理。 参考技术A    Awesome XXX 系列资源整理由 vinta 发起维护内容包括:Web框架、中国络爬虫、中国络内容提取、模板引擎、数据库、数据视化、图片处理、文本处理、自语言处理、机器习、志、代码析等   伯乐线已 GitHub 发起「Python 资源全文版」整理欢迎扩散、欢迎加入   GitHub - jobbole/awesome-python-cn: Python资源全文版   环境管理   管理 Python 版本环境工具   p – 非简单交互式 python 版本管理工具   pyenv – 简单 Python 版本管理工具   Vex – 虚拟环境执行命令   virtualenv – 创建独立 Python 环境工具   virtualenvwrapper- virtualenv 组扩展   包管理   管理包依赖工具   pip – Python 包依赖关系管理工具   pip-tools – 保证 Python 包依赖关系更新组工具   conda – 跨平台Python 二进制包管理工具   Curdling – 管理 Python 包命令行工具   wheel – Python 发新标准意取代 eggs   包仓库   本 PyPI 仓库服务中国   warehouse – 代 PyPI   Warehousebandersnatch – PyPA 提供 PyPI 镜像工具   devpi – PyPI 服务打包/测试/发工具   localshop – 本 PyPI 服务(自定义包并且自 PyPI 镜像)   发   打包执行文件便发   PyInstaller – Python 程序转换独立执行文件(跨平台)   dh-virtualenv – 构建并 virtualenv 虚拟环境作 Debian 包发布   Nuitka – 脚本、模块、包编译执行文件或扩展模块   py2app – Python 脚本变独立软件包(Mac OS X)   py2exe – Python 脚本变独立软件包(Windows)   pynsist – 用创建 Windows 安装程序工具安装程序打包 Python本身   构建工具   源码编译软件   buildout – 构建系统组件创建组装部署应用   BitBake – 针嵌入式 Linux 类似 make 构建工具   fabricate – 任何语言自找依赖关系构建工具   PlatformIO – 平台命令行构建工具   PyBuilder – 纯 Python 实现持续化构建工具   SCons – 软件构建工具   交互式解析器   交互式 Python 解析器   IPython – 功能丰富工具非效使用交互式 Python   bpython- 界面丰富 Python 解析器   ptpython – 高级交互式Python解析器 构建于python-prompt-toolkit   文件   文件管理 MIME(用途中国际邮件扩充协议)类型检测   imghdr – (Python 标准库)检测图片类型   mimetypes – (Python 标准库)文件名映射 MIME 类型   path.py – os.path 进行封装模块   pathlib – (Python3.4+ 标准库)跨平台、面向象路径操作库   python-magic- 文件类型检测第三库 libmagic Python 接口   Unipath- 用面向象式操作文件目录   watchdog – 管理文件系统事件 API shell 工具   期间   操作期间类库   arrow- 更 Python 期间操作类库   Chronyk – Python 3 类库用于解析手写格式间期   dateutil – Python datetime 模块扩展   delorean- 解决 Python 关期处理棘手问题库   moment – 用处理间期Python库灵自于Moment.js   PyTime – 简单易用Python模块用于通字符串操作期/间   pytz – 现代及历史版本世界区定义区数据库引入Python   when.py – 提供用户友函数帮助用户进行用期间操作   文本处理   用于解析操作文本库   通用   chardet – 字符编码检测器兼容 Python2 Python3   difflib – (Python 标准库)帮助我进行差异化比较   ftfy – 让Unicode文本更完整更连贯   fuzzywuzzy – 模糊字符串匹配   Levenshtein – 快速计算编辑距离及字符串相似度   pangu.py – 韩语字符数字字母间添加空格   pyfiglet -figlet Python实现   shortuuid – 器库用简洁明白URL 安全 UUID   unidecode – Unicode 文本 ASCII 转换形式   uniout – 打印读字符转义字符串   xpinyin – 用于汉字转换拼音库   Slug化   awesome-slugify – Python slug 化库保持 Unicode   python-slugify – Python slug 化库 unicode 转化 ASCII   unicode-slugify – slug 工具 unicode slugs ,需要依赖 Django   解析器   phonenumbers – 解析格式化储存验证电号码   PLY – lex yacc 解析工具 Python 实现   Pygments – 通用语高亮工具   pyparsing – 通用解析器框架   python-nameparser – 名解几独立部   python-user-agents – 浏览器 user agent 解析器   sqlparse – 验证 SQL 解析器   特殊文本格式处理   些用解析操作特殊文本格式库   通用   tablib – 用处理表格数据模块   Office   Marmir – 输入Python 数据结构转换电表单   openpyxl – 用读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件库   python-docx – 读取查询及修改 Microsoft Word 2007/2008 docx 文件   unoconv – LibreOffice/OpenOffice 支持任意文件格式间进行转换   XlsxWriter – 用于创建 Excel .xlsx 文件 Python 模块   xlwings – 使 Excel 便调用 Python 库(反亦)基于 BSD 协议   xlwt / xlrd – 读写 Excel 文件数据格式信息   relatorio – 模板化OpenDocument 文件   PDF   PDFMiner – 用于PDF文档抽取信息工具   PyPDF2 – 割合并转换 PDF 页面库   ReportLab – 快速创建富文本 PDF 文档   Markdown   Mistune – 快速并且功能齐全纯 Python 实现 Markdown 解析器   Python-Markdown – John Gruber’s Markdown Python 版实现   YAML   PyYAML – Python 版本 YAML 解析器   CSV   csvkit – 用于转换操作 CSV 工具   Archive   unp – 用便解包归档文件命令行工具   自语言处理   用处理类语言库   NLTK – 先进平台用构建处理类语言数据 Python 程序   jieba – 文词工具   langid.py – 独立语言识别系统   Pattern – Python 中国络信息挖掘模块   SnowNLP – 用处理文文本库   TextBlob – 进行普通自语言处理任务提供致 API   TextGrocery – 简单高效短文本类工具基于 LibLinear Jieba   文档   用项目文档库   Sphinx – Python 文档器   awesome-sphinxdoc   MkDocs – Markdown 友文档器   pdoc – 替换Epydoc 库自 Python 库 API 文档   Pycco – 文编程(literate-programming)风格文档器   配置   用保存解析配置库   config – logging 模块作者写级配置模块   ConfigObj – INI 文件解析器带验证功能   ConfigParser – (Python 标准库) INI 文件解析器   profig – 通种格式进行配置具数值转换功能   python-decouple – 设置代码完全隔离   命令行工具   用于创建命令行程序库   命令行程序发   cement – Python 命令行程序框架   click – 通组合式创建精美命令行界面包   cliff – 用于创建命令行程序框架创建具层命令命令行程序   clint – Python 命令行程序工具   colorama – 跨平台彩色终端文本   docopt – Python 风格命令行参数解析器   Gooey – 条命令命令行程序变 GUI 程序   python-prompt-toolkit – 用于构建强交互式命令行程序库   产力工具   aws-cli – Amazon Web Services 通用命令行界面   bashplotlib – 终端进行基本绘图   caniusepython3 – 判断哪项目妨碍移植 Python 3   cookiecutter – cookiecutters(项目模板)创建项目命令行工具  

mteval-v13a.pl 和 NLTK BLEU 有啥区别?

【中文标题】mteval-v13a.pl 和 NLTK BLEU 有啥区别?【英文标题】:What is the difference between mteval-v13a.pl and NLTK BLEU?mteval-v13a.pl 和 NLTK BLEU 有什么区别? 【发布时间】:2018-02-15 11:55:35 【问题描述】:

在 Python NLTK 中有一个 BLEU score 的实现, nltk.translate.bleu_score.corpus_bleu

但我不确定它是否与mtevalv13a.pl script相同。

它们有什么区别?

【问题讨论】:

你为什么不比较它们呢?如果您对两种语言都不够了解,至少编辑您的问题并提供两种实现的链接。请参阅网站的帮助部分,了解如何编写能获得答案的好问题。 【参考方案1】:

TL;DR

在评估机器翻译系统时使用https://github.com/mjpost/sacrebleu。

简而言之

不,NLTK 中的 BLEU 与 mteval-13a.perl 并不完全相同。

但它可以非常接近,请参阅https://github.com/nltk/nltk/issues/1330#issuecomment-256237324

nltk.translate.corpus_bleu 对应于 mteval-13a.pl 最高 ngram 的 4 阶,但存在一些浮点差异

对比详情及使用的数据集可从https://github.com/nltk/nltk_data/blob/gh-pages/packages/models/wmt15_eval.zip下载或:

import nltk
nltk.download('wmt15_eval')

主要区别:


长期

mteval-13a.plnltk.translate.corpus_bleu 之间有几个区别:

第一个区别是 mteval-13a.pl 带有自己的 NIST 标记器,而 BLEU 的 NLTK 版本是度量标准的实现,假设输入是预先标记的。

顺便说一句,这个 ongoing PR 将弥合 NLTK 和 NIST 标记器之间的差距

另一个主要区别是mteval-13a.pl 期望输入为.sgm 格式,而 NLTK BLEU 接受 python 字符串列表,请参阅README.txt in the zipball here for more information of how to convert textfile to SGM。

mteval-13a.pl 期望 ngram 顺序至少为 1-4。如果句子/语料库的最小 ngram 顺序小于 4,它将返回 0 概率,即 math.log(float('-inf'))。为了模拟这种行为,NLTK 有一个 _emulate_multibleu 标志:

见https://github.com/nltk/nltk/blob/develop/nltk/translate/bleu_score.py#L477

mteval-13a.pl 能够生成 NIST 分数,而 NLTK 没有 NIST 分数实施(至少目前还没有)

NLTK 中的 NIST 分数为 upcoming in this PR

除了差异之外,NLTK BLEU 分数还包含更多功能:

处理原始 BLEU (Papineni, ‎2002) 忽略的边缘案例

见https://github.com/nltk/nltk/pull/1383

同样为了处理 Ngram 的最大阶数

见https://github.com/nltk/nltk/blob/develop/nltk/translate/bleu_score.py#L175

而NIST has a smoothing method 用于几何序列平滑,NLTK has an equivalent object with the same smoothing method 以及更多平滑方法来处理来自Chen and Collin, 2014 的句子级BLEU

最后,为了验证 NLTK 版本的 BLEU 中添加的功能,添加了回归测试来说明它们,请参阅https://github.com/nltk/nltk/blob/develop/nltk/test/unit/translate/test_bleu.py

【讨论】:

现在它是官方的,NLTK 中有 NIST 支持 =)

以上是关于snownlp和nltk啥关系的主要内容,如果未能解决你的问题,请参考以下文章

Python文本分析(NLTK,jieba,snownlp)

Python分词情感分析工具——SnowNLP

python snownlp情感分析简易demo

NLTK 关系提取不返回任何内容

SnowNLP:?中文分词?词性标准?提取文本摘要,?提取文本关键词,?转换成拼音?繁体转简体的 处理中文文本的Python3 类库

使用NLTK和MaltParser的依赖性解析器