欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python自然语言处理---jieba中文处理

程序员文章站 2022-07-15 17:05:07
...
#关键词提取
#基于 TF-IDF 算法的关键词抽取
#sentence 为待提取的文本
#topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
#withWeight 为是否一并返回关键词权重值,默认值为 False
#allowPOS 仅包括指定词性的词,默认值为空,即不筛选

import jieba.analyse as analyse
lines = open('NBA.txt').read()
print("  ".join(analyse.extract_tags(lines, topK=20, withWeight=False, allowPOS=())))

韦少 杜兰特 全明星 全明星赛 MVP 威少 正赛 科尔 投篮 勇士 球员 斯布鲁克 更衣柜 张卫平 三连庄 NBA 西部 指导 雷霆 明星队

#词性标注
#jieba.posseg.POSTokenizer(tokenizer=None) 新建自定义分词器,#tokenizer 参数可指定内部使用的 jieba.Tokenizer 分词器。#jieba.posseg.dt 为默认词性标注分词器。
import jieba.posseg as pseg
words = pseg.cut("我爱自然语言处理")
for word, flag in words:
    print('%s %s' % (word, flag))

我 r
爱 v
自然语言 l
处理 v

#并行分词
#ieba.enable_parallel(4) # 开启并行分词模式,参数为并行进程数
#jieba.disable_parallel() # 关闭并行分词模式
import sys
import time
import jieba

jieba.enable_parallel()
content = open(u'西游记.txt',"r").read()
t1 = time.time()
words = "/ ".join(jieba.cut(content))
t2 = time.time()
tm_cost = t2-t1
print('并行分词速度为 %s bytes/second' % (len(content)/tm_cost))

jieba.disable_parallel()
content = open(u'西游记.txt',"r").read()
t1 = time.time()
words = "/ ".join(jieba.cut(content))
t2 = time.time()
tm_cost = t2-t1
print('非并行分词速度为 %s bytes/second' % (len(content)/tm_cost))

并行分词速度为 830619.50933 bytes/second
非并行分词速度为 259941.448353 bytes/second

#Tokenize:返回词语在原文的起止位置
print "这是默认模式的tokenize"
result = jieba.tokenize(u'自然语言处理非常有用')
for tk in result:
    print("%s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))

print "\n-----------我是神奇的分割线------------\n"

print "这是搜索模式的tokenize"
result = jieba.tokenize(u'自然语言处理非常有用', mode='search')
for tk in result:
    print("%s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))

这是默认模式的tokenize
自然语言 start: 0 end:4
处理 start: 4 end:6
非常 start: 6 end:8
有用 start: 8 end:10

———–我是神奇的分割线————

这是搜索模式的tokenize
自然 start: 0 end:2
语言 start: 2 end:4
自然语言 start: 0 end:4
处理 start: 4 end:6
非常 start: 6 end:8
有用 start: 8 end:10