-
2021-03-06 13:18:28
作为我正在开展的一个更大的个人项目的一部分,我试图将内联日期与各种文本源分开.
例如,我有一大串字符串(通常采取英文句子或语句的形式),采用各种形式:
Central design committee session Tuesday 10/22 6:30 pm
Th 9/19 LAB: Serial encoding (Section 2.2)
There will be another one on December 15th for those who are unable to make it today.
Workbook 3 (Minimum Wage): due Wednesday 9/18 11:59pm
He will be flying in Sept. 15th.
虽然这些日期与自然文本是一致的,但他们自己也不是特别自然的语言形式(例如,没有“会议将从明天起两个星期” – 这一切都是明确的).
作为一个没有太多这种处理经验的人,最好的开始是什么?我已经研究了如dateutil.parser模块和parsedatetime的东西,但是那些似乎是在你隔离了日期之后.
因此,有没有什么好的方法来提取日期和无关的文本
input: Th 9/19 LAB: Serial encoding (Section 2.2)
output: ['Th 9/19', 'LAB: Serial encoding (Section 2.2)']
还是类似的东西?似乎这样的处理是由Gmail和Apple Mail等应用程序完成的,但是可以在Python中实现吗?
更多相关内容 -
python自动提取文本中的时间(包含中文日期)
2020-09-16 09:04:26主要介绍了python自动提取文本中的时间(包含中文日期),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 -
date-extractor:从文本中提取日期
2021-05-25 13:59:35日期提取器日期提取器可帮助您从文本中提取日期安装 pip3 install date-extractor用 from date_extractor import extract_datestext = "I arrived in that city on January 4, 1937"dates = extract_dates ( text )#... -
从Java中的文本中提取日期
2021-03-05 11:54:09处理时间是线性的,并且所有日期都在一次通过中确定。 算法使用树遍历机制解决日期。自定义树数据结构以创建支持的日期,时间和月份模式。该算法还确认日期文字之间的多个空格字符。例如。 DD DD DD和DD DD DD被视为...日期模式识别算法不仅可以识别日期模式,还可以获取Java日期格式的可能日期。这个算法非常快速和轻量级。处理时间是线性的,并且所有日期都在一次通过中确定。 算法使用树遍历机制解决日期。自定义树数据结构以创建支持的日期,时间和月份模式。
该算法还确认日期文字之间的多个空格字符。例如。 DD DD DD和DD DD DD被视为有效日期。
以下日期模式被认为是有效的并且可以使用该算法进行识别。
DD MM(MM)YY(YY) YY(YY)MM(MM)DD MM(MM)DD YY(YY)
其中M是一个月的文字就像是月或明年1月字母格式日期之间
允许定界符是 '/', '\', '', ' ' '|', ' - ',''
它还确认在以下格式 HH拖尾时间图案(24 ):mm:ss.SSS am/pm hh(24):mm:ss am/pm hh(24):mm:ss am/pm
解析时间是线性的,没有使用模式匹配或蛮力。该算法是基于树的遍历和返回日期列表具有以下三个组件 - 文本 确定日期字符串 - 转换&格式的日期字符串 - SimpleDateFormat的
使用日期字符串和格式字符串,用户可以根据自己的要求自由地将字符串转换为对象。
算法库可在maven central上找到。
net.rationalminds
DateParser
0.3.0
下面是使用它的示例代码。
import java.util.List;
import net.rationalminds.LocalDateModel;
import net.rationalminds.Parser;
public class Test {
public static void main(String[] args) throws Exception {
Parser parser=new Parser();
List dates=parser.parse("Identified date :'2015-January-10 18:00:01.704', converted");
System.out.println(dates);
}
}
输出: [LocalDateModel {originalText = 2015-一月10 18:00:01.704,dateTimeString = 2015年1月10日18:00:01.704,conDateFormat = YYYY-MM-DD HH:MM: SS.SSS,开始= 18,结束= 46}]
-
sentence-extractor:从文本中提取句子
2021-05-29 13:15:43构建项目运行 mvn clean install 要终止应用程序,请向进程发送... 用于从文本文档中提取句子。 已成功用于古腾堡计划文本。 使用启发式算法。 介绍 使用启发式算法从文本文档中提取句子。 建造 有一个 eclipse 项目 -
python3.4 自动提取文本中的时间(包含中文日期)
2022-04-01 13:57:00中文日期格式转换标准时间格式import re import chardet from datetime import timedelta import datetime # 匹配正则表达式 matchs = { 1:(r'\d{4}%s\d{1,2}%s\d{1,2}%s \d{1,2}%s\d{1,2}%s\d{1,2}%s','%%Y%s%%m%s%%d%s %%H%s%%M%s%%S%s'), 2:(r'\d{4}%s\d{1,2}%s\d{1,2}%s \d{1,2}%s\d{1,2}%s','%%Y%s%%m%s%%d%s %%H%s%%M%s'), 3:(r'\d{4}%s\d{1,2}%s\d{1,2}%s','%%Y%s%%m%s%%d%s'), 4:(r'\d{2}%s\d{1,2}%s\d{1,2}%s','%%y%s%%m%s%%d%s'), # 没有年份 5:(r'\d{1,2}%s\d{1,2}%s \d{1,2}%s\d{1,2}%s\d{1,2}%s','%%m%s%%d%s %%H%s%%M%s%%S%s'), 6:(r'\d{1,2}%s\d{1,2}%s \d{1,2}%s\d{1,2}%s','%%m%s%%d%s %%H%s%%M%s'), 7:(r'\d{1,2}%s\d{1,2}%s','%%m%s%%d%s'), # 没有年月日 8:(r'\d{1,2}%s\d{1,2}%s\d{1,2}%s','%%H%s%%M%s%%S%s'), 9:(r'\d{1,2}%s\d{1,2}%s','%%H%s%%M%s'), } # 正则中的%s分割 splits = [ {1:[('年','月','日','点','分','秒'),('-','-','',':',':',''),('\/','\/','',':',':',''),('\.','\.','',':',':','')]}, {2:[('年','月','日','点','分'),('-','-','',':',''),('\/','\/','',':',''),('\.','\.','',':','')]}, {3:[('年','月','日'),('-','-',''),('\/','\/',''),('\.','\.','')]}, {4:[('年','月','日'),('-','-',''),('\/','\/',''),('\.','\.','')]}, {5:[('月','日','点','分','秒'),('-','',':',':',''),('\/','',':',':',''),('\.','',':',':','')]}, {6:[('月','日','点','分'),('-','',':',''),('\/','',':',''),('\.','',':','')]}, {7:[('月','日'),('-',''),('\/',''),('\.','')]}, {8:[('点','分','秒'),(':',':','')]}, {9:[('点','分'),(':','')]}, ] def func(parten,tp): re.search(parten,parten) parten_other = '\d+天前|\d+分钟前|\d+小时前|\d+秒前' class TimeFinder(object): def __init__(self,base_date=None): self.base_date = base_date self.match_item = [] self.init_args() self.init_match_item() def init_args(self): # 格式化基础时间 if not self.base_date: self.base_date = datetime.datetime.now() print(type(self.base_date)) if self.base_date and not isinstance(self.base_date,datetime.datetime): try: self.base_date = datetime.datetime.strptime(self.base_date,'%Y-%m-%d %H:%M:%S') except Exception as e: raise 'type of base_date must be str of%Y-%m-%d %H:%M:%S or datetime' def init_match_item(self): # 构建穷举正则匹配公式 及提取的字符串转datetime格式映射 for item in splits: for num,value in item.items(): match = matchs[num] for sp in value: tmp = [] for m in match: tmp.append(m%sp) self.match_item.append(tuple(tmp)) def get_time_other(self,text): m = re.search('\d+',text) if not m: return None num = int(m.group()) if '天' in text: return self.base_date - timedelta(days=num) elif '小时' in text: return self.base_date - timedelta(hours=num) elif '分钟' in text: return self.base_date - timedelta(minutes=num) elif '秒' in text: return self.base_date - timedelta(seconds=num) return None def find_time(self,text): # 格式化text为str类型 if isinstance(text,bytes): encoding =chardet.detect(text)['encoding'] text = text.decode(encoding) res = [] parten = '|'.join([x[0] for x in self.match_item]) parten = parten+ '|' +parten_other match_list = re.findall(parten,text) if not match_list: return None for match in match_list: for item in self.match_item: try: date = datetime.datetime.strptime(match,item[1].replace('\\','')) if date.year==1900: date = date.replace(year=self.base_date.year) if date.month==1: date = date.replace(month=self.base_date.month) if date.day==1: date = date.replace(day=self.base_date.day) res.append(datetime.datetime.strftime(date,'%Y-%m-%d %H:%M:%S')) break except Exception as e: date = self.get_time_other(match) if date: res.append(datetime.datetime.strftime(date,'%Y-%m-%d %H:%M:%S')) break if not res: return None return res def test(): timefinder =TimeFinder(base_date='2020-04-23 00:00:00') for text in ['2012年12月12日','3小时前','在2012/12/13哈哈','时间2012-12-11 12:22:30','日期2012-13-11','测试2013.12.24','今天12:13']: res = timefinder.find_time(text) print('text----',text) print('res---',res) if __name__ == '__main__': test()
-
用正则表达式提取文本中的日期
2021-02-21 15:33:46这里构造的日期和时间提取器尝试适配上面两种日/月的表示顺序,并检查以确保是有效的日期 import re from datetime import date import datetime # 美国日期的正则表达式 us = r'((([01]?\d)[-/]([0123]?\d))([-/]...在美国,2017 年圣诞节的表示是“12/25/17”,而在欧洲,同一个日子却表示为“25/12/17”。这里构造的日期和时间提取器尝试适配上面两种日/月的表示顺序,并检查以确保是有效的日期
import re from datetime import date import datetime # 美国日期的正则表达式 us = r'((([01]?\d)[-/]([0123]?\d))([-/]([0123]\d)\d\d)?)' mdy = re.findall(us, 'Santa came 12/25/2017. An elf appeared 12/12.') print(mdy) # 结构化提取的日期 # lstrip() 方法用于截掉字符串左边的空格或指定字符 dates = [{'mdy': x[0], 'md': x[1], 'm': int(x[2]), 'd': int(x[3]), 'y': int(x[4].lstrip('/') or 0), 'c': int(x[5] or 0)} for x in mdy] print(dates) # 基本的上下文管理 # 使用在内存的结构化数据的上下文中最近读取到的年份来 # 填充任何缺失的数字字段 for i, d in enumerate(dates): for k, v in d.items(): if not v: d[k] = dates[max(i - 1, 0)][k] print(dates) datetimes = [date(d['y'], d['m'], d['d']) for d in dates] print(datetimes) # 欧洲日期的正则表达式 eu = r'((([0123]?\d)[-/]([01]?\d))([-/]([0123]\d)?\d\d)?)' dmy = re.findall(eu, 'Alan Mathison Turing OBE FRS (23/6/1912-7/6/1954) was an English computer scientist.') print(dmy) dmy = re.findall(eu, 'Alan Mathison Turing OBE FRS (23/6/12-7/6/54) was an English computer scientist.') print(dmy) # 综合提取 # 识别年份 # 两位数表示的年份,30-99 = 1930-1999 yr_19xx = (r'\b(?P<yr_19xx>' + '|'.join('{}'.format(i) for i in range(30, 100)) + r')\b') # 一位或者两位数表示的年份,01-30 = 2001-2030 # 02d 格式一个整数( d )到最小宽度2( 2 )的字段,左侧填充零(前导 0 ) yr_20xx = (r'\b(?P<yr_20xx>' + '|'.join('{:02d}'.format(i) for i in range(10)) + '|' + '|'.join('{}'.format(i) for i in range(10, 30)) + r')\b') # 3 位数或者 4 位数表示的年份的前几位数字,如“123 A.D.”中的“1” # 或者“2018”中的“20” yr_cent = r'\b(?P<yr_cent>' + '|'.join('{}'.format(i) for i in range(1, 40)) + r')' # 位数或者 4 位数表示的年份的后两位数字,如“123 A.D.”中的“23” # 或者“2018”中的“18” yr_ccxx = r'(?P<yr_ccxx>' + '|'.join('{:02d}'.format(i) for i in range(0, 100)) + r')\b' yr_xxxx = r'\b(?P<yr_xxxx>(' + yr_cent + ')(' + yr_ccxx + r'))\b' yr = (r'\b(?P<yr>' + yr_19xx + '|' + yr_20xx + '|' + yr_xxxx + r')\b') # finditer()函数实现每次只返回一个,并且返回所在的位置 groups = list(re.finditer(yr, "0, 17, 2000, 01, '08, 99, 1984, 2030/1970 85 47 `66")) full_years = [g['yr'] for g in groups] print(full_years) # 用正则表达式识别月份名称 mon_words = 'January February March April May June July August September October November December' mon = (r'\b(?P<mon>' + '|'.join('{}|{}|{}|{}|{:02d}'.format(m, m[:4], m[:3], i + 1, i + 1) for i, m in enumerate(mon_words.split())) + r')\b') print(re.findall(mon, 'January has 31 days, February the 2nd month of 12, has 28, except in a Leap Year.')) # 组合信息提取正则表达式 day = r'(?P<day>' + '|'.join('{:02d}|{}'.format(i, i) for i in range(1, 32)) + r')\b' eu = (r'\b(' + day.replace('<day', '<eu_day') + r')\b[-,/ ]{0,2}\b(' + mon.replace('<mon', '<eu_mon') + r')\b[-,/ ]{0,2}\b(' + yr.replace('<yr', '<eu_yr') + r')\b') us = (r'\b(' + mon.replace('<mon', '<us_mon') + r')\b[-,/ ]{0,2}\b(' + day.replace('<day', '<us_day') + r')\b[-,/ ]{0,2}\b(' + yr.replace('<yr', '<us_yr') + r')\b') date_pattern = r'\b(' + eu + '|' + us + r')\b' print(list(re.finditer(date_pattern, '31 Oct, 1970 25/12/2017'))) # 验证日期 dates = [] es_groups = list(re.finditer(date_pattern, "0, 12/25/2017, 2000, 01, '08, 99, 1984, 31/10/1970, 85 47 `66")) for g in es_groups: month_num = (g['us_mon'] or g['eu_mon']).strip() try: month_num = int(month_num) except ValueError: month_num = [w[:len(month_num)] for w in mon_words].index(month_num) + 1 date = datetime.date(int(g['us_yr'] or g['eu_yr']), month_num, int(g['us_day'] or g['eu_day'])) dates.append(date) print("dates:", dates)
-
如何利用js提取文本中的日期
2016-09-17 06:48:05假如文本:str="2016-08-10周三21:47:29包裹正在等待揽收 2016-08-11周四15:52:09【连云港市】圆通速递 江苏省连云港市赣榆县收件员 已揽件 15:53:38【连云港市】江苏...请问:使用js怎么将str中的日期都检索出来?谢谢 -
TXT文本数据提取软件 v1.0.zip
2019-07-09 02:03:19在一个data文件夹中存在多个指定格式的TXT文本文件,可以按照人员和数据的日期,提取自己所需要的数据,更改源码可以实现不同格式的数据的提取。 注意事项: 1、开发环境为Visual Studio 2010,使用.net 2.0开发 ... -
jieba分词,连接数据库,分析数据库中的文本,并提取时间、地点、目标
2019-01-10 14:53:35jieba分词,连接数据库,分析数据库中的文本,并提取时间、地点、目标,整个完整流程/ -
【小工具】——从文本内容中提取日期时间
2017-01-18 10:28:03* 从文本内容中提取日期时间 * @param text 包含日期时间的文本(格式:yyyy年MM月dd日HH:mm) * @return 日期时间字符串(yyyy-MM-dd HH:mm) */ public static String getDateTimeFromT -
如何从文本文件中提取数据?
2021-03-18 11:39:21在标题:CRB:神秘鲸濒危种群的遗传多样性:线粒体DNA与历史人口学类型:奖励NSF组织:DEB最新的修正案日期:1991年8月1日文件:A90000006奖励编号:90000006奖励说明:继续补助项目经理:Scott Colli... -
自然语言处理(NLP)之从文本中提取时间
2021-05-11 10:08:41在我们的日常生活和工作中,从文本中提取时间是一项非常基础却重要的工作,因此,接下来将介绍如何从文本中有效地提取时间。 举个简单的例子,我们需要从下面的文本中提取时间: 6月28日,杭州市统计局权威... -
从文本中提取时间信息
2020-02-16 16:06:11方法一:https://blog.csdn.net/jclian91/article/details/95916339 方法二:https://www.jianshu.com/p/26b73a72f69dNLP(十五)让模型来告诉你文本中的时间 -
java从文本中提取姓名、身份证、电话、地址
2021-11-26 11:22:40最近在工作中遇到了从一段有一定规则文本中提取姓名、身份证、电话、地址得需求,本来想使用Hanlp分完词后,使用动态规划分离出语义词,在通过机器学习得方式提取,但考虑到实际工作两较大,故采用了一种比较简单得... -
利用Python将文本中的中英文分离方法
2020-12-25 07:54:44在进行文本分析、提取关键词时,新闻评论等文本通常是中英文及其他语言的混杂,若不加处理直接分析,结果往往差强人意。 下面对中英文文本进行分离做一下总结: 1、超短文本,ASCII识别。 s = "China's Legend ... -
python数据分析:关键字提取方式
2020-09-17 20:39:01今天小编就为大家分享一篇python数据分析:关键字提取方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
家谱java源码-findDatesInText:从文档中提取所有日期并按升序显示
2021-06-11 23:45:50程序来解析任何输入文本并提取它包含的每个日期并计算日期。 日期必须是精确的,包括日、月和年。 示例文本 : Maven·李·明斯基在数学系谱项目; 2014 年 5 月 20 日,Marvin Lee Minsky 在 AI 谱系项目中。 {重印... -
Python:使用正则表达式从文本中定位并提取想要的内容
2021-08-04 17:44:38还是年报问询函的研究,需要从问询函文本中提取交易所要求回复的日期,同时还需要从公司回复的文本中提取公司实际上回复的日期。因此需要对两类文本分别进行分析。 二、解决思路 通过观察,发现问询函中含有交易所... -
使用正则表达式从字符串中提取日期和时间
2021-03-01 09:01:24我正在研究一个正则表达式,它接受所有可能的日期和时间格式,从句子中提取它们 .这是我的正则表达式:@"(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]|(?:Jan|Mar|May|Jul|Aug|Oct|Dec)))\1|(?:(?:1|30)(\/|-|\.)(?:0?[1,3-... -
python 数据清洗之提取字符串中的日期
2022-01-25 21:40:02fail #若不能解析,则给出解析异常的返回值 目前可以应对我自己的应用场景, 预留可以扩展的思路 返回时间的格式将可以自定义, 此处没有实现 将时间戳转为可读时间格式的功能, 未实现 可以实现提取日期和日期的任意... -
关于java:从字符串中提取各种格式的日期?
2021-03-09 00:04:48我想知道是否有一种简单的方法可以从Java中的String中提取首次遇到的日期。我的程序将分析许多不同语言的String文本。 这些字符串可以包含日期。 由于语言(以及来源不同)的原因,我要考虑很多格式。我首先想到了正则... -
NLP入门(十一)从文本中提取时间
2019-07-14 19:43:13在我们的日常生活和工作中,从文本中提取时间是一项非常基础却重要的工作,因此,本文将介绍如何从文本中有效地提取时间。 举个简单的例子,我们需要从下面的文本中提取时间: 6月28日,杭州市统计局权威... -
JAVA正则提取字符串中的日期
2021-04-01 23:22:06在我们解析字符串的时候,有这么一个需求,需要提取字符中的日期,例如:"开奖日期:2021年3月28日 兑奖截止日期:2021年5月26日" 输入样例: 开奖日期:2021年3月28日 兑奖截止日期:2021年5月26日 输出样例:... -
视频中的字幕如何提取为文本
2021-12-22 07:35:55哇 觉得不记录下来不足以表达我的兴奋 学习自: ...主要工具: ...此前我还用讯飞的录音软件在线转文字,还花了8块钱,识别...需要注意的是,新版的剪映,生成的 json文件 在 剪影的安装文件夹平级文件夹下: */JianYingPro D -
TXT文本数据提取软件 1.0.zip
2019-05-25 08:56:31在一个data文件夹中存在多个指定格式的TXT文本文件,可以按照人员和数据的日期,提取自己所需要的数据,更改源码可以实现不同格式的数据的提取。注意事项:1、开发环境为Visual Studio 2010,使用.net 2.0开发 -
python – 从数据集上给定的日期范围中提取属于某一天的数据
2020-12-18 23:34:54我的数据集的日期范围是2018年1月12日到8月3日,其中包含一些值:my_df DataFrame的维度是:my_df.shape(9752, 2)每行包含半小时的频率第一行开始于2018-01-12my_df.iloc[0]Date: 2018-01-12 00:17:28Value 1Name: 0,... -
python正则表达式抽取文本中的时间日期
2020-11-07 14:30:08使用python的正则表达式抽取文本中的年月日信息,如2020年5月19日。 def find_time(yanbao_txt, entity): paras = [para.strip() for para in yanbao_txt.split('\n') if para.strip()][:5] for para in paras: ...