From bfeaff4f2d6b84c9057fb285f4ceffa849ba83c0 Mon Sep 17 00:00:00 2001 From: Justin Hamilton Date: Thu, 18 Jul 2024 20:39:43 -0400 Subject: [PATCH] Added natural language input --- Elsewhen.xcodeproj/project.pbxproj | 16 +- Elsewhen/Elements/DateTimeZoneSheet.swift | 205 ++++++++++++++++++++++ ML Models/DateTimePartTaggerModel.mlmodel | Bin 0 -> 448572 bytes 3 files changed, 220 insertions(+), 1 deletion(-) create mode 100644 ML Models/DateTimePartTaggerModel.mlmodel diff --git a/Elsewhen.xcodeproj/project.pbxproj b/Elsewhen.xcodeproj/project.pbxproj index a4d3020..c76de6d 100644 --- a/Elsewhen.xcodeproj/project.pbxproj +++ b/Elsewhen.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 43BDCD4E2C49ED2900C909A5 /* DateTimePartTaggerModel.mlmodel in Sources */ = {isa = PBXBuildFile; fileRef = 43BDCD4C2C49ED2900C909A5 /* DateTimePartTaggerModel.mlmodel */; }; + 43BDCD4F2C49ED2900C909A5 /* DateTimePartTaggerModel.mlmodel in Sources */ = {isa = PBXBuildFile; fileRef = 43BDCD4C2C49ED2900C909A5 /* DateTimePartTaggerModel.mlmodel */; }; 5E01E2F228621E8300782A37 /* NewTimeZoneGroupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E01E2F128621E8300782A37 /* NewTimeZoneGroupView.swift */; }; 5E05D0F0289479E600C46543 /* CustomTimeFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E05D0EF289479E600C46543 /* CustomTimeFormat.swift */; }; 5E05D0F128947B2200C46543 /* CustomTimeFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E05D0EF289479E600C46543 /* CustomTimeFormat.swift */; }; @@ -317,6 +319,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 43BDCD4C2C49ED2900C909A5 /* DateTimePartTaggerModel.mlmodel */ = {isa = PBXFileReference; lastKnownFileType = file.mlmodel; path = DateTimePartTaggerModel.mlmodel; sourceTree = ""; }; 5E01E2F128621E8300782A37 /* NewTimeZoneGroupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewTimeZoneGroupView.swift; sourceTree = ""; }; 5E05D0EF289479E600C46543 /* CustomTimeFormat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomTimeFormat.swift; sourceTree = ""; }; 5E07E846273475E300D9350E /* rainbow@3x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "rainbow@3x~ipad.png"; sourceTree = ""; }; @@ -567,6 +570,14 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 43BDCD4D2C49ED2900C909A5 /* ML Models */ = { + isa = PBXGroup; + children = ( + 43BDCD4C2C49ED2900C909A5 /* DateTimePartTaggerModel.mlmodel */, + ); + path = "ML Models"; + sourceTree = ""; + }; 5E07E8452734740300D9350E /* Icons */ = { isa = PBXGroup; children = ( @@ -653,8 +664,9 @@ 6378399B26EBF4750055A10D /* Discord Helper IntentsUI */, 6346AD5B26F3BF1300E406D0 /* MacElsewhen */, 6346AD6C26F3BF1400E406D0 /* MacElsewhenTests */, - 6346AD7626F3BF1400E406D0 /* MacElsewhenUITests */, 6378398D26EBF4750055A10D /* Frameworks */, + 43BDCD4D2C49ED2900C909A5 /* ML Models */, + 6346AD7626F3BF1400E406D0 /* MacElsewhenUITests */, 5EB23B9A26E406B600203153 /* Products */, ); sourceTree = ""; @@ -1360,6 +1372,7 @@ 63A90DD026F4295F00CACCB9 /* Bundle.swift in Sources */, 637839CB26ED11360055A10D /* TimeZone+ItemProvider.swift in Sources */, 5E5F42B827163E510022C7D1 /* Orientation.swift in Sources */, + 43BDCD4E2C49ED2900C909A5 /* DateTimePartTaggerModel.mlmodel in Sources */, 63BEF696271EE275000CAC95 /* NotRepresentativeWarning.swift in Sources */, 63C51BA726FA32D400145662 /* FavouriteIndicator.swift in Sources */, 5E9BD45126EEA11900383233 /* UserDefaults.swift in Sources */, @@ -1447,6 +1460,7 @@ 632F38DF274B882C00F0C064 /* StatusItemTabViewController.swift in Sources */, 63B5EF6D2720E62900AA576E /* Selectable.swift in Sources */, 632F38C62748341800F0C064 /* PreferencesViewController.swift in Sources */, + 43BDCD4F2C49ED2900C909A5 /* DateTimePartTaggerModel.mlmodel in Sources */, 63A90DE826F4D49E00CACCB9 /* MenuItemContents.swift in Sources */, 63BEF68C271EB9A1000CAC95 /* SearchBar.swift in Sources */, 5E48E3C328636CDE00F3613C /* FormatChoiceButton.swift in Sources */, diff --git a/Elsewhen/Elements/DateTimeZoneSheet.swift b/Elsewhen/Elements/DateTimeZoneSheet.swift index b4fcb05..1ce623c 100644 --- a/Elsewhen/Elements/DateTimeZoneSheet.swift +++ b/Elsewhen/Elements/DateTimeZoneSheet.swift @@ -6,9 +6,25 @@ // import SwiftUI +import CoreML +import NaturalLanguage struct DateTimeZoneSheet: View { + enum ErrorMessage { + case noDateDetected + case none + + var message: String { + switch self { + case .noDateDetected: + return "No date or time was detected in the input." + default: + return "An error occurred" + } + } + } + // MARK: Init arguments @Binding var selectedDate: Date @@ -20,6 +36,125 @@ struct DateTimeZoneSheet: View { // MARK: State @State private var showTimeZoneChoiceSheet: Bool = false + + + // MARK: Natural Language + @State private var naturalTextInput: String = "" + @State private var dataDetector: NSDataDetector! + @State private var relativeTimeClassifier: DateTimePartTaggerModel! + @State private var showingTextInput = false + + func parseRelativeTimeInput(input: String) { + do { + // Honestly I don't understand the NLModel and NLTagger blocks. + // This is what Apple's documentation said to do + let customModel = try NLModel(mlModel: relativeTimeClassifier.model) + let customTagScheme = NLTagScheme("RelativeDate") + + let tagger = NLTagger(tagSchemes: [.nameType, customTagScheme]) + tagger.string = input + tagger.setModels([customModel], forTagScheme: customTagScheme) + + var intervals: [String] = [] + var units: [String] = [] + // true = forward, false = backward + var direction = true + + // Iterate through detected tags + // * UNIT (i.e. 3 *minutes*) + // * INTERVAL (i.e. *3* minutes) + // * DIRECTION (i.e. "from now", "ago") + tagger.enumerateTags(in: input.startIndex.. i { + let unit = units[i] + + // Convert the unit string into a calendar component + guard let component = Calendar.Component.fromString(unit) else { + continue + } + + // Add the converted component * interval to the accumulated time + newDate = Calendar.current.date(byAdding: component, + value: parsed * (direction ? 1 : -1), + to: newDate) ?? newDate + } else { + break + } + } + + selectedDate = newDate + + } catch { + print(error) + self.showError(.none) + } + } + + func processNaturalTextInput(newValue: String) { + let matches = dataDetector.matches(in: newValue, range: NSMakeRange(0, newValue.count)) + // First check for dates + if let match = matches.first, let date = match.date { + selectedDate = date + } else { + // If no dates detected, check for relative time + parseRelativeTimeInput(input: newValue) + } + } + + // MARK: Error + @State var showingErrorAlert = false + @State var errorMessage: ErrorMessage = .none + + func showError(_ message: ErrorMessage) { + self.errorMessage = message + self.showingErrorAlert = true + } + #if os(macOS) @State private var isPresentingDatePopover: Bool = false @State private var showTimeZoneChoicePopover: Bool = false @@ -62,6 +197,12 @@ struct DateTimeZoneSheet: View { .datePickerStyle(.compact) .labelsHidden() #endif + Button(action: { + naturalTextInput = "" + showingTextInput = true + }) { + Image(systemName: "keyboard") + } Button(action: { withAnimation { selectedDate = Date() @@ -120,6 +261,38 @@ struct DateTimeZoneSheet: View { } .padding([.horizontal, .bottom]) .padding(.top, 10) + .onAppear { + do { + // initialize data detector and ML model + dataDetector = try NSDataDetector(types: NSTextCheckingResult.CheckingType.date.rawValue) + relativeTimeClassifier = try DateTimePartTaggerModel(configuration: MLModelConfiguration()) + } catch { + print(error) + self.showError(.none) + } + } + .alert("Error", isPresented: $showingErrorAlert, actions: { + Button(action: { + errorMessage = .none + }, label: { + Text("OK") + }) + }, message: { + Text(errorMessage.message) + }) + .alert("Enter Time", isPresented: $showingTextInput, actions: { + Button(action: { + withAnimation { + processNaturalTextInput(newValue: naturalTextInput) + } + }, label: { + Text("OK") + }) + Button(role: .cancel, action: {}, label: { + Text("Cancel") + }) + TextField("Type A Time", text: $naturalTextInput) + }) #if os(iOS) .sheet(isPresented: $showTimeZoneChoiceSheet) { NavigationView { @@ -147,3 +320,35 @@ struct DateTimeZoneSheet_Previews: PreviewProvider { DateTimeZoneSheet(selectedDate: .constant(Date()), selectedTimeZone: .constant(nil), selectedTimeZones: .constant([]), selectedTimeZoneGroup: .constant(nil), multipleTimeZones: false) } } + +extension Calendar.Component { + static func fromString(_ string: String) -> Calendar.Component? { + guard let first = string.lowercased().first else { + return nil + } + + // We're checking the first letter of the unit string to determine its type + switch first { + case "s": + return .second + case "m": + // "m" can be Minute or Month so check the second letter + let start = string.index(string.startIndex, offsetBy: 1) + guard string.count >= 2 else { + return .minute + } + let second = string.lowercased()[start...start] + return (second == "o") ? .month : .minute + case "h": + return .hour + case "d": + return .day + case "w": + return .weekOfYear + case "y": + return .year + default: + return nil + } + } +} diff --git a/ML Models/DateTimePartTaggerModel.mlmodel b/ML Models/DateTimePartTaggerModel.mlmodel new file mode 100644 index 0000000000000000000000000000000000000000..230225989bca6fe81a91cbd0305b3ae059323c40 GIT binary patch literal 448572 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