NLP常见Python包简介


NLP常见Python包简介

Python依然是做NLP研究的主力,本文我们主要介绍NLP常用的Python包。

pypinyin

pypinyin是将汉字转为拼音的常用包,可以用于汉字注音、排序、检索等,有时候需要把汉字先变为拼音再做处理。主要特点如下:

  • 根据词组智能匹配最正确的拼音;
  • 支持多音字;
  • 简单的繁体支持,注音支持,威妥玛拼音支持;
  • 支持多种不同拼音/注音风格。

使用pip安装了pypinyin之后,以下代码很好地说明了pypinyin的基本使用方法:

from pypinyin import pinyin, lazy_pinyin, Style
pinyin('中心')  # or pinyin(['中心']),参数值为列表时表示输入的是已分词后的数据
pinyin('中心', heteronym=True)  # 启用多音字模式
pinyin('中心', style=Style.FIRST_LETTER)  # 设置拼音风格
pinyin('中心', style=Style.TONE2, heteronym=True)
pinyin('中心', style=Style.TONE3, heteronym=True)
pinyin('中心', style=Style.BOPOMOFO)  # 注音风格
lazy_pinyin('威妥玛拼音', style=Style.WADEGILES)
lazy_pinyin('中心')  # 不考虑多音字的情况
lazy_pinyin('战略', v_to_u=True)  # 不使用 v 表示 ü
# 使用 5 标识轻声
lazy_pinyin('衣裳', style=Style.TONE3, neutral_tone_with_five=True)
# 变调  nǐ hǎo -> ní hǎo
lazy_pinyin('你好', style=Style.TONE2, tone_sandhi=True)

输出声母:

pinyin('下雨天', style=Style.INITIALS, strict=False)

NLTK

NLTK中文文档)是一个巨大的工具包,是最知名的NLP处理工具。从将段落拆分为句子,拆分词语,识别这些词语的词性,高亮主题,甚至帮助我们解文本内容。另外这篇文章介绍的也比较好。

NLTK可以但不限于做以下事情:

  • 语料库:
    • 获取和处理语料库,NLTK中包含古腾堡语料库、网络聊天语料库等几个语料库;
  • 预料预处理:
    • 去除停止词,即筛去不属于自然语言的词汇或者符号;
    • 分词,即把句子分解为以单词为单位的结构;
    • 词性标注,是在给定句子中判定每个词的语法范畴,确定其词性并加以标注的过程;
    • 词干提取,是英文语料预处理的一个步骤(中文并不需要),即抽取词的词干或词根形式;
    • 词性还原,基于字典的映射来抽取词干,nltk中要求手动注明词性,否则可能会有问题;
    • 分块和添加缝隙,即把词汇分成有意义的块;
    • 命名实体识别,即识别出来White House这样的固定搭配实体,而不将其分开;
  • 分类任务:
    • 朴素贝叶斯分类器,最大熵分类器,决策树,组合算法(多个分类器投票);

jieba

jieba是中文的分词工具,主要功能为:

  • 分词;
  • 自定义词典;
  • 关键词提取;
  • 词性标注;
  • 并行分词;
  • Tokenize:返回词语在原文的起止位置;
  • ChineseAnalyzer for Whoosh 搜索引擎;
  • 命令行分词。

spaCy

spaCy是一个极其优化的NLP库,可与深度学习框架(如TensorFlow或PyTorch)一起运行。该库提供了大多数标准功能(标记化,PoS标记,解析,命名实体识别……),并且构建快速。

spaCy也很好地与所有主要的深度学习框架接口,并预装了一些非常好的和有用的语言模型。

scikit-learn

scikit-learn是一个很强大的机器学习库,同时也提供了处理NLP的一些工具和算法,如BOW和一系列其他机器学习模型。

一个比较大的优点是文档齐全。

Pologlot

具有类似的NLP功能,此外它提供了一些非常有趣的功能,例如语言检测和音译等,主要用于做多语言支持。


评论
  目录