ในการวิเคราะห์ข้อความส่วนหนึ่งและดึงข้อมูล
ในเอนทิตี ให้เรียกใช้ API การแยกเอนทิตี ML Kit ด้วยการส่งผ่าน
ข้อความไปยังเมธอด annotateText:completion:
โดยตรง นอกจากนี้คุณยังสามารถ
ส่งในออบเจ็กต์ EntityExtractionParams
ที่ไม่บังคับซึ่งมีออบเจ็กต์อื่น
ตัวเลือกการกำหนดค่า เช่น เวลาอ้างอิง เขตเวลา หรือ
ตัวกรองเพื่อจำกัดการค้นหากลุ่มย่อยของประเภทเอนทิตี
API จะแสดงรายการออบเจ็กต์ EntityAnnotation
ที่มีข้อมูลเกี่ยวกับเอนทิตีแต่ละรายการ
เนื้อหาตัวตรวจจับพื้นฐานการแยกเอนทิตีจะลิงก์แบบคงที่ในเวลาที่แสดงแอป ขนาดพื้นที่เพิ่มประมาณ 10.7 MB ลงในแอป
ลองเลย
- ลองใช้แอปตัวอย่างเพื่อ ดูตัวอย่างการใช้ API นี้
ก่อนเริ่มต้น
ใส่ไลบรารี ML Kit ต่อไปนี้ใน Podfile
pod 'GoogleMLKit/EntityExtraction', '3.2.0'
หลังจากติดตั้งหรืออัปเดตพ็อดของโปรเจ็กต์แล้ว ให้เปิดโปรเจ็กต์ Xcode โดยใช้ .xcworkspace ทั้งนี้ ML Kit ได้รับการรองรับใน Xcode เวอร์ชัน 13.2.1 ขึ้นไป
แยกเอนทิตีออกจากข้อความ
หากต้องการแยกเอนทิตีจากข้อความ ขั้นแรกให้สร้างออบเจ็กต์ EntityExtractorOptions
ด้วยการระบุภาษาและใช้ตัวเลือกดังกล่าวเพื่อสร้าง EntityExtractor
:
Swift
// Note: You can specify any of the 15 languages entity extraction supports here. let options = EntityExtractorOptions(modelIdentifier: EntityExtractionModelIdentifier.english) let entityExtractor = EntityExtractor.entityExtractor(options: options)
Objective-C
// Note: You can specify any of the 15 languages entity extraction supports here. MLKEntityExtractorOptions *options = [[MLKEntityExtractorOptions alloc] initWithModelIdentifier:MLKEntityExtractionModelIdentifierEnglish]; MLKEntityExtractor *entityExtractor = [MLKEntityExtractor entityExtractorWithOptions:options];
ขั้นตอนต่อไป ให้ตรวจสอบว่าได้ดาวน์โหลดโมเดลภาษาที่จำเป็นลงในอุปกรณ์แล้ว
Swift
entityExtractor.downloadModelIfNeeded(completion: { // If the error is nil, the download completed successfully. })
Objective-C
[entityExtractor downloadModelIfNeededWithCompletion:^(NSError *_Nullable error) { // If the error is nil, the download completed successfully. }];
เมื่อดาวน์โหลดโมเดลแล้ว ให้ส่งสตริงและ
MLKEntityExtractionParams
เป็นเมธอด annotate
Swift
// The EntityExtractionParams parameter is optional. Only instantiate and // configure one if you need to customize one or more of its params. var params = EntityExtractionParams() // The params object contains the following properties which can be customized on // each annotateText: call. Please see the class's documentation for a more // detailed description of what each property represents. params.referenceTime = Date(); params.referenceTimeZone = TimeZone(identifier: "GMT"); params.preferredLocale = Locale(identifier: "en-US"); params.typesFilter = Set([EntityType.address, EntityType.dateTime]) extractor.annotateText( text.string, params: params, completion: { result, error in // If the error is nil, the annotation completed successfully and any results // will be contained in the `result` array. } )
Objective-C
// The MLKEntityExtractionParams property is optional. Only instantiate and // configure one if you need to customize one or more of its params. MLKEntityExtractionParams *params = [[MLKEntityExtractionParams alloc] init]; // The params object contains the following properties which can be customized on // each annotateText: call. Please see the class's documentation for a fuller // description of what each property represents. params.referenceTime = [NSDate date]; params.referenceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; params.preferredLocale = [NSLocale localWithLocaleIdentifier:@"en-US"]; params.typesFilter = [NSSet setWithObjects:MLKEntityExtractionEntityTypeAddress, MLKEntityExtractionEntityTypeDateTime, nil]; [extractor annotateText:text.string withParams:params completion:^(NSArray*_Nullable result, NSError *_Nullable error) { // If the error is nil, the annotation completed successfully and any results // will be contained in the `result` array. }
วนซ้ำผลลัพธ์ของคำอธิบายประกอบเพื่อดึงข้อมูลเกี่ยวกับ เป็นเอนทิตีที่รู้จัก
Swift
// let annotations be the Array! returned from EntityExtractor for annotation in annotations { let entities = annotation.entities for entity in entities { switch entity.entityType { case EntityType.dateTime: guard let dateTimeEntity = entity.dateTimeEntity else { print("This field should be populated.") return } print("Granularity: %d", dateTimeEntity.dateTimeGranularity) print("DateTime: %@", dateTimeEntity.dateTime) case EntityType.flightNumber: guard let flightNumberEntity = entity.flightNumberEntity else { print("This field should be populated.") return } print("Airline Code: %@", flightNumberEntity.airlineCode) print("Flight number: %@", flightNumberEntity.flightNumber) case EntityType.money: guard let moneyEntity = entity.moneyEntity else { print("This field should be populated.") return } print("Currency: %@", moneyEntity.integerPart) print("Integer Part: %d", moneyEntity.integerPart) print("Fractional Part: %d", moneyEntity.fractionalPart) // Add additional cases as needed. default: print("Entity: %@", entity); } } }
Objective-C
NSArray*annotations; // Returned from EntityExtractor for (MLKEntityAnnotation *annotation in annotations) { NSArray *entities = annotation.entities; NSLog(@"Range: [%d, %d)", (int)annotation.range.location, (int)(annotation.range.location + annotation.range.length)); for (MLKEntity *entity in entities) { if ([entity.entityType isEqualToString:MLKEntityExtractionEntityTypeDateTime]) { MLKDateTimeEntity *dateTimeEntity = entity.dateTimeEntity; NSLog(@"Granularity: %d", (int)dateTimeEntity.dateTimeGranularity); NSLog(@"DateTime: %@", dateTimeEntity.dateTime); break; } else if ([entity.entityType isEqualToString:MLKEntityExtractionEntityTypeFlightNumber]) { MLKFlightNumberEntity *flightNumberEntity = entity.flightNumberEntity; NSLog(@"Airline Code: %@", flightNumberEntity.airlineCode); NSLog(@"Flight number: %@", flightNumberEntity.flightNumber); break; } else if ([entity.entityType isEqualToString:MLKEntityExtractionEntityTypeMoney]) { MLKMoneyEntity *moneyEntity = entity.moneyEntity; NSLog(@"Currency: %@", moneyEntity.unnormalizedCurrency); NSLog(@"Integer Part: %d", (int)moneyEntity.integerPart); NSLog(@"Fractional Part: %d", (int)moneyEntity.fractionalPart); break; } else { // Add additional cases as needed. NSLog(@"Entity: %@", entity); } }