Python
文章平均质量分 66
jionlp数据分析
JioNLP 开源软件作者,数据分析专家
展开
-
分享 2022中国行政区划文本数据集(json格式)
相信很多做自然语言处理、知识图谱、数据分析的小伙伴们都需要一份中国行政区划数据词典。行政区划分为省、市、县、乡(街道)、村(社区)等五级,如下表所示:城市{"loc_name": ["北京市"], "loc_code": "110000000000"}{"loc_name": ["北京市", "市辖区"], "loc_code": "110100000000"}{"loc_name": ["北京市", "市辖原创 2022-10-23 23:18:01 · 4426 阅读 · 0 评论 -
文本货币金额抽取与解析,JioNLP
给定一段文本,提取其中的货币金额字符串,并将所有的金额做标准化。JioNLP 中文预处理与解析工具包https://github.com/dongrixinyu/JioNLP其中,jio.ner.extract_money 与 jio.parse_money 可以从一段文本中抽取出货币金额,并将结果进行标准化。我们不妨看一个例子:给定一段文本如:海航亏损7000万港元出售香港公寓。12月12日,据《香港经济日报》报道,海航集团将持有的部分位于香港铜锣湾Yoo Residence大楼中的物业以原创 2021-10-25 20:21:54 · 2146 阅读 · 0 评论 -
时间语义解析工具 Python版,从文本中提取时间,并解析其含义,在线使用,时间语义识别
时间语义解析工具 Python版,从文本中提取时间,并解析其含义【新华社报2021-9-9】国家统计局今天发布了2021年8月份全国CPI(居民消费价格指数)需要从中抽取出 2021-9-9 和 2021年8月。然后将其规范化,形成【‘2021-09-09 00:00:00’, ‘2021-09-09 23:59:59’】和【‘2021-08-01 00:00:00’, ‘2021-08-31 23:59:59’】的形式。进而方便做各种处理。该功能由 JioNLP 包完全实现,.原创 2021-09-12 00:14:51 · 6010 阅读 · 0 评论 -
文本清洗?一个工具搞定!Python版 NLP 文本清洗工具
文本清洗是一个繁琐复杂的工作,不论是对于NLP 的开发者,还是其它领域工作者。这部分工作可以由 JioNLP 工具包一键搞定!!!⭐ 源码戳这里 => JioNLPhttps://github.com/dongrixinyu/JioNLP⭐ (在线文本清洗)戳这里 => 在线文本清洗使用工具包安装 Installationpython>=3.6github 版本略领先于 pip$ git clone https://github.com/dongrixinyu/Jio.原创 2021-09-11 23:48:05 · 7329 阅读 · 2 评论 -
提取文本中的金额,提取货币,Python实现与在线使用
给定一篇文本,提取出文本中涉及到的所有的货币和金额。例如:'张三赔偿李四人民币车费601,293.11元,工厂费一万二千三百四十五元,利息9佰日元,打印费十块钱。' 从中提取出'601,293.11元', '一万二千三百四十五元', '9佰日元', '十块钱' 这样的字符串,并把他们都规范化,形成'601293.11元', '12345.00元', '900.00日元', '10.00元' 这样的结果。方便存储和计算。⭐ 源码戳 => JioNLPhttps://github....原创 2021-09-11 23:27:20 · 3423 阅读 · 1 评论 -
提取身份证号,解析身份证号出生年月、出生地、性别 的Python 实现与在线使用工具
从一篇文本中,抽取出所包含的身份证号并解析出其中的 省、市、县、出生年月、性别、校验码。 这个功能,JioNLP帮你实现源码在 github:JioNLPhttps://github.com/dongrixinyu/JioNLP在线使用版请戳 => 抽取并解析身份证号代码安装方法:安装 Installationpython>=3.6github 版本略领先于 pip$ git clone https://github.com/dongrixinyu/JioN.....原创 2021-09-11 23:16:23 · 2852 阅读 · 0 评论 -
python 实现的 成语接龙
点这里安装 => 成语接龙 JioNLP安装 Installationpython>=3.6$ git clone https://github.com/dongrixinyu/JioNLP$ cd ./JioNLP$ pip install .成语接龙idiom_solitaire给定一条成语,返回其尾字为首的成语。import jionlp as jioidiom = input('input: ')n = 0while n < 10: idiom原创 2020-12-18 17:25:26 · 1800 阅读 · 3 评论 -
JioNLP:预处理、信息抽取、数据增强、NLP简单功能与词典,找它就对了!
JioNLP安装方式 pip install jionlp在线试用网站 www.jionlp.com来看看 JioNLP 能干什么?功能主要包括:文本清洗,去除HTML标签、异常字符、冗余字符,转换全角字母、数字、空格为半角,抽取及删除E-mail及域名、电话号码、QQ号、括号内容、身份证号、IP地址、URL超链接、货币金额与单位,解析身份证号信息、手机号码归属地、座机区号归属地,按行快速读写文件,(多功能)停用词过滤,(优化的)分句,地址解析,新闻地域识别,...原创 2020-10-30 16:35:06 · 8805 阅读 · 6 评论 -
NLP自然语言处理的文本数据增强——回译(内含python工具包)
回译自然语言处理过程经常面临缺乏数据,因此需要进行数据增强。其中,回译,即将中文翻译成外文,再翻译回中文的操作可以扩展数据集,是一种好办法。这里直接提供工具包NLP工具包-回译数据增强,可以直接调用实现回译增强,而且返回的数据非常丰富。NLP工具包-回译数据增强提供了多个大厂的公开免费翻译接口:包括百度、腾讯、谷歌、有道、讯飞 ,数据结果非常丰富;你可以自己到各个大厂的 api 官方页面申请appid 和 密钥,拿到属于自己的翻译资源;如果你可以获取到大厂的 多个 appid 和密钥,那么直接原创 2020-09-18 10:47:25 · 5488 阅读 · 2 评论 -
一个快速从中文文本抽取关键短语的工具 ckpe 提取关键短语
一个从 中文自然语言文本 中抽取 关键短语 的工具应用场景 Application scenario1.抽取关键短语在很多关键词提取任务中,使用tfidf、textrank等方法提取得到的仅仅是若干零碎词汇。这样的零碎词汇无法真正的表达文章的原本含义,我们并不想要它。>>> text = '朝鲜确认金正恩出访俄罗斯 将与普京举行会谈...'>>>......原创 2020-01-22 18:34:21 · 7357 阅读 · 2 评论 -
【数据结构】动态内存管理
动态内存管理是和操作系统息息相关的一个活动,现在的计算机的内存分配和回收基本上都由OS来维护管理,但是一些高级程序语言的内存回收和分配都还是由程序员来管理,比如C和C++,有malloc方法,也总有构造函数和析构函数。但是有一些语言就不需要,比如Python。系统每次对申请内存的对象分配一段地址连续的内存块,如果已经被占用了,就叫做占用块,如果还没被分配掉,就叫做可利用空间块或者空闲块。在回收内存之原创 2017-11-26 19:51:59 · 804 阅读 · 0 评论 -
将单向链表按某个值划分成左边小、中间相等、右边大的形式 Python 版
题目:给定一个单向链表,如 LinkedList [21, 5, 120, 19, 72, 50, 312]。 再给定任意一个数值,比如50,返回一个链表,保证左边小、中间相等、右边大的形式,比如该例子的返回链表结果为:[21, 5, 19, 50, 120, 72, 312]再比如给定值100,返回的链表结果为:[21, 5, 19, 72, 50, 120, 312] 且需要保证修改后的原创 2017-12-06 23:06:03 · 1342 阅读 · 2 评论 -
构造一个特殊栈,实现方法getmin,返回栈中的最小元素 Python版
题目: 构造一个栈结构,其中需要实现一个方法,该方法 getmin,返回栈中的最小的元素。要求: 时间复杂度为o(1)。分析: 之前我写过了用python写一个栈数据结构,代码在这里: 队列和栈的Python实现在这里,需要以时间复杂度 o(1)完成查找,也就是说,必须以空间换时间。因此,构造一个栈,这个栈的栈顶必须保持始终都是原始栈的最小值。在原始栈插入和弹出元素时,这个辅助栈必须跟着配合原创 2017-12-22 23:22:13 · 1057 阅读 · 0 评论 -
从整数数组中找出唯二奇数次的数字 Python版
题目: 给定一个数组,数据都是整数,其中只有2个数字出现了奇数次,其它都是偶数次。找出那2个奇数次的数字。要求: 时间复杂度o(n),空间复杂度为o(1)。分析: 如果有两个数字出现了奇数次,比如是 a 和 b,则最终 odd 结果为 a^b,但其中一定有差别。因为数字不一样,所以其异或结果一定不是0,那么也就是其中有一位是1,不论哪一位是1,把数组中所有的那一位是1的数字全部异或,结果就是其原创 2017-12-22 23:16:20 · 901 阅读 · 0 评论 -
从数组中找出出现奇数次的那个数 Python版
题目: 给定一个数组,数据都是整数,其中只有一个数字出现了奇数次,其它都是偶数次。找出那个奇数次的数字。要求: 时间复杂度o(n),空间复杂度为o(1)。分析: 如果按照常规思路,那么这个题真的比较难操作,至少空间复杂度较高。但是采用位运算,异或即可轻松解决。 整数 n 与 0 的异或结果为 n。整数 n 与 n的异或结果为0,异或运算满足交换律和结合律总体来说,位运算相关的算法题总有点骚操原创 2017-12-22 23:10:51 · 4338 阅读 · 0 评论 -
统计整数的二进制表达里有多少个1 Python版
题目: 给定一个整数,统计其二进制表示里有多少个1。分析: 方法1:循环迭代该数的二进制的每一位,复杂度是 o(log2 n),n就是该整数 方法2:复杂度仅仅是1的个数。方法是采用位运算抹去0不需要处理。这里的位运算表达式不光在这里见到,其它地方的用处也非常多。再者,计算机组成原理里有详细的对加减乘数四则运算的讲解,如何表示负数、小数等等,不过我都忘了……这些运算与位运算息息相关。单靠位运算原创 2017-12-22 23:07:14 · 3388 阅读 · 0 评论 -
不用额外变量交换两个整数值 Python版
题目如标题所述。分析:采用位运算,这样的代码指令和利用临时变量一样多,但是位运算明显比赋值略微复杂一点点。毕竟赋值不需要经过计算。代码: def exchage_nums(a, b): ''' 不用额外变量交换两个整数值,空间节省了,时间负责度略高一些。 ''' a = a ^ b b = a ^ b原创 2017-12-22 23:01:01 · 910 阅读 · 0 评论 -
【数据结构】查找算法 Python 版
我自己写了一个 Python 类,里面放了各种查找算法的代码,并且总结了所有常见的查找算法的基本思想、特点、适用情况等等。通过 __doc__ 方法可以查看代码里的说明和介绍。写代码的时候参考了[Data Structure & Algorithm] 七大查找算法。这个作者用的是C++,但是我看他的代码里面基本没有使用什么C++的特性,也很好懂。我就照着书上的写了个Python的。引用的这个 blo原创 2017-11-26 19:59:39 · 510 阅读 · 0 评论 -
超级素数幂 Python 版
题目:如果一个数字能表示成 p^q,且p是一个素数,q为大于1的正整数,则此数字就是超级素数幂。 param number: 测试该数字是否是超级素数幂 return: 如果不是就返回 False,如果是就返回 p 和 q 值 例如,输入125,返回(5,3)代码:import mathdef get_prime(number): ''' 寻找小于number的所有的质数原创 2017-12-07 09:59:45 · 1047 阅读 · 0 评论 -
Python不常见特性
之所以总结这些不常见的特性,原因主要有以下: 1、python码农写代码的时候本身有些问题的确面对的比较少,一旦遇到这些问题就需要百度。 2、百度的时候也是参考别人的blog,毕竟是中国人,直接去看官网文档的还是少。一般别人的 中文blog 里给出的解决方法也是比较低效的,不够python,代码量并没有减少到最低,而且效率往往不够高效。 3、总结一下方便以后使用,这是最根本的。当然了,面向目的原创 2017-12-31 22:59:12 · 376 阅读 · 0 评论 -
【机器学习】支持向量机SVM - 对SVM与核函数的理解及sklearn参数详解
支持向量机是在深度学习流行开来之前,性能表现最好的一种机器学习方法。在看这篇blog之前,默认读者已经有了对支持向量机的基本概念的认识。一、支持向量机的进一步理解支持向量机的优化目标在逻辑回归优化目标基础上进一步产生的。具体优化目标不说了,参看各种svm的书籍和博客。 1、提升线性回归值的划分要求具体来讲,逻辑回归的优化目标是使用sigmoid函数将线性回归 weigh原创 2018-01-11 22:28:22 · 14301 阅读 · 2 评论 -
判断两字符串是否互为变形词Python版
题目: 给定两个字符串,str1,str2,判断两个字符串中出现的字符是否全部种类一样,数量一样。 例如: str1 = “apple”, str2 = “paple”, 返回 True; str1 = “pear”, str2 = “bears”, 返回 False。Python版代码如下,我自己手写:def is_deformation(str1, str2): if str1原创 2017-11-02 22:36:16 · 2489 阅读 · 1 评论 -
给定一篇文本(新闻),确定其归属地(地名)的python工具
简介给定一篇文章,可包含标题和正文(或仅标题,仅正文),确定其归属地(地名)。结果标准:区分国内国外,国外到国家名一级国内到省市一级安装使用 python3$ git clone https://github.com/dongrixinyu/location_detect.git$ cd location_detect$ pip install .使用方法样......原创 2019-07-22 21:25:05 · 1213 阅读 · 3 评论 -
【数据结构与算法】刷题汇总 Python 版
我的BLOG里写了一部分算法和数据结构,题目都是从网上和书上找的。当然一下这些并不全面,我打算利用今后的时间把各类的算法题都用Python写一遍(因为我主要是用Python),尽可能囊括所有的算法题。写这些题并不是目的,主要还是为了能够提升自己的数据结构和算法的水平,以及码代码的速度和熟练度。所有的代码都提交到了我的 github 上面:冬日新雨的github:数据结构和算法刷题代码下载1、字符串:原创 2017-12-11 17:45:02 · 20150 阅读 · 2 评论 -
【算法】汉诺塔 Python 版
题目: 汉诺塔给出最优解,如果对汉诺塔的定义有不了解,请翻看数据结构教材。分析: 算法当然还是递归解了,即把n个汉诺塔盘子分解成 n - 1 个盘子的移动和一个底层盘子的移动,这样一来,问题就成了一连串的递归,然后就可以逐步求解了。 当然了,汉诺塔还有进阶问题,此处先不讨论,随后补上吧。代码:#!usr/bin/python2.7# -*- coding=utf8 -*-# @Time原创 2018-01-03 22:39:48 · 1311 阅读 · 0 评论 -
【算法】斐波那契数列的计算方法
题目: 计算斐波那契数列。具体什么是斐波那契数列,那就是0,1,1,2,3,5,8,13,21,34,55,89,144,233。要求: 时间复杂度尽可能少分析: 给出了三种方法:方法1:递归的方法,在这里空间复杂度非常大。如果递归层数非常多的话,在python里需要调整解释器默认的递归深度。默认的递归深度是1000。我调整了半天代码也没有调整对,因为递归到1000已经让我的电脑的内存有些撑原创 2018-01-03 19:14:20 · 7650 阅读 · 0 评论 -
【机器学习】K近邻算法 - 性能分析
Knn算法是一种简单的监督学习算法,虽然性能并不算非常出色,但是可解释性非常强。理论上可以证明,Knn可以以任意精度拟合真实分类高维曲面。 一、Knn算法分析1、该算法在处理样本分布不均匀的时候效果比较差。比如正类的样本数量为1000,反类的样本数量为100,即正反两类的比例悬殊,当测试一个数据样本的时候,很有可能它虽然在距离上靠近反类,但是由于相邻的样本反类太少,正类太多,导致预测不原创 2018-01-11 23:04:48 · 1355 阅读 · 0 评论 -
【机器学习】K均值算法 - 性能分析
K均值算法是最基础的一种聚类算法。具体算法描述就不提了,资料实在太多,这里说一下它的特点和局限性。 一、K均值的特点1、容易陷入局部最小值之所以陷入局部最小值,是因为初始值设置的有问题,即初始的K个base点在属性空间中的位置直接影响了最终的聚类结果。所以可以随机多次进行K均值聚类,选取各种不同的初始值,产生不同的聚类结果。选择一个代价函数(代价函数就是总的距离差的平方和)最小的一原创 2018-01-11 23:00:41 · 1272 阅读 · 0 评论 -
【数据结构】内部排序算法
我总结了一下常见的排序算法。直接写成了类,对于每一种算法的说明都写在了注释里,在调用某个类或者某个排序算法的方法之后,使用python内置的 __doc__方法即可查看具体的某种算法的说明。class SortingAlgorithms(object): ''' 冒泡法:对比模型,原数组上排序,稳定,慢o(n^2) 插入法:对比模型,原数组上排序,稳定,慢,最优的方法是希尔排原创 2017-11-25 21:07:08 · 441 阅读 · 0 评论 -
环形单链表的约瑟夫问题 Python版
题目: 一个环形单链表,从头结点开始向后,指针每移动一个结点,就计数加1,当数到第m个节点时,就把该结点删除,然后继续从下一个节点开始从1计数,循环往复,直到环形单链表中只剩下了一个结点,返回该结点。这个问题就是著名的约瑟夫问题。代码: 首先给出环形单链表的数据结构:class Node(object): def __init__(self, value, next=0):原创 2017-12-05 11:07:07 · 1928 阅读 · 0 评论 -
判断一个链表是否是回文结构 Python 版
题目: 判断一个链表是否是回文结构,如果是返回 True,否则返回 False 比如,给出一个链表为[2, 5, 12, 198, 12, 5, 2],返回 True, 给定链表[2, 5, 12, 198, 12, 54, 20],返回 False。方法1:空间复杂度为 o(n),使用一个栈,将链表中的数据全部push 到栈里,然后再迭代一遍链表,取出栈里的值逐个相互比较,如果不一样则说明不原创 2017-11-29 23:59:29 · 3090 阅读 · 0 评论 -
【数据结构】队列和栈 Python 实现
队列和栈都是一种特殊的线性表,所以也各有顺序表和链表两种表示方法。队列是先进先出,链表要优于顺序表,毕竟如果是顺序表的话,要不停地修改地址。应用主要包括银行业务模型,生产模型。栈是后进先出。其表示方法我认为顺序表要优于链表。应用主要有数制转换,括号匹配,行编辑程序,迷宫求解,表达式求值,汉诺塔。队列的Python版本数据结构如下:# -*- coding=utf-8 -*-class Nod原创 2017-11-23 21:07:03 · 1950 阅读 · 1 评论 -
反转部分单向链表 Python 版
题目: 给定一个单链表的头指针 head, 以及两个整数 a 和 b,在单链表中反转 linked_list[a-b] 的结点,然后返回整个链表的头指针。 例如: 单链表[1000, 5, 12, 100, 45, ‘cecil’, 999], a = 4, b = 6, 返回的链表是[1000, 5, 12, 100, 999, ‘cecil’, 45],也就是说, a 和 b分别为索原创 2017-11-28 23:36:22 · 960 阅读 · 0 评论 -
逆序反转单链表 Python 版
题目: 给定一个单向链表的头指针,给出其反向链表。 例如,给定[1, 5, 12, 22, 33, 45],返回[45, 33, 22, 12, 5, 1]代码:class LinkedListAlgorithms(object): def __init__(self): pass def reverse_linked_list(self, head): # 将链表原创 2017-11-28 21:50:39 · 2831 阅读 · 0 评论 -
删除链表中的中间节点和 a/b 处的结点 Python 版
题目: 给定一个链表的头结点 head,实现删除链表中的中间节点的函数。 例如:给定链表[1, 5, 12, 33, 45, 171, 999, 1001, 2000],删除结点 45, 给定链表[1, 5, 12, 33, 45, 171, 999, 1001],删除结点 33。 如果链表为空或长度为1,则不删除任何结点。 拓展: 给定一个链表的头结点 head,整数 a 和 b,实现原创 2017-11-28 20:51:41 · 622 阅读 · 0 评论 -
计算字符串中所有数字之和Python版
题目: 给定一个字符串,计算其中所有数字的和。其中,不考虑小数点,如果有奇数个“-”号,则数字为负,偶数个则数字为正。 例如,“a12b3mnh4”, 返回值19, “-2fds—-43fnd”,返回值41。代码:class String(object): def __init__(self): pass def sum_of_num(self, str):原创 2017-11-04 00:44:55 · 7766 阅读 · 0 评论 -
将整数字符串转成整数值 Python版
题目 给定一个字符串,如果其中所有的字符都是数字,且符合人们日常的书写规范,则返回该整数值,否则返回0。 例如:“123”,返回123; “038123”,返回0; “dfa423”,返回0; “-482”,返回-482; “-03”,返回0。代码 def str_2_int(string): # 将符合规范的数字字符串转为数字 if string == "":原创 2017-11-09 21:47:49 · 2164 阅读 · 1 评论 -
判断两个字符串是否互为旋转词 Python版
题目 如果将一个 str1 从任意的位置切分开,分成两部分,将后面一部分放置在前面, 再组合起来成为 str2,构成了旋转词。 例如:str1 = “apple”,str2 = “leapp”,两个词就是旋转词。代码 def is_rotation(str1, str2): if str1 == "" or str2 == "" or len(str1) != len(st原创 2017-11-09 20:59:02 · 2002 阅读 · 1 评论 -
Pyspider中给爬虫伪造随机请求头
Pyspider 中采用了 tornado 库来做 http 请求,在请求过程中可以添加各种参数,例如请求链接超时时间,请求传输数据超时时间,请求头等等,但是根据pyspider的原始框架,给爬虫添加参数只能通过 crawl_config这个Python字典来完成,框架代码将这个字典中的参数转换成 task 数据,进行http请求。这个参数的缺点是不方便给每一次请求做随机请求头。 crawl_原创 2017-11-01 09:11:31 · 6431 阅读 · 0 评论 -
去掉字符串当中的连续k个0,Python版
题目: 给定字符串str 和一个整数k。如果str中恰好出现了连续的k个0,则将k个0删除。 比如,给定字符串str = “0000fw300001203h000ui0000re3_0000”,k=4。返回的结果为“fw31203h000uire3_”。代码:class StringAlgorithm(object): def __init__(self): pass原创 2017-11-07 21:56:10 · 2020 阅读 · 2 评论