Skip to content
小明NLP:提供中文分词, 词性标注, 拼写检查,文本转拼音,情感分析,文本摘要,偏旁部首
Python
Branch: master
Clone or download
SeanLee97 Merge pull request #16 from SeanLee97/develop
[0.2.0] 1. 代码规范化 2.并行分词/词性标注 3.bumpversion版本管理
Latest commit 25e7c1b Apr 26, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples update to v0.1.8 Sep 13, 2018
tests 1. pylint 代码规范化 2. 添加测试 Apr 26, 2019
xmnlp 1. pylint 代码规范化 2. 添加测试 Apr 26, 2019
.bumpversion.cfg 1. pylint 代码规范化 2. 添加测试 Apr 26, 2019
.gitignore add project Feb 15, 2018
LICENSE add project Feb 15, 2018
MANIFEST.in add project Feb 15, 2018
README.md 1. pylint 代码规范化 2. 添加测试 Apr 26, 2019
requirements.txt
setup.py 1. pylint 代码规范化 2. 添加测试 Apr 26, 2019

README.md

/ xmnlp /

小明NLP — 轻量级中文自然语言处理工具

A Lightweight Chinese Natural Language Processing Toolkit

v 0.2.0

pypi python version support os GitHub license

功能概览

  • 中文分词 & 词性标注
    • 支持繁體
    • 支持自定义词典
  • 中文拼写检查
  • 文本摘要 & 关键词提取
  • 情感分析
  • 文本转拼音
  • 获取汉字偏旁部首

安装使用

安装方式

方式一

pip install xmnlp

方式二

git clone https://github.com/SeanLee97/xmnlp.git
cd /path/to/xmnlp
pip install -r requirements.txt
python setup.py install

依赖库

numpy

使用文档

中文分词

import xmnlp
xmnlp.set_userdict('/path/to/userdict.txt')

doc = """自然语言处理: 是人工智能和语言学领域的分支学科。
在这此领域中探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。 
自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。"""

print(xmnlp.seg(doc, hmm=True))

结果输出

['自然语言', '处理', ':', '是', '人工智能', '和', '语言学', '领域', '的', '分支', '学科', '。', '在', '这此', '领域', '中', '探讨', '如何', '处理', '及', '运用', '自然语言', ';', '自然语言', '认知', '则', '是', '指让', '电脑', '“', '懂', '”', '人类', '的', '语言', '。', '自然语言', '生成', '系统', '把', '计算机', '数据', '转化', '为', '自然语言', '。', '自然语言', '理解', '系统', '把', '自然语言', '转化', '为', '计算机程序', '更', '易于', '处理', '的', '形式', '。']

多进程分词

xmnlp.seg_parallel(texts[, hmm=False, n_jobs=-1])

- texts: list of str
- hmm: 是否使用 hmm 算法识别新词

example

import xmnlp

xmnlp.seg_parallel(['结婚的和尚未结婚的都成了和尚',
                    '工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作',
                    '他正在量和服尺寸'])

[['结婚', '的', '和', '尚未', '结婚', '的', '都', '成', '了', '和尚'], ['工信处', '女干事', '每月', '经过', '下属', '科室', '都', '要', '亲口', '交代', '24', '口', '交换机', '等', '技术性', '器件', '的', '安装', '工作'], ['他', '正在', '量', '和服', '尺寸']]

词性标注

import xmnlp
xm.set_userdict('/path/to/userdict.txt')

doc = """自然语言处理: 是人工智能和语言学领域的分支学科。
在这此领域中探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。 
自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。"""

print(list(xm.tag(doc)))

结果输出

[('自然语言', 'l'), ('处理', 'v'), (':', 'un'), ('是', 'v'), ('人工智能', 'n'), ('和', 'c'), ('语言学', 'n'), ('领域', 'n'), ('的', 'uj'), ('分支', 'n'), ('学科', 'n'), ('。', 'un'), ('在', 'p'), ('这此', 'un'), ('领域', 'n'), ('中', 'f'), ('探讨', 'v'), ('如何', 'r'), ('处理', 'v'), ('及', 'c'), ('运用', 'vn'), ('自然语言', 'l'), (';', 'un'), ('自然语言', 'l'), ('认知', 'v'), ('则', 'd'), ('是', 'v'), ('指让', 'un'), ('电脑', 'n'), ('“', 'un'), ('懂', 'v'), ('”', 'un'), ('人类', 'n'), ('的', 'uj'), ('语言', 'n'), ('。', 'un'), ('自然语言', 'l'), ('生成', 'v'), ('系统', 'n'), ('把', 'p'), ('计算机', 'n'), ('数据', 'n'), ('转化', 'v'), ('为', 'p'), ('自然语言', 'l'), ('。', 'un'), ('自然语言', 'l'), ('理解', 'v'), ('系统', 'n'), ('把', 'p'), ('自然语言', 'l'), ('转化', 'v'), ('为', 'p'), ('计算机程序', 'n'), ('更', 'd'), ('易于', 'v'), ('处理', 'v'), ('的', 'uj'), ('形式', 'n'), ('。', 'un')]

多进程词性标注

xmnlp.tag_parallel(texts[, hmm=False, n_jobs=-1])

- texts: list of str
- hmm: 是否使用 hmm 算法识别新词

example

import xmnlp

xmnlp.tag_parallel(['结婚的和尚未结婚的都成了和尚',
                    '工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作',
                    '他正在量和服尺寸'])

[[('结婚', 'v'), ('的', 'uj'), ('和', 'c'), ('尚未', 'd'), ('结婚', 'v'), ('的', 'uj'), ('都', 'd'), ('成', 'n'), ('了', 'ul'), ('和尚', 'nr')], [('工信处', 'n'), ('女干事', 'n'), ('每月', 'r'), ('经过', 'p'), ('下属', 'v'), ('科室', 'n'), ('都', 'd'), ('要', 'v'), ('亲口', 'n'), ('交代', 'n'), ('24', 'm'), ('口', 'q'), ('交换机', 'n'), ('等', 'u'), ('技术性', 'n'), ('器件', 'n'), ('的', 'uj'), ('安装', 'v'), ('工作', 'vn')], [('他', 'r'), ('正在', 't'), ('量', 'n'), ('和服', 'nz'), ('尺寸', 'n')]]

拼写检查

此功能基于symspell实现,建议用来检查词级别的错误,对于句子尚未能很好的解决拼写错误问题,第一次加载字典的速度较慢(由词典大小决定)

词级别

import xmnlp
xmnlp.set_userdict('./userdict.txt')

doc = """中国人敏共和国"""

print('Error: \n', doc)
ret = xmnlp.checker(doc, level=0) # level = 0
print('Correct: \n', ret)

结果输出

中华人民共和国

句子级别

level=1, 不建议使用,句级别仅返回所有可能的拼写检查结果

import xmnlp
xmnlp.set_userdict('./userdict.txt')

doc = """今天天汽不错哦"""

print('Error: \n', doc)
ret = xmnlp.checker(doc, level=1) # level = 1
print('Correct: \n', ret)

结果输出

['今天天气', '不错']

文本摘要

基于textrank算法实现

import xmnlp
xm.set_stopword('/path/to/stopword.txt') # 添加用户自定义停用词

doc = """自然语言处理: 是人工智能和语言学领域的分支学科。
在这此领域中探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。 
自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。"""

# keyword
print(xm.keyword(doc))
# keyphrase
print(xm.keyphrase(doc))

结果输出

keyphrase: 

自然语言理解系统自然语言转化计算机程序易于形式
自然语言生成系统计算机数据转化自然语言
自然语言认知指让电脑懂人类语言
这此领域中探讨自然语言
自然语言人工智能语言学领域分支学科

keyword: 
[('自然语言', 2.5960552414414391), ('系统', 1.3424759005594451), ('转化', 1.2404934273839832), ('领域', 1.13500044179745), ('语言', 1.0865431295952139)]

情感分析

基于朴素贝叶斯算法实现,基于酒店评价数据训练

import xmnlp
xmnlp.set_stopword('/path/to/stopword.txt') # 用户自定义停用词

doc = """这件衣服的质量也太差了吧!"""
doc2 = """这酒店真心不错"""
print('Text: ', doc)
print('Score: ', xmnlp.sentiment(doc))
print('Text: ', doc2)
print('Score: ', xmnlp.sentiment(doc2))

结果输出

Text:  这件衣服的质量也太差了吧!
Score:  0.09661951767426591
Text:  这酒店真心不错
Score:  0.7947237609561072

汉字部首

部首是一种文本的特征,在深度学习中我们有时可以加入部首特征来训练网络

import xmnlp
print(xmnlp.radical('自然语言处理'))

结果输出

['自', '灬', '讠', '言', '夂', '王']

自定义模型

支持用户使用自己的语料训练模型,训练例子在examples 的trainer_*中

训练语料

语料百度网盘

更多

本项目采用所有模型只有在第一次使用时才会开始加载,所以第一次加载速度会有些慢

更多例子请查看examples

Reference:

本项目采用的数据主要有:

  • 人民日报语料
  • 结巴分词分词数据
  • snownlp情感分析语料

本项目受到以下项目的启发

License

MIT

You can’t perform that action at this time.