JIeba文本处理 import jieba jieba.enable_paddle() strs=["我来到北京清华大学" ,"乒乓球拍卖完了" ,"中国科学技术大学" ] for str in strs: seg_list = jieba.cut(str ,use_paddle=True ) print ("Paddle Mode: " + '/' .join(list (seg_list))) seg_list = jieba.cut("我来到北京清华大学" , cut_all=True ) print ("Full Mode: " + "/ " .join(seg_list))seg_list = jieba.cut("我来到北京清华大学" , cut_all=False ) print ("Default Mode: " + "/ " .join(seg_list)) seg_list = jieba.cut("他来到了网易杭研大厦" ) print (", " .join(seg_list)) seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造" ) print (", " .join(seg_list))
输出:
''' 【全模式】: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学 【精确模式】: 我/ 来到/ 北京/ 清华大学 【新词识别】:他, 来到, 了, 网易, 杭研, 大厦 (此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了) 【搜索引擎模式】: 小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造 '''
jieba三种模式
jieba.cut()
:生成的是一个生成器,generator,也就是可以通过for循环来取里面的每一个词。
jieba.lcut()
:生成一个list
import jiebast = '注意:该代码tf计算使用的是整个语料,这里只是举个简单的例子,大家在写的时候按文档计算词频即可!我这里就不做修改了' print (jieba.lcut(st)) print (jieba.lcut(st, cut_all=True )) print (jieba.lcut_for_search(st))
案例 统计出现次数最多的
import jiebatxt = open ("三国演义.txt" , "r" , encoding='utf-8' ).read() words = jieba.lcut(txt) counts = {} for word in words: if len (word) == 1 : continue else : counts[word] = counts.get(word, 0 ) + 1 items = list (counts.items()) items.sort(key=lambda x: x[1 ], reverse=True ) for i in range (3 ): word, count = items[i] print ("{0:<5}{1:>5}" .format (word, count))
import reimport requestsclass Solution : def aliceText (self, word: str ) -> int : url = 'http://72.itmc.org.cn:80/JS001/data/user/16937/76/fj_alice_adventure.txt' response = requests.get(url) response.encoding = 'utf-8' words = response.text.lower() word = word.lower() counts = dict () for s in words.split(): if len (s) <= 3 : continue else : counts[s] = counts.get(s,0 ) + 1 items = list (counts.items()) items.sort(key=lambda x:x[1 ], reverse=True ) print (items) return counts[word] solu = Solution() solu.aliceText('Pictures' )
Jieba实现TF-IDF算法 import jieba.analysetext = '''关键词是能够表达文档中心内容的词语,常用于计算机系统标引论文内容特征、 信息检索、系统汇集以供读者检阅。关键词提取是文本挖掘领域的一个分支,是文本检索、 文档比较、摘要生成、文档分类和聚类等文本挖掘研究的基础性工作''' keywords = jieba.analyse.extract_tags(text, topK=5 , withWeight=False , allowPOS=()) print (keywords)
公式:jieba.analyse.extract_tags(text, topK=5, withWeight=False, allowPOS=())
text
:为待提取的文本
topK
:权重最大的关键字,默认值为 20
withWeight
:是否返回关键字的权重,默认为 False
allowPOS
:指定词性,默认为空,即不筛选
import jieba.analysetext = '''关键词是能够表达文档中心内容的词语,常用于计算机系统标引论文内容特征、 信息检索、系统汇集以供读者检阅。关键词提取是文本挖掘领域的一个分支,是文本检索、 文档比较、摘要生成、文档分类和聚类等文本挖掘研究的基础性工作''' keyword = jieba.analyse.textrank(text, topK=5 , withWeight=False , allowPOS=('n' , 'ns' , 'nr' )) print (keyword)
中文文本:《三国演义》 分析人物https://python123.io/resources/pye/threekingdoms.txt
''' 中文文本分词,使用字典表达词频 ''' import requestsimport jiebaclass Solution : def fun (self, ren_name: str ) -> int : url = 'https://python123.io/resources/pye/threekingdoms.txt' r = requests.get(url) r.encoding = 'utf-8' words = jieba.lcut(r.text) name = dict () jieba for word in words: if len (word) < 1 : continue elif word in ('诸葛亮' ,'孔明曰' ): rword = '孔明' elif word in ('关公' ,'云长' ): rword = '关羽' elif word in ('玄德' ,'玄德曰' ): rword = '刘备' elif word in ('孟德' , '丞相' ): rword = '曹操' else : rword = word name[rword] = name.get(rword, 0 ) + 1 return name[ren_name] s = Solution() print (s.fun('曹操' ))
我们发现明明是同一个人,不过有别的称号罢了,但是统计的却不一样,所以我们要进行修改: