中文分词

作者: 诺馨 | 来源:发表于2017-03-22 16:40 被阅读87次

    最近接触了下数据方面的东西,先是爬了大量的数据,进而作数据分析。比如就某一字段,某个关键词在其中出现的频数做个统计。一开始,运用sql like操作符即可实现,但这种匹配查询挺耗费时间的。

    在网上搜索了下,了解到中文分词技术,其中有个叫jieba分词的。结巴分词是国内程序员用Python开发的一个中文分词模块,它的源码下载地址:https://github.com/fxsjy/jieba

    它的特点:
    • 支持三种分词模式
      • 精确模式,试图将句子最精确地切开,适合文本分析; cut_all=False
      • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义; cut_all=True
      • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
    • 支持繁体分词
    • 支持自定义词典
    • MIT授权协议
    安装jieba

    推荐使用pip安装jieba组件

    pip install jieba
    
    代码示例
    # encoding=utf-8
    import jieba
    
    sentence  = "大数据分析师,分析数据的时候。"
    # 精确模式
    words = jieba.cut(sentence, cut_all=False)  
    print ("|".join(words))
    
    #全局模式
    words = jieba.cut(sentence, cut_all=True)
    
    #搜索引擎模式
    words = jieba.cut_for_search(sentence)  
    
    输出结果
    全模式:
    大数|数据|数据分析|分析|分析师|||分析|数据|的|时候||
    精确模式:
    大|数据|分析师|,|分析|数据|的|时候|。
    搜索引擎模式:
    大|数据|分析|分析师|,|分析|数据|的|时候|。
    
    python操作mysql数据库

    MySQLdb是Python用以连接Mysql数据库的模块,首先要确定已经安装了MySQLdb 模块。在mac下安装使用pip install mysql-python。创建好数据库users、user表和自定义的词典dict.txt。

    词典格式:一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。

    # encoding=utf-8
    
    import MySQLdb
    import jieba
    
    # 打开数据库连接
    db = MySQLdb.connect('localhost',"root","123123","users")
    cursor = db.cursor()
    
    # SQL查询语句
    sql = "select uname from user"
    
    # 载入事先写好的自定义的词典
    jieba.load_userdict("dict.txt")
    
    try:
        cursor.execute(sql)   # 执行SQL语句
        results = cursor.fetchall()    # 获取所有记录
        for row in results:
            name = row[1]
            seglist = jieba.cut(name. cut_all=False)
            for seg in seglist:
                print seg
    except:
        pass
    finally:
        db.close()   # 关闭数据库连接
    

    相关文章

      网友评论

        本文标题:中文分词

        本文链接:https://www.haomeiwen.com/subject/aguonttx.html