今天发现一个不用npl实现分词的方法
jieba分词
全自动安装:
pip install jieba (window环境)
pip3 install jieba (Linux环境)
-
首先进行将语句转换为UTF-8或者GBK。
-
然后根据用户指定的模式,是否全模式,是否采用HMM隐马尔科夫,来设置cut方式。
-
然后根据正则,将输入文本分为一个个语句。
-
最后遍历语句,对每个语句单独进行分词。
def calc(self, sentence, DAG, route): N = len(sentence) route[N] = (0, 0) logtotal = log(self.total) for idx in xrange(N - 1, -1, -1): # route[idx] = (该汉字到最后一个汉字的最大路径概率, # 最大路径概率时该汉字对应的词语结束位置). # 遍历DAG中该汉字节点的结束位置,也就是DAG[idx], # 计算idx到x之间构成的词语的概率,然后乘以x到语句结束位置的最大概率, # 即可得到idx到语句结束的路径最大概率. route[idx] = max( (log(self.FREQ.get(sentence[idx:x + 1]) or 1) - log(total) + route[x + 1][0] , x) for x in DAG[idx]) # 每个词的概率 = 字典中该词的词数 / 字典总词数。
标签:语句,DAG,idx,route,概率,分词 From: https://www.cnblogs.com/wajava/p/18111116