Ex_treme's blog.

jieba————做最好的Python中文分词组件

2018/03/28 Share

jieba的使用和算法详解

  • jieba分词工具的介绍
  • jieba分词工具的使用
  • TextRank算法原理
  • jieba去除停用词

结巴中文分词

  • 目标与愿望:做最好的Python中文分词组件
  • 普及读:有很多不同语言版本的jieba,R语言、GO语言、.NET版本等。

特点

  • 支持三种分词模式(精确模式,全模式[cut_all=True],搜索引擎模式[.cut_for_search]])
  • 支持繁体分词
  • 支持自定义词典

安装

1
$ pip3 install jieba

加载词典

  • 载入自定义字典
1
jieba.load_userdict('filename')
  • 动态修改字典
1
2
jieba.add_word()
jieba.del_word()

TextRank算法原理

PageRank的原理:PageRank是一种通过网页之间的超链接计算网页重要性的技术。

  • 整个互联网可以看作是一张有向图,网页是图中的结点,网页之间的连接就是图中的边。
  • 如果网页A存在到网页B的链接,那么就有一条从网页A只想网页B的有向边。

S(Vi)=(1d)+djIn(Vi)1Out(Vj)S(Vj)S(V_i)=(1-d)+d*\sum _{j\in In(V_i)}\frac{1}{|Out(V_j)|}S(V_j)

S(vi)S(v_i)是网页ii的重要性(PR值)
dd是阻尼系数,一般设置为0.85
In(Vi)In(V_i)是在指向网页ii的链接的网页集合
Out(Vj)Out(V_j)是网页jj中的链接存在链接指向的网页集合
Out(Vj)|Out(V_j)|是集合中元素的个数

TextRank原理:TextRank公式在Page1Rank公式的基础上,为图中的边引入了权值的概念。

WS(Vi)=(1d)+dVjIn(Vi)wijVkOut(Vj)wjkWS(Vj)WS(V_i)=(1-d)+d*\sum _{V_j\in In(V_i)}\frac{w_{ij}}{\sum _{V_k\in Out(V_j)}w_{jk}}WS(V_j)

wijw_{ij}就是图中结点ViV_iVjV_j的变得权值

  • 把文本切分为单词,过滤掉停用词,保留指定词性的单词,得到了单词的集合。

如:w1,w2,w3,…,wn

  • 设定窗口大小为k

[w1,w2,…,wk]、[w2,w3,…wk+1]、[w3,w4,…wk+2]都是一个窗口。

  • 每个单词作为图中的一个结点,同一个窗口中的任意两个单词对应的结点之间存在这一条边。
  • 利用投票的原理,将边堪称是单词之间的互相投票。
  • 通过矩阵迭代收敛,每个单词的得票数都会趋于稳定。
  • 一个单词的得票数越多,就认为这个单词越重要。
  • TexRank4ZH(https://github.com/letiantian/TextRank4ZH)

Tip:Chrom浏览器可以使用insight插件浏览github的profile哦。

CATALOG
  1. 1. jieba的使用和算法详解
    1. 1.1. 结巴中文分词
      1. 1.1.1. 特点
      2. 1.1.2. 安装
      3. 1.1.3. 加载词典
    2. 1.2. TextRank算法原理