py jieba 分词库

py jieba 分词库.
官方 git地址.
安装: pip install jieba

原理

  • 基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)
  • 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
  • 对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法

分词

支持自定义词典, 支持三种分词模式:

  • 精确模式,试图将句子最精确地切开,适合文本分析;
  • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
  • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词

关键词抽取

有 tf-idf 与 textRank 两种方法. 参考 [1].

from jieba import analyse
import jieba_word_segmentation.skateboard_lyric as skateboard_lyric

print('tf-idf method:')
tags=analyse.extract_tags(skateboard_lyric.lyric)
for tag in tags:
    print(tag,end='/')

print('\n\ntextrank method:')
tags=analyse.textrank(skateboard_lyric.lyric)
for tag in tags:
    print(tag,end='/')

"""
tf-idf method:
摩擦/滑板鞋/一步/光滑/地上/我要/魔鬼/两步/步伐/天黑/月光/时尚/美丽/华晨/不怕/庞麦郎/有时/真的/约瑟/自己/

textrank method:
时尚/时间/滑板鞋/摩擦/看到/寻找/美丽/城市/时刻/月光/完成/驱使/夜幕/力量/街道/魔鬼/步伐/喜欢/脚步/舞蹈/
"""

pos tagging

# encoding=utf-8
import jieba
import jieba.posseg as pseg

import jieba_word_segmentation.skateboard_lyric as skateboard_lyric


jieba.add_word('约瑟翰')
jieba.add_word('庞麦郎')
jieba.add_word('华晨宇')


lyric_arr=skateboard_lyric.lyric.split('\n')

for sentence in lyric_arr:
    for (word, flag) in pseg.cut(sentence):
        print(word,flag,end='/ ')
    print('')

"""
我 r/ 的 uj/ 滑板鞋 n/ 时尚 n/ 时尚 n/ 最 d/ 时尚 n/ 
回家 n/ 的 uj/ 路上 s/ 我 r/ 情不自禁 i/ 
摩擦 vn/   x/ 摩擦 vn/   x/ 摩 nz/ 
在 p/ 这 r/ 光滑 a/ 的 uj/ 地上 s/ 摩擦 vn/ 
摩擦 vn/ 
"""

参考

  1. 一篇cnblog 结巴分词5–关键词抽取

你可能感兴趣的:(NLP)