自然言語テキストから日付の情報(複数可)を抽出するAppleScriptです。
URLやメールアドレスの抽出では、複数のデータをNSDataDetectorで抽出するAppleScriptは書いてありましたが、日付情報の抽出を行うものはなかったので、書いておきました。
AppleScript名:自然言語テキストから複数の日付情報(複数)を抽出して日付のリストを返す.scptd |
— – Created by: Takaaki Naganoya – Created on: 2020/01/21 — – Copyright © 2020 Piyomaru Software, All Rights Reserved — use AppleScript version "2.4" — Yosemite (10.10) or later use framework "Foundation" use scripting additions set theDate to getDatesIn("本テキストには次の火曜日という日付情報を含んでいる。明日かもしれない。次の木曜日もそうだ。") of me –> {date "2020年1月28日 火曜日 12:00:00", date "2020年1月22日 水曜日 12:00:00", date "2020年1月23日 木曜日 12:00:00"} set theDate to getDatesIn("This text contains next Tuesday. The date may be tomorrow. Next Wednesday happen.") of me –> {date "2020年1月28日 火曜日 12:00:00", date "2020年1月22日 水曜日 12:00:00", date "2020年1月29日 水曜日 12:00:00"} on getDatesIn(aString) set anNSString to current application’s NSString’s stringWithString:aString set theDetector to current application’s NSDataDetector’s dataDetectorWithTypes:(current application’s NSTextCheckingTypeDate) |error|:(missing value) set theMatchs to theDetector’s matchesInString:anNSString options:0 range:{0, anNSString’s |length|()} if theMatchs = missing value then error "No date found with String:" & aString set dRes to theMatchs’s valueForKeyPath:"date" return dRes as list end getDatesIn |
AppleScript名:自然言語テキストから複数の日付情報(複数)を抽出して日付と当該箇所のリストを返す v2.scptd |
— – Created by: Takaaki Naganoya – Created on: 2020/01/21 — – Copyright © 2020 Piyomaru Software, All Rights Reserved — use AppleScript version "2.4" — Yosemite (10.10) or later use framework "Foundation" use scripting additions set theDate to getDatesAndOrigStringsIn("本テキストには次の火曜日という日付情報を含んでいる。明日かもしれない。次の木曜日もそうだ。") of me –> {{originalStr:"次の火曜日", detectDate:date "2020年1月28日 火曜日 12:00:00"}, {originalStr:"明日", detectDate:date "2020年1月22日 水曜日 12:00:00"}, {originalStr:"次の木曜日", detectDate:date "2020年1月23日 木曜日 12:00:00"}} set theDate to getDatesAndOrigStringsIn("This text contains next Tuesday. The date may be tomorrow. Next Wednesday happen.") of me –> {{originalStr:"next Tuesday", detectDate:date "2020年1月28日 火曜日 12:00:00"}, {originalStr:"tomorrow", detectDate:date "2020年1月22日 水曜日 12:00:00"}, {originalStr:"Next Wednesday", detectDate:date "2020年1月29日 水曜日 12:00:00"}} on getDatesAndOrigStringsIn(aString) set anNSString to current application’s NSString’s stringWithString:aString set theDetector to current application’s NSDataDetector’s dataDetectorWithTypes:(current application’s NSTextCheckingTypeDate) |error|:(missing value) set theMatchs to theDetector’s matchesInString:anNSString options:0 range:{0, anNSString’s |length|()} if theMatchs = missing value then error "No date found with String:" & aString set dRes to (theMatchs’s valueForKeyPath:"date") as list set rRes to (theMatchs’s valueForKeyPath:"range") as list set allRes to {} set aLen to length of dRes repeat with i from 1 to aLen set aSubStr to (anNSString’s substringWithRange:(item i of rRes)) set dDate to contents of item i of dRes set the end of allRes to {originalStr:aSubStr as string, detectDate:dDate} end repeat return allRes end getDatesAndOrigStringsIn |
More from my site
(Visited 79 times, 1 visits today)