jieba

自然语言处理从小白到大白系列(6)说说中文分词那些事

橙三吉。 提交于 2019-12-02 05:06:24
文章目录 一. 分词常用方法 1.1 基于词表的方法 最大匹配法 全切分路径选择法 1.2 基于统计模型的方法 1. n元语法模型 2. 隐马尔可夫模型(Hidden Markov Model ,HMM) 3. 条件随机场模型(Conditional Random Fields,CRF) 1.3 基于深度学习的方法 二. 分词常用工具 2.1 [jieba](https://github.com/fxsjy/jieba) 2.2 [hanLP](https://github.com/hankcs/pyhanlp) 2.3 [PKUseg](https://github.com/lancopku/pkuseg-python) 2.4 [thulac](https://github.com/thunlp/THULAC-Python) 2.5 [nlpir](https://github.com/NLPIR-team/NLPIR) 2.6 [snowNLP](https://github.com/isnowfy/snownlp) 自然语言处理的中文分词有三个难点: 分词标准 例如“花草”,有的人认为是一个词,有的人认为应该划分开为两个词“花/草”。某种意义上,中文分词可以说是一个没有明确定义的问题。 切分歧义 不同的切分结果会有不同的含义,这个不用举例了,很常见。 未登录词 也叫新词发现

词云图展示

孤人 提交于 2019-12-02 02:52:22
import jieba #分词库 import matplotlib.pyplot as plt #数学绘图库 from wordcloud import WordCloud #词云库 #1、读入txt文本数据 file=open("E:\Data\Lofter\demo-txt\demo.txt","r",encoding="utf-8") text =file.read() #2、结巴分词,默认精确模式。可以添加自定义词典userdict.txt,然后jieba.load_userdict(file_name) ,file_name为文件类对象或自定义词典的路径 # 自定义词典格式和默认词库dict.txt一样,一个词占一行:每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒 cut_text= jieba.cut(text ) result= "/".join(cut_text) #必须给个符号分隔开分词结果来形成字符串,否则不能绘制词云 # print(result) #3、生成词云图,这里需要注意的是WordCloud默认不支持中文,所以这里需已下载好的中文字库 #无自定义背景图:需要指定生成词云图的像素大小,默认背景颜色为黑色,统一文字颜色:mode='RGBA'和colormap='pink' wc = WordCloud(font

jieba

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-02 00:16:25
功能 1):分词 jieba.cut方法接受两个输入参数: 1) 第一个参数为需要分词的字符串 2)cut_all参数用来控制是否采用全模式 jieba.cut_for_search方法接受一个参数:需要分词的字符串,该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细 注意:待分词的字符串可以是gbk字符串、utf-8字符串或者unicode jieba.cut以及jieba.cut_for_search返回的结构都是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(unicode),也可以用list(jieba.cut(...))转化为list 代码示例( 分词 ) #encoding=utf-8 import jieba 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

文本比较python

我是研究僧i 提交于 2019-12-01 20:13:53
import difflib import jieba from sklearn.metrics import mean_squared_error a='博客园是一个面向开发者的知识分享社区。自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多' b='博客园是一个面向开发者的知识分享社区。自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多' c1=jieba.cut(a) l1=list(c1) c2=jieba.cut(b) l2=list(c2) test=difflib.SequenceMatcher(a=l1, b=l2).quick_ratio() print(test) a=[1,2,3,4,6,8,9,7] b=[1,2,3,4,6,8,9,7] print(mean_squared_error(a,b)) 来源: https://www.cnblogs.com/klausage/p/11716241.html

define different Jieba objects in python file

怎甘沉沦 提交于 2019-12-01 16:38:12
Now, I have three different vocab.txt (glove, tencent.ai, fasttext). Target: use these vocab.txt to init jieba object in one python file. Method: if define three different jieba objects, there should be three different cache files here. Of course, should solve how to pass in different cache file paths ? In /home/user/anaconda3/envs/py36/lib/python3.6/site-packages/jieba/__init__.py, change the parameters of the __init__() function. 51 52 class Tokenizer(object): 53 54 def __init__(self, tmp_dir=None, dictionary=DEFAULT_DICT): 55 self.lock = threading.RLock() 56 if dictionary == DEFAULT_DICT:

Python 词云

点点圈 提交于 2019-12-01 15:47:01
穿过长长的县道,便是雪国。 在看黄杏元的GIS书籍,按照图论中用相邻矩阵来表示图是应该和书上一样全写出来的。但在寻找最短路径时候只用到了第一行向量,所以分析过程就简化了。 之后考虑会使用Python或者C++来实现一个简单图的Dijkstra算法,目前只是计划,具体什么时候写看时间吧。 import wordcloud import jieba import numpy as np from PIL import Image import matplotlib.pyplot as plt txt =open('line.txt','r',encoding='utf-8') #打开文件 text=txt.read()# 读整个文件 txt.close()# 关闭文件 #print(jb) #jieba中文分词 text=' '.join(jieba.lcut(text)) ## 获取图形的颜色和图片 numpy maskcover= np.array(Image.open('love.jpeg') ) w = wordcloud.WordCloud(font_path="simsun.ttc",mask=maskcover) w.generate(text) w.to_file("wc.png") # 展示词云 plt.imshow(w) plt.axis('off') plt

Python使用jieba分词

妖精的绣舞 提交于 2019-12-01 13:57:29
# -*- coding: utf-8 -*- # Spyder (python 3.7) import pandas as pd import jieba import jieba.analyse as anls if __name__ == '__main__': data = pd.read_excel(r'空气指数评论.xlsx') # content为excel的列名 opinion_content = data['content'].dropna().values all_word = '' for i in opinion_content: #形成整个字符串 all_word = all_word +','+ str(i) all_word = all_word.strip() #去掉字符串的空格 all_word_upper = all_word.upper() #大写   #加载词典 #jieba.load_userdict(r"D:\Python_workspace\aaaa.txt")   #如果有不想被切分开的词,例如王者荣耀,和平精英等,可以进行参数设置:tune=True   # jieba.analyse 是基于tf-idf算法的关键词抽取 segment=['王者荣耀','和平精英'] for ii in segment: jieba.suggest

记录 anaconda安装jieba

ぃ、小莉子 提交于 2019-12-01 13:16:14
最近用到 jieba ,在anaconda 怎么也安装补上,在网上找了一下,发现有几篇文章写得很好,但是为了怕自己以后再浪费时间,这里还是做个记录。 通常安装模块直接用pip install jieba,或者conda install jieba,但是有一些模块是无法使用以上两种方式安装上,这时就需要首先寻找模块,再安装。 1、anaconda search -t conda jieba寻找模块,这时会出现该模块的很多版本的信息如下。 ~ » anaconda search -t conda jieba unicorn@unicorndeMacBook-Pro Using Anaconda API: https://api.anaconda.org Packages: Name | Version | Package Types | Platforms | Builds ------------------------- | ------ | --------------- | --------------- | ---------- auto/jieba | 0.32 | conda | linux-64, linux-32 | py27_0 : http://github.com/fxsjy conda-forge/jieba | 0.39 | conda | linux-64

从当当客户端api抓取书评到词云生成

我的梦境 提交于 2019-12-01 09:17:56
看了好几本大冰的书,感觉对自己的思维有不少的影响。想看看其他读者的评论。便想从当当下手抓取他们评论做个词云。 想着网页版说不定有麻烦的反爬,干脆从手机客户端下手好了。 果其不然,找到一个书评的api。发送请求就有详情的json返回,简直不要太方便... 要是对手机客户端做信息爬取,建议安装一个手机模拟器。 思路: 在安装好的手机模拟器设置好用来抓包的代理,我用的charles。记得安装证书,不然抓不了https的数据包。 然后安装当当客户端,打开进到书评页面。 然后成功在charles找到了这个接口。发送get请求就会返回书评... 然后这个接口只有page参数需要注意下,代表请求的第几页。然后其他参数我照抄过来了。 当当边好像没有对这些参数做检验,用很久之前抓的的链接的参数还是能请求到数据... 之后就是请求链接在脚本里解析返回的json就好了,我只需要评论,十几行代码就行。 如果要抓其他书的书评应该修改参数product_id就好。 爬虫代码: import requests import json import random import time url='http://api.dangdang.com/community/mobile/get_product_comment_list?access-token=&product_id=25288851&time_code

分析一套源代码的代码规范和风格并讨论如何改进优化代码

做~自己de王妃 提交于 2019-12-01 07:20:47
结合工程实践选题相关的一套源代码,根据其编程语言或项目特点,分析其在源代码目录结构、文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的做法和特点; 列举哪些做法符合代码规范和风格一般要求; 列举哪些做法有悖于“代码的简洁、清晰、无歧义”的基本原则,及如何进一步优化改进; 总结同类编程语言或项目在代码规范和风格的一般要求。 我的工程实践题目是正负 新闻分类,是情 感分析的拓展,接下来我分析一下相关的代码。 *目录结构 目录结构较为简单,一个文件夹data,顾名思义存储着数据文件(正负向语料库、分割词等)。 *文件名 文件名由5个文件名组成。可以从文件名中看出各个文件的主要内容,命名简洁清晰规范。 1_process是一个预处理过程。 2_cutsentence翻译为断句,也就是分词,实现的是逐行读取文件数据进行jieba分词,该文件包括清洗本文和文本分割。 3_stopword是对停用词的处理,主要实现的是对停用词的剔除。 4_getwordvecs是“获取文本向量”,也就是从之前的词向量模型中提取文本特征向量,返回特征词向量,构建文档词向量。 5_pca_svm是对获取到的数据进行(主成分分析)pca降维和pca作图,根据图形取100维之后,支持向量机算法。 #!/usr/bin/env python # -*- coding: utf-8 -*-