中文分词及词性标注工具使用

Posted IT2Driver

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中文分词及词性标注工具使用相关的知识,希望对你有一定的参考价值。


结巴分词效果最好

结巴分词:采菊/nr 东篱/ns 下/f ,/x 悠然/z 见/v 南山/ns !/x

SnowNLP:采菊/t 东/f 篱/vd 下/f ,/w 悠然见/nr 南山/nr !/w

pkused:采菊东篱/v 下/f ,/w 悠然/ad 见/v 南山/ns !/w

THULAC:采菊/v 东篱/n 下/f ,/w 悠然见南山/id !/w

结巴分词

In [1]:

import logging
import chardet
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)

In [ ]:

!pip3 install jieba -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

In [2]:

aistr = '采菊东篱下,悠然见南山!';

In [3]:

import jieba.posseg                                                            

posseg_list = jieba.posseg.cut(aistr)

print(' '.join('%s/%s' % (word, tag) for (word, tag) in posseg_list))
Building prefix dict from the default dictionary ...
2019-07-10 07:22:32,442 : DEBUG : Building prefix dict from the default dictionary ...
Loading model from cache /tmp/jieba.cache
2019-07-10 07:22:32,447 : DEBUG : Loading model from cache /tmp/jieba.cache
Loading model cost 1.099 seconds.
2019-07-10 07:22:33,546 : DEBUG : Loading model cost 1.099 seconds.
Prefix dict has been built succesfully.
2019-07-10 07:22:33,548 : DEBUG : Prefix dict has been built succesfully.
采菊/nr 东篱/ns 下/f ,/x 悠然/z 见/v 南山/ns !/x

SnowNLP

In [ ]:

!pip install snownlp -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

特点:

  • 中文分词(Character-Based Generative Model)

  • 词性标注(TnT 3-gram 隐马)

  • 情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的一些可能效果不是很好,待解决)

  • 文本分类(Naive Bayes)

  • 转换成拼音(Trie树实现的最大匹配)

  • 繁体转简体(Trie树实现的最大匹配)

  • 提取文本关键词(TextRank算法)

  • 提取文本摘要(TextRank算法)

  • tf,idf

  • Tokenization(分割成句子

  • 文本相似(BM25)

  • 支持python3

In [4]:

from snownlp import SnowNLP                                                   

snow_result = SnowNLP(aistr)

print(' '.join('%s/%s' % (word, tag) for (word, tag) in snow_result.tags))
采菊/t 东/f 篱/vd 下/f ,/w 悠然见/nr 南山/nr !/w

pkused

pkuseg具有如下几个特点:

  • 多领域分词。不同于以往的通用中文分词工具,此工具包同时致力于为不同领域的数据提供个性化的预训练模型。根据待分词文本的领域特点,用户可以自由地选择不同的模型。我们目前支持了新闻领域,网络领域,医药领域,旅游领域,以及混合领域的分词预训练模型。在使用中,如果用户明确待分词的领域,可加载对应的模型进行分词。如果用户无法确定具体领域,推荐使用在混合领域上训练的通用模型。各领域分词样例可参考 example.txt。

  • 更高的分词准确率。相比于其他的分词工具包,当使用相同的训练数据和测试数据,pkuseg可以取得更高的分词准确率。

  • 支持用户自训练模型。支持用户使用全新的标注数据进行训练。

  • 支持词性标注。

  • 仅支持Python3, 测试词性标注的时候会自动额外下载一个包:

In [ ]:

!pip install pkuseg -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

In [5]:

import pkuseg                                                                   

pku_seg = pkuseg.pkuseg(postag=True)

pku_results = pku_seg.cut(aistr)

print(' '.join('%s/%s' % (word, tag) for (word, tag) in pku_results))
采菊东篱/v 下/f ,/w 悠然/ad 见/v 南山/ns !/w

THULAC

THULAC(THU Lexical Analyzer for Chinese)由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包,具有中文分词和词性标注功能。THULAC具有如下几个特点:

  • 能力强。利用我们集成的目前世界上规模最大的人工分词和词性标注中文语料库(约含5800万字)训练而成,模型标注能力强大。

  • 准确率高。该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%,与该数据集上最好方法效果相当。

  • 速度较快。同时进行分词和词性标注速度为300KB/s,每秒可处理约15万字。只进行分词速度可达到1.3MB/s。

In [ ]:

!pip3  install thulac -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

In [1]:

import thulac                                                                         
thup = thulac.thulac()

thulac_result = thup.cut('采菊东篱下,悠然见南山!')

print(' '.join('%s/%s' % (word, tag) for (word, tag) in thulac_result))
Model loaded succeed
采菊/v 东篱/n 下/f ,/w 悠然见南山/id !/w

pyhanlp

pyhanlp: Python interfaces for HanLP

  • 自然语言处理工具包HanLP的Python接口, 支持自动下载与升级HanLP,兼容py2、py3。

注意pyhanlp安装之后使用的时候还会自动下载相关的数据文件,zip压缩文件600多M,速度有点慢,时间有点长

In [ ]:

!pip3  install pyhanlp -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

In [ ]:

from pyhanlp import HanLP                                                            

hanlp_result = HanLP.segment('采菊东篱下,悠然见南山!')

print(' '.join('%s/%s' % (term.word, term.nature) for term in hanlp_result))

FoolNLTK

FoolNLTK:https://github.com/rockyzhengwu/FoolNLTK 特点

  • 可能不是最快的开源中文分词,但很可能是最准的开源中文分词

  • 基于BiLSTM模型训练而成

  • 包含分词,词性标注,实体识别, 都有比较高的准确率

  • 用户自定义词典

  • 可训练自己的模型

  • 批量处理

  • 仅在linux Python3 环境测试通过

  • 安装,依赖TensorFlow, 会自动安装:

In [ ]:

!pip3  install foolnltk -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

In [ ]:

import fool                                                              

fool_result = fool.pos_cut('采菊东篱下,悠然见南山!')

print(' '.join('%s/%s' % (word, tag) for (word, tag) in fool_result[0]))


以上是关于中文分词及词性标注工具使用的主要内容,如果未能解决你的问题,请参考以下文章

一套准确率高且效率高的分词词性标注工具-thulac

Python之酒店评论分词词性标注TF-IDF词频统计词云

词法分析:分词;词性标注;实体识别

ansj --词性说明

jieba分词的词性表

NLP文本处理的基本方法(超详解)