精华内容
下载资源
问答
  • 在文本中提取日期
    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自动提取文本中的时间(包含中文日期),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 日期提取器日期提取器可帮助您从文本中提取日期安装 pip3 install date-extractor用 from date_extractor import extract_datestext = "I arrived in that city on January 4, 1937"dates = extract_dates ( text )#...
  • 处理时间是线性的,并且所有日期一次通过确定。 算法使用树遍历机制解决日期。自定义树数据结构以创建支持的日期,时间和月份模式。该算法还确认日期文字之间的多个空格字符。例如。 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}]

    展开全文
  • 构建项目运行 mvn clean install 要终止应用程序,请向进程发送... 用于从文本文档中提取句子。 已成功用于古腾堡计划文本。 使用启发式算法。 介绍 使用启发式算法从文本文档中提取句子。 建造 有一个 eclipse 项目
  • 中文日期格式转换标准时间格式
    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)
    
    
    展开全文
  • 假如文本:str="2016-08-10周三21:47:29包裹正在等待揽收 2016-08-11周四15:52:09【连云港市】圆通速递 江苏省连云港市赣榆县收件员 已揽件 15:53:38【连云港市】江苏...请问:使用js怎么将str日期都检索出来?谢谢
  • 一个data文件夹存在多个指定格式的TXT文本文件,可以按照人员和数据的日期提取自己所需要的数据,更改源码可以实现不同格式的数据的提取。 注意事项: 1、开发环境为Visual Studio 2010,使用.net 2.0开发 ...
  • jieba分词,连接数据库,分析数据库文本,并提取时间、地点、目标,整个完整流程/
  • * 从文本内容中提取日期时间 * @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...
  • 我们的日常生活和工作,从文本中提取时间是一项非常基础却重要的工作,因此,接下来将介绍如何从文本中有效地提取时间。   举个简单的例子,我们需要从下面的文本中提取时间: 6月28日,杭州市统计局权威...
  • 文本中提取时间信息

    千次阅读 2020-02-16 16:06:11
    方法一:https://blog.csdn.net/jclian91/article/details/95916339 方法二:https://www.jianshu.com/p/26b73a72f69dNLP(十五)让模型来告诉你文本中的时间
  • 最近工作遇到了从一段有一定规则文本中提取姓名、身份证、电话、地址得需求,本来想使用Hanlp分完词后,使用动态规划分离出语义词,通过机器学习得方式提取,但考虑到实际工作两较大,故采用了一种比较简单得...
  • 进行文本分析、提取关键词时,新闻评论等文本通常是英文及其他语言的混杂,若不加处理直接分析,结果往往差强人意。 下面对英文文本进行分离做一下总结: 1、超短文本,ASCII识别。 s = "China's Legend ...
  • 今天小编就为大家分享一篇python数据分析:关键字提取方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 程序来解析任何输入文本提取它包含的每个日期并计算日期日期必须是精确的,包括日、月和年。 示例文本 : Maven·李·明斯基数学系谱项目; 2014 年 5 月 20 日,Marvin Lee Minsky AI 谱系项目。 {重印...
  • 还是年报问询函的研究,需要从问询函文本中提取交易所要求回复的日期,同时还需要从公司回复的文本中提取公司实际上回复的日期。因此需要对两类文本分别进行分析。 二、解决思路 通过观察,发现问询函含有交易所...
  • 我正在研究一个正则表达式,它接受所有可能的日期和时间格式,从句子中提取它们 .这是我的正则表达式:@"(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]|(?:Jan|Mar|May|Jul|Aug|Oct|Dec)))\1|(?:(?:1|30)(\/|-|\.)(?:0?[1,3-...
  • fail #若不能解析,则给出解析异常的返回值 目前可以应对我自己的应用场景, 预留可以扩展的思路 返回时间的格式将可以自定义, 此处没有实现 将时间戳转为可读时间格式的功能, 未实现 可以实现提取日期和日期的任意...
  • 我想知道是否有一种简单的方法可以从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
  • 一个data文件夹存在多个指定格式的TXT文本文件,可以按照人员和数据的日期提取自己所需要的数据,更改源码可以实现不同格式的数据的提取。注意事项:1、开发环境为Visual Studio 2010,使用.net 2.0开发
  • 我的数据集的日期范围是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年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: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,016
精华内容 24,806
关键字:

在文本中提取日期