zoukankan      html  css  js  c++  java
  • jieba分词处理

      分词是一种数学上的应用,他可以直接根据词语之间的数学关系进行文字或者单词的抽象,比如,讲一句话“我来自地球上中国”进行单词分割,我们可能会得到如下的内容:“我”、“来自”、“地球上”、“中国”,这些就相当于是分词的概念,在我们搜索引擎开发的过程中,是必须要要使用到分词的概念的。


     jieba简介

      jieba是一个在中文自然语言处理过程中使用最多的工具包之一,目前能够实现包括分词、词性标注以及命名实体识别等多种功能,一般的,jieba为我们提供了以下三种分词模式:

      · 精确模式:将句子进行最精确的切分,分词速度相对较低,但是分词准确。

      · 全模式:基于此会列表,能够将所有的可以分词的词语都扫描出来,分词速度非常快,凡是不能解决歧义性。

      · 搜索引擎模式:在精确模式的基础上,对长词进行在切分,适合在搜索引擎中进行监理索引进行的分词。

      常用的方法有:

       · `jieba.cut` 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型

      ·  `jieba.cut_for_search` 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细

      ·  待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8

      ·  `jieba.cut` 以及 `jieba.cut_for_search` 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用 `jieba.lcut` 以及 `jieba.lcut_for_search` 直接返回 list

      ·  `jieba.Tokenizer(dictionary=DEFAULT_DICT)` 新建自定义分词器,可用于同时使用不同词典。`jieba.dt` 为默认分词器,所有全局分词相关函数都是该分词器的映射。

     1 '''
     2 @Description: jieba分词练习
     3 @Version: 1.0
     4 @Autor: Montoin Yan
     5 @Date: 2020-02-09 20:46:28
     6 @LastEditors  : Montoin Yan
     7 @LastEditTime : 2020-02-09 20:55:40
     8 '''
     9 # encoding=utf-8
    10 import jieba
    11 
    12 result_list = jieba.cut("我是中国青年团团员", cut_all=True)
    13 print("全模式: " + ",".join(result_list)) # 全模式
    14 
    15 result_list = jieba.cut("我是中国青年团团员")
    16 print("精准模式: " + ", ".join(result_list)) # 精确模式
    17 
    18 result_list = jieba.cut_for_search("我是一个学生,我热爱编程,并且我想成为一个好的IT工作者") # 搜索引擎模式
    19 print("搜索引擎模式:" + ", ".join(result_list))

      结果如下所示:


     jieba安装

      可以通过镜像网站进行安装:

      win+r打开cmd,使用  pip install jieba -i https://pypi.douban.com/simple/  进行安装,如果显示连接超时,则在编译器终端进行下载即可。


     jieba实例

      下面这个例子进行了jeiba分词完整的分词操作

     1 '''
     2 @Description: jieba分词处理
     3 @Version: 1.0
     4 @Autor: Montoin Yan
     5 @Date: 2020-02-09 19:26:13
     6 @LastEditors  : Montoin Yan
     7 @LastEditTime : 2020-02-09 20:21:44
     8 '''
     9 
    10 import os,jieba 
    11 
    12 PATH = "jieba_demo/文章.txt" #定义读取路径
    13 
    14 def main():
    15     results = {} #保存最终的读取结果,以字典形式进行存储
    16     with open(file=PATH,mode="r",encoding="UTF-8") as file:
    17         data = file.readline() #按照单行进行文件读取
    18         # print(data)
    19         while data: #如果读到数据
    20             words = jieba.cut(data,cut_all=False) #对数据进行分词,不采用全模式,进行精确分词
    21             for word in words:
    22                 if len(word) == 1:
    23                     continue
    24                 else:
    25                     results[word] = results.get(word,0) + 1 #将多有读取到的词放到字典中,如果没有,默认值为0
    26             data = file.readline() #继续读取
    27     items = list(results.items()) #取出全部的内容
    28     items.sort(key=lambda x: x[1],reverse=True) #降序排列
    29     # print(items)
    30     for i in items:
    31         print("%s:%s" % (i[0],i[1]))
    32 
    33 
    34 if __name__ == "__main__":
    35     main()

      分词结果如下:

  • 相关阅读:
    针对小程序for循环绑定数据,实现toggle切换效果(交流QQ群:604788754)
    小程序中bindtap绑定函数,函数参数event对数据的处理
    小程序中data数据的处理方法总结(小程序交流群:604788754)
    Power OFF and ON USB device in linux (ubuntu)
    linux控制USB的绑定/解绑
    卡内操作系统COS
    Linux内核:sk_buff解析
    skb_store_bits() 和 skb_copy_bits()
    skb详细解析【转】
    TCP:WireShark分析,序列号Seq和确认号Ack
  • 原文地址:https://www.cnblogs.com/yandashan666/p/12288718.html
Copyright © 2011-2022 走看看