#nlp #date-time #time-parser #events #english #ical #natural

event_parser

Rust NLP库,用于将英语自然语言解析为icalendar事件

2个版本

0.1.1 2021年5月23日
0.1.0 2020年4月21日

#735 in 文本处理


用于vayu

MIT授权许可

56KB
933

Event Parser

Rust的日期、时间和事件解析库

Build crates.io

Event Parser包含一个日期和时间自然语言解析库,以及一个事件解析库,还有一个演示如何利用这些crate的简单命令行工具的客户端。这些库使用Rust编写,基于chronoregexcrate构建,以提供更广泛的自然语言语句覆盖。

日期时间解析器:Rust NLP库

它旨在将非结构化文本解析为NaiveDateNaiveTime格式。

  • 日期时间解析器具有时区感知能力,但默认为UTC。
  • 允许解析相对于当前日期/时间,或相对于自定义日期/时间。

用法

将以下内容放入你的Cargo.toml

[dependencies]
date_time_parser = "0.1.0"

然后在crate根目录下添加以下内容

extern crate date_time_parser;

示例:查找日期

此包的一般用法是将包含日期的英语自然语言传递给DateParser结构,以解析表达式。如果找到日期,它将表达式解析为NaiveDate格式。

use date_time_parser::DateParser;
use chrono::NaiveDate;

let date = DateParser::parse("Lunch on June 5th");
assert_eq!(date, Some(NaiveDate::from_ymd(2020, 6, 5)));

有关更多示例和用法,请参阅文档

Event Parser:Rust NLP库

旨在将非结构化文本解析为iCalendar Events

  • 将文本解析为包含日期和时间的相对本地时间的事件。
  • 事件解析器默认为时区感知。
  • 利用date_time_parser crate来解析事件的日期和时间。

用法

将以下内容放入你的Cargo.toml

[dependencies]
event_parser = "0.1.0"

然后在crate根目录下添加以下内容

extern crate event_parser;

示例:晚上7点的晚餐

将描述事件的英语自然语言传递给to_event函数以解析表达式。它将表达式解析为iCalendar Events格式。

如果适用,事件将具有开始和结束时间,或被分类为全天活动。此外,将解析事件的一个日期,如果没有找到日期,则默认为当天。如果提供,事件还将有一个摘要(事件的名称)。

use event_parser::to_event;
use chrono::{Duration, Local};
use icalendar::{Component, Event};
 

let event = to_event("Dinner at 7");
let expected_event = Event::new()
    .summary("Dinner")
    .starts(Local::today().and_hms(19, 0, 0))
    .ends(Local::today().and_hms(19, 0, 0) + Duration::hours(1))
    .done();
assert!(equal(event, expected_event));

有关更多示例和使用方法,请参阅文档

命令行工具

为了尝试使用event_parser库可以做什么,我们提供了一个命令行工具,可以轻松测试不同的输入。只需下载仓库,然后在项目的根目录下运行cargo run并输入自然英语事件,即可查看如何解析它!

开发设置

安装Rust编程语言,然后克隆此仓库。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
git clone https://github.com/isaacrlee/event-parser.git

要运行程序并轻松尝试输入

cargo run

要运行测试套件

cargo test --all

许可协议

License: MIT

MIT许可协议

在MIT许可协议下分发。有关更多信息,请参阅LICENSE
版权所有(c)2020 伊萨克·李和亚历克斯·格雷姆斯

依赖关系

~4.5–6MB
~104K SLoC