Files
2026-07-13 12:48:55 +08:00

154 lines
10 KiB
JavaScript

import test from 'tape'
import nlp from './_lib.js'
test('date-phrase tests:', function (t) {
const arr = [
[`remind me to buy eggs`, `buy`, `egg`, ``],
[`please remind me to buy eggs`, `buy`, `egg`, ``],
[`i really should buy some eggs`, `buy`, `egg`, ``],
[`i need to remember to buy the eggs`, `buy`, `egg`, ``],
[`i really ought to buy us some eggs`, `buy`, `egg`, ``],
[`remember to buy eggs tomorrow`, `buy`, `egg`, `tomorrow`],
[`i should buy eggs for the kids on sunday`, `buy`, `egg`, `on sunday`],
[`when i'm at work, buy some eggs for kathrine`, `buy`, `egg`, ``],
[`it's important that i return the library books`, `return`, `library book`, ``],
[`please tell john to walk the dogs each night`, `tell`, `john`, `each night`],
[`don't forget to remind me about returning the library books`, `return`, `library book`, ``],
[`i've gotta buy some paint for the ceiling on monday`, `buy`, `paint`, `on monday`],
[`if i'm free, return the books to the library`, `return`, `book`, ``],
[`bring back the library books`, `bring back`, `library book`, ``],
[`all the books need to be brought back by tuesday`, `bring back`, `book`, `by tuesday`],
[`bring the paint cans to the dump with johnny on tuesday`, `bring`, `paint can`, `on tuesday`],
[`vote on tuesday`, `vote`, ``, `on tuesday`],
// [`vote after work`, `vote`, ``, `after work`],
[`buy some bananas`, `buy`, `banana`, ``],
[`cancel subscription to netflix`, `cancel`, `subscription`, ``],
[`fixup all the credit cards I lost`, `fixup`, `credit card`, ``],
[`hey Joseph, i gotta get my homework finished tonight`, ``, `homework`, `tonight`],
[`workshop some idea with fred`, `workshop`, `idea`, ``],
[`bust open the screen door by the gate`, `bust open`, `screen door`, ``],
[`widen the cabinet to fit my playstation`, `widen`, `cabinet`, ``],
[`call up the architecture firm`, `call up`, `architecture firm`, ``],
[`find a dogsitter`, `find`, `dogsitter`, ``],
[`call amber`, `call`, `amber`, ``],
[`fire debrah`, `fire`, `debrah`, ``],
[`tell jude to make it better`, `tell`, `jude`, ``],
[`remind fred to buy shoes`, `remind`, `fred`, ``],
[`create a business plan`, `create`, `business plan`, ``],
[`sell the hotdogs at wrigley on friday`, `sell`, `hotdog`, `on friday`],
[`i'm worried about forgetting amber's necklace`, ``, ``, ``],
[`reply to frank about sausage rolls for the wedding meal`, `reply`, `frank`, ``],
[`book the flight to chicago and figure out those details`, `book`, `flight`, ``],
[`sell the computer on ebay`, `sell`, `computer`, ``],
[`remember to sell the computer tomorrow on ebay`, `sell`, `computer`, `tomorrow`],
[`set your alarm at 6:15`, `set`, `alarm`, `at 6:15`],
[`coroborate details wit anna about thanksgiving`, `coroborate`, `detail`, `thanksgiving`],
[`drive to hamilton`, `drive`, `hamilton`, ``],
[`remind me to drive to waterloo on thursday night`, `drive`, `waterloo`, `on thursday night`],
[`remind me to get snow tires`, `get`, `snow tire`, ``],
[`archive my family photos`, `archive`, `family photo`, ``],
[`before the landlord comes, test the smoke alarm`, `test`, `smoke alarm`, ``],
[`send the lab samples to houston`, `send`, `lab sample`, ``],
// [`archive all details before tuesday's meeting`, `archive`, `detail`, ``], //hmm
[`if jude is late, send her an email`, `send`, `email`, ``],
[`have a talk with amber about her instagram account`, `have a talk`, `talk`, ``],
[`reply to all my emails in the morning`, `reply`, `email`, `in the morning`],
// [`ask june to sell off all my assets in the meeting`, `ask`, `june`, ``],
[`don't forget about sending dad a postcard from jupiter`, `send`, `dad`, ``],
[`all unique ids need to enter the database`, `need to enter`, `database`, ``],
[`reply to that guy on okcupid`, `reply`, `guy`, ``],
// [`send a message to dad thanking him for sunday`, `send`, `message`, ``],
[`add up the costs of vacationing and equip john with the totals`, `add up`, `cost`, ``],
// [`terminate all relations with monica immediately`, `terminate`, `relation`, `immediately`],
[`confirm the totals precede the tax return`, `confirm`, `total`, ``],
[`make-up the bed and clean the sheets`, `make-up`, `bed`, ``],
[`clean the appartment and do the dishes`, `clean`, `appartment`, ``],
[`keep the appartment clean`, `keep`, `appartment`, ``],
[`add the reciepts up and guarantee a clear decision`, `add`, `reciept`, ``],
[`grab some groceries tomorrow for the sale`, `grab`, `grocery`, `tomorrow`],
[`keep tabs on danny this week and ensure he's ok with sandra`, `keep tabs on`, `danny`, `this week`],
[`write more documentation`, `write`, `documentation`, ``],
[`please tell me to upload the spreadsheet for danny on friday`, `upload`, `spreadsheet`, `on friday`],
[`work-up the courage to ask stephanie out`, `work-up`, `courage`, ``],
[`saturday date with sandra`, ``, `date`, `saturday`],
[`lunch with Dr. Salvonio on tuesday at 10`, ``, `lunch`, `on tuesday at 10`],
[`sell the raptors tickets for valentines day`, `sell`, `raptors ticket`, `valentines day`],
[`bridge with daisy and her sisters`, ``, `bridge`, ``],
[`work-out tomorrow`, `work-out`, ``, `tomorrow`],
[`book club every wednesday`, ``, `book club`, `every wednesday`],
[`sell the rights to my autobiography to judy on instagram`, `sell`, `right`, ``],
[`remind john to sell his tesco shares`, `sell`, `tesco share`, ``],
[`keep water levels below 15%`, `keep`, `water level`, ``],
[`wait for john to pick up his pizza at pizza hut`, `wait`, `john`, ``],
[`sanitize the database against xss attacks`, `sanitize`, `database`, ``],
[`ensure nobody enters the area`, `ensure`, `nobody`, ``],
[`buy three newspapers for fishing lure`, `buy`, `three newspaper`, ``],
[`John tell me to buy cheeseburgers tuesday night for everybody`, `buy`, `cheeseburger`, `tuesday night`],
[`so i'd like to watch the space shuttle launch tonight`, `watch`, `space shuttle`, `tonight`],
[`buy a cello on amazon.com or find one on instagram`, `buy`, `cello`, ``],
[`date stephanie on tuesday night and buy flowers`, `date`, `stephanie`, `on tuesday night`],
[`forge a relationship with the investors over christmas`, `forge`, `relationship`, `over christmas`],
[`wait until july to tell investors about daniel's suit`, `tell`, `investor`, `until july`],
[`in august, buy june some flowers`, `buy`, `flower`, `in august`],
[`accept credit cards over email`, `accept`, `credit card`, ``],
// [`turn the radio down each weeknight`, `turn`, `radio`, `each weeknight`], //tricky
[`allow users to create new artifacts`, `allow`, `user`, ``],
[`by february, tell new users we accept donations`, `tell`, `new user`, `by february`],
// [`normalize all usernames to the main dataset at some point`, `normalize`, `username`, `at some point`],
// [`eat carrots once a week`, `eat`, `carrot`, `once a week`],
[`tell sam not to engage in insider trading when he calls`, `tell`, `sam`, ``],
[`set alarm next tuesday`, `set`, `alarm`, `next tuesday`],
[`buy all apples from tesco before they run out`, `buy`, `apple`, ``],
[`ask fred to buy some apples from tescos`, `buy`, `apple`, ``],
[`hey check my stocks in the morning`, `check`, `stock`, `in the morning`],
[`ask jaqueline about turnip chips`, `ask`, `turnip chip`, ``],
[`so, remind me to ask jaqueline where she bought those chips`, `ask`, `chip`, ``],
[`chill the wine before the party`, `chill`, `wine`, ``],
[`turn apples into applejuice and put them in the refridgerator`, `turn`, `apple`, ``],
[`eat the old pizza before it goes bad`, `eat`, `pizza`, ``],
[`pack a lunch for danny and sam on sunday morning`, `pack`, `lunch`, `on sunday morning`],
[`set the correct time on my watch once the plane lands`, `set`, `time`, ``],
[`remember to send everyone a reminder that taxes are non-negotiable`, `send`, `reminder`, ``],
[`check the mailbox in the morning`, `check`, `mailbox`, `in the morning`],
[`take out the garbage every thursday`, `take out`, `garbage`, `every thursday`],
[`monitor subscription lifecycles`, `monitor`, `subscription lifecycle`, ``],
[`don't forget about monitoring subscription lifecycles`, `monitoring`, `subscription lifecycle`, ``],
[`use-case analysis project due by friday`, ``, ``, `due by friday`],
// [`charge phone before going to bed`, `charge`, `phone`, `before going to bed`], //tricky
[`remember to log hours for bookkeeping`, `log`, `hour`, ``],
[`this tuesday, buy a new microphone`, `buy`, `microphone`, `this tuesday`],
[`grab a new monitor when i'm shopping next weekend`, `grab`, `monitor`, `next weekend`],
[`don't forget to buy headphones before the flight`, `buy`, `headphone`, ``],
[`buy mangoes`, `buy`, `mango`, ``],
[`slide the cabinet door all the way closed before leaving`, `slide`, `cabinet door`, ``],
[`i gotta pay rent friday. don't let me forget`, `pay`, `rent`, `friday`],
[`make sure the chores are done by tuesday`, `make sure`, `chore`, `by tuesday`],
[`help hunter with the golf clubs this coming monday`, `help`, `golf club`, `this coming monday`],
[`turn down the birthday invite`, `turn down`, `birthday invite`, ``],
[`set all dials to repeat mode after this weekend`, `set`, `dial`, `after this weekend`],
[`ensure floors are clean before jin arrives`, `ensure`, `floor`, ``],
[`wash the floor each week after new years`, `wash`, `floor`, `each week after new years`],
[`remember to read that washington post article about affluenza`, `read`, `washington post article`, ``],
[`post a tweet about consumerism on april fools day`, `post`, `tweet`, `on april fools day`],
// [`i need to repay sandra for her dinner yesterday before april`, `repay`, `sandra`, `yesterday`],
[`i should remember the library books`, `remember`, `library book`, ``],
[`i should remember to eat more brocolli`, `eat`, `brocolli`, ``],
[`all the bills are what I need to pay by tuesday`, `bills`, `pay`, `by tuesday`],
]
arr.forEach(function (a) {
const doc = nlp(a[0])
// let verb = doc.verbs(0).out('reduced')
// t.equal(verb, a[1], a[0])
// let noun = doc
// .nouns(0)
// .toSingular()
// .out('reduced')
// t.equal(noun, a[2], a[0])
const date = doc.match('#Date+').first().out('reduced')
t.equal(date, a[3], a[0])
})
t.end()
})