python 中文字数统计/分词

因为想把一段文字分词,所以,需要明确一定的词语关系。

在网上随便下载了一篇中文小说。随便的txt小说,就1mb多。要数数这1mb多的中文到底有多少字,多少分词,这些分词的词性是什么样的。

 

这里是思路

1)先把小说读到内存里面去。

2)再把小说根据正则表达法开始分词,获得小说中汉字总数

3)将内存中的小说每段POST到提供分词服务的API里面去,获取分词结果

4)按照API说明,取词

 

素材:

1、linux/GNU => debian/ubuntu 12.04/Linuxmint 13 Preferred
2、python
3、中文分词API, 这里我们使用的是 http://www.vapsec.com/fenci/
4、分词属性的说明文件下载 http://vdisk.weibo.com/s/qR7KSFDa9ON 或者 http://ishare.iask.sina.com.cn/f/68191875.html

 

这里已经写好了一个测试脚本。只是单个进程访问。还没有加入并发的测试。

在以后的测试中,我会加入并发的概念的。

下面是测试脚本 test.py

复制代码
#!/usr/bin/env python
#coding: utf-8
import sys
import urllib
import urllib2
import os
import re
from datetime import datetime, timedelta


def url_post(word='My name is Jake Anderson', geshi="json"):
    url = "http://open.vapsec.com/segment/get_word"
    postDict = {
            "word":word,
            "format":geshi
    }
    
    
    postData = urllib.urlencode(postDict)
    request = urllib2.Request(url, postData)
    request.get_method = lambda : 'POST'
    #request.add_header('Authorization', basic)
    response = urllib2.urlopen(request)
    r = response.readlines()
    print r

if __name__ == "__main__":
    f = open('novel2.txt', 'r')
    # get Chinese characters quantity
    regex=re.compile(r"(?x) (?: [\w-]+ | [\x80-\xff]{3} )")
    count = 0
    for line in f:
        line = line.decode('gbk')
        line = line.encode('utf8')
        word = [w for w in regex.split(line)]
        count += len(word)
    #print count
    f = open('novel2.txt', 'r')
    start_time = datetime.now()
    for line in f:
        line = line.decode('gbk')
        line = line.encode('utf8')
        word2 = [w for w in regex.split(line)]
        print line
        url_post(line)
    end_time = datetime.now()
    tdelta = start_time - end_time
    print "It takes " + str(tdelta.total_seconds()) + " seconds to segment " + str(count) + " Chinese words!"
    print "This means it can segment " + str(count/tdelta.total_seconds()) + " Chinese characters per second!"
复制代码

novel2.txt 是下载的小说。这个小说1.2MB大小。大约有580000字吧。

小说是GBK的格式,所以下载后,要转码成 utf-8的格式。

可以看到的终端效果大致是这样的。

把小说中所有的词,进行远程分词服务。

posted @   spaceship9  阅读(5481)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 智能Agent如何改造传统工作流:从搜索到全能助手
点击右上角即可分享
微信分享提示