Hızlı başlangıç: Content Moderator istemci kitaplığını kullanma
.NET için Azure Content Moderator istemci kitaplığı 'nı kullanmaya başlayın. NuGet paketini yüklemek için bu adımları izleyin ve temel görevler için örnek kodu deneyin.
Content Moderator, rahatsız edici, riskli veya başka türlü istenmeyen içerikleri işlemenize imkan tanıyan bir AI hizmetidir. Metin, resim ve videoları taramak ve içerik bayraklarını otomatik olarak uygulamak için AI destekli içerik denetleme hizmetini kullanın. Ardından, bir insan gözden geçirenler ekibi için çevrimiçi bir moderatör ortamı olan gözden geçirme aracı ile uygulamanızı tümleştirin. Yönetmeliklerle uyum sağlamak veya kullanıcılarınız için amaçlanan ortamı sürdürmek üzere uygulamanıza içerik filtreleme yazılımı oluşturun.
.NET için Content Moderator istemci kitaplığı 'nı kullanın:
- Orta metin
- Orta görüntüler
- İnceleme oluştur
Başvuru belgeleri | Kitaplık kaynak kodu | Paket (NuGet) | Örnekler
Önkoşullar
- Azure aboneliği- ücretsiz olarak bir tane oluşturun
- Visual STUDIO IDE veya .NET Core'un geçerli sürümü.
- Azure aboneliğiniz olduktan sonra, anahtarınızı ve uç noktanızı almak için Azure Portal bir Content Moderator kaynağı oluşturun Content moderator bir kaynak oluşturun. Dağıtım için bekleyin ve Kaynağa Git düğmesine tıklayın.
- Uygulamanızı Content Moderator bağlamak için oluşturduğunuz kaynaktaki anahtar ve uç nokta gerekir. Anahtarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz.
F0Hizmeti denemek ve daha sonra üretime yönelik ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını () kullanabilirsiniz.
Ayarlanıyor
Yeni bir C# uygulaması oluşturma
Visual Studio 'yu kullanarak yeni bir .NET Core uygulaması oluşturun.
İstemci kitaplığını yükler
Yeni bir proje oluşturduktan sonra, Çözüm Gezgini proje çözümüne sağ tıklayıp NuGet Paketlerini Yönet' i seçerek istemci kitaplığını yükleyebilirsiniz. Açılan paket yöneticisinde, Seç ' i seçin, ön sürümü dahil et ' i işaretleyin ve arama yapın Microsoft.Azure.CognitiveServices.ContentModerator . Sürüm 2.0.0 ' ü ve ardından öğesini seçin.
İpucu
Tüm hızlı başlangıç kodu dosyasını aynı anda görüntülemek mi istiyorsunuz? Bu hızlı başlangıçta kod örneklerini içeren GitHub'da bulabilirsiniz.
Proje dizininden, tercih ettiğiniz düzenleyicide veya IDE 'de program. cs dosyasını açın. Aşağıdaki using deyimlerini ekleyin:
using Microsoft.Azure.CognitiveServices.ContentModerator;
using Microsoft.Azure.CognitiveServices.ContentModerator.Models;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading;
Program sınıfında, kaynağınızın anahtarı ve uç noktası için değişkenler oluşturun.
Önemli
Azure portala gidin. Önkoşullar bölümünde oluşturduğunuz Content moderator kaynak başarıyla dağıtılırsa, sonraki adımlar altında Kaynağa Git düğmesine tıklayın. Anahtar ve uç noktanızı kaynağın anahtar ve uç nokta sayfasında, kaynak yönetimi altında bulabilirsiniz.
İşiniz bittiğinde kodu koddan kaldırmayı unutmayın ve hiçbir zaman herkese açık bir şekilde nakletmeyin. Üretim için, kimlik bilgilerinizi depolamak ve bunlara erişmek için güvenli bir yol kullanmayı düşünün. Daha fazla bilgi için bilişsel Hizmetler güvenlik makalesine bakın.
// Your Content Moderator subscription key is found in your Azure portal resource on the 'Keys' page.
private static readonly string SubscriptionKey = "PASTE_YOUR_CONTENT_MODERATOR_SUBSCRIPTION_KEY_HERE";
// Base endpoint URL. Found on 'Overview' page in Azure resource. For example: https://westus.api.cognitive.microsoft.com
private static readonly string Endpoint = "PASTE_YOUR_CONTENT_MODERATOR_ENDPOINT_HERE";
Uygulamanın main() yönteminde, bu hızlı başlangıçta kullanılan yöntemlere çağrılar ekleyin. Bunları daha sonra oluşturacaksınız.
// Create an image review client
ContentModeratorClient clientImage = Authenticate(SubscriptionKey, Endpoint);
// Create a text review client
ContentModeratorClient clientText = Authenticate(SubscriptionKey, Endpoint);
// Create a human reviews client
ContentModeratorClient clientReviews = Authenticate(SubscriptionKey, Endpoint);
// Moderate text from text in a file
ModerateText(clientText, TextFile, TextOutputFile);
// Moderate images from list of image URLs
ModerateImages(clientImage, ImageUrlFile, ImageOutputFile);
// Create image reviews for human reviewers
CreateReviews(clientReviews, IMAGE_URLS_FOR_REVIEW, TEAM_NAME, ReviewsEndpoint);
Nesne modeli
Aşağıdaki sınıflar Content Moderator .NET istemci kitaplığının bazı önemli özelliklerini işler.
| Ad | Açıklama |
|---|---|
| ContentModeratorClient | Bu sınıf tüm Content Moderator işlevleri için gereklidir. Bunu Abonelik bilgileriniz ile birlikte başlatır ve diğer sınıfların örneklerini oluşturmak için kullanırsınız. |
| Imagedenetlemesi | Bu sınıf yetişkinlere yönelik içerik, kişisel bilgiler veya insan yüzeyleri için görüntüleri analiz etmek üzere işlevsellik sağlar. |
| Textdenetlemesi | Bu sınıf, dil, küfür, hatalar ve kişisel bilgiler için metin çözümleme işlevlerini sağlar. |
| İncelemeler | Bu sınıf, iş oluşturma, özel iş akışları ve insan incelemeleri için yöntemler de dahil olmak üzere, gözden geçirme API 'lerinin işlevlerini sağlar. |
Kod örnekleri
Bu kod parçacıkları, .NET için Content Moderator istemci kitaplığı ile aşağıdaki görevlerin nasıl yapılacağını gösterir:
İstemcinin kimliğini doğrulama
Yeni bir yöntemde, uç nokta ve anahtarınızla istemci nesneleri oluşturun.
public static ContentModeratorClient Authenticate(string key, string endpoint)
{
ContentModeratorClient client = new ContentModeratorClient(new ApiKeyServiceClientCredentials(key));
client.Endpoint = endpoint;
return client;
}
Orta metin
Aşağıdaki kod, bir metin gövdesini çözümlemek ve sonuçları konsola yazdırmak için bir Content Moderator istemcisi kullanır. Program sınıfınızın kökünde, giriş ve çıkış dosyalarını tanımlayın:
// TEXT MODERATION
// Name of the file that contains text
private static readonly string TextFile = "TextFile.txt";
// The name of the file to contain the output from the evaluation.
private static string TextOutputFile = "TextModerationOutput.txt";
Ardından, projenizin kökünde bir TextFile.txt dosyası ekleyin. Bu dosyaya kendi metninizi ekleyin veya aşağıdaki örnek metni kullanın:
Is this a grabage email abcdef@abcd.com, phone: 4255550111, IP: 255.255.255.255, 1234 Main Boulevard, Panapolis WA 96555.
Crap is the profanity here. Is this information PII? phone 4255550111
Ardından, Program sınıfınıza bir yerde metin denetleme yöntemi tanımlayın:
/*
* TEXT MODERATION
* This example moderates text from file.
*/
public static void ModerateText(ContentModeratorClient client, string inputFile, string outputFile)
{
Console.WriteLine("--------------------------------------------------------------");
Console.WriteLine();
Console.WriteLine("TEXT MODERATION");
Console.WriteLine();
// Load the input text.
string text = File.ReadAllText(inputFile);
// Remove carriage returns
text = text.Replace(Environment.NewLine, " ");
// Convert string to a byte[], then into a stream (for parameter in ScreenText()).
byte[] textBytes = Encoding.UTF8.GetBytes(text);
MemoryStream stream = new MemoryStream(textBytes);
Console.WriteLine("Screening {0}...", inputFile);
// Format text
// Save the moderation results to a file.
using (StreamWriter outputWriter = new StreamWriter(outputFile, false))
{
using (client)
{
// Screen the input text: check for profanity, classify the text into three categories,
// do autocorrect text, and check for personally identifying information (PII)
outputWriter.WriteLine("Autocorrect typos, check for matching terms, PII, and classify.");
// Moderate the text
var screenResult = client.TextModeration.ScreenText("text/plain", stream, "eng", true, true, null, true);
outputWriter.WriteLine(JsonConvert.SerializeObject(screenResult, Formatting.Indented));
}
outputWriter.Flush();
outputWriter.Close();
}
Console.WriteLine("Results written to {0}", outputFile);
Console.WriteLine();
}
Orta görüntüler
Aşağıdaki kod, Yetişkin ve kcy içeriği için uzak görüntüleri çözümlemek üzere bir ımagemoderasyonu nesnesiyle birlikte bir Content moderator istemcisi kullanır.
Not
Yerel görüntünün içeriğini de çözümleyebilirsiniz. Yerel görüntülerle çalışan Yöntemler ve işlemler için başvuru belgelerine bakın.
Örnek görüntüleri al
Giriş ve çıkış dosyalarınızı Program sınıfınızın kökünde tanımlayın:
// IMAGE MODERATION
//The name of the file that contains the image URLs to evaluate.
private static readonly string ImageUrlFile = "ImageFiles.txt";
// The name of the file to contain the output from the evaluation.
private static string ImageOutputFile = "ImageModerationOutput.json";
Daha sonra projenizin kökünde ImageFiles.txt giriş dosyasını oluşturun. Bu dosyada, — her satırda BIR URL 'yi çözümlemek için görüntülerin URL 'lerini eklersiniz. Aşağıdaki örnek görüntüleri kullanabilirsiniz:
https://moderatorsampleimages.blob.core.windows.net/samples/sample2.jpg
https://moderatorsampleimages.blob.core.windows.net/samples/sample5.png
Yardımcı sınıfı tanımla
Program sınıfına aşağıdaki sınıf tanımını ekleyin. Bu iç sınıf, görüntü denetleme sonuçlarını işleyecek.
// Contains the image moderation results for an image,
// including text and face detection results.
public class EvaluationData
{
// The URL of the evaluated image.
public string ImageUrl;
// The image moderation results.
public Evaluate ImageModeration;
// The text detection results.
public OCR TextDetection;
// The face detection results;
public FoundFaces FaceDetection;
}
Görüntü denetleme yöntemini tanımlama
Aşağıdaki yöntem bir metin dosyasındaki görüntü URL 'Lerinde yinelenir, bir EvaluationData örneği oluşturur ve yetişkinlere/rampaiçeriği, metin ve insan yüzeyleri için görüntüyü analiz eder. Ardından, son EvaluationData örneğini bir listeye ekler ve döndürülen verilerin tüm listesini konsola yazar.
Görüntüler arasında yineleme
/*
* IMAGE MODERATION
* This example moderates images from URLs.
*/
public static void ModerateImages(ContentModeratorClient client, string urlFile, string outputFile)
{
Console.WriteLine("--------------------------------------------------------------");
Console.WriteLine();
Console.WriteLine("IMAGE MODERATION");
Console.WriteLine();
// Create an object to store the image moderation results.
List<EvaluationData> evaluationData = new List<EvaluationData>();
using (client)
{
// Read image URLs from the input file and evaluate each one.
using (StreamReader inputReader = new StreamReader(urlFile))
{
while (!inputReader.EndOfStream)
{
string line = inputReader.ReadLine().Trim();
if (line != String.Empty)
{
Console.WriteLine("Evaluating {0}...", Path.GetFileName(line));
var imageUrl = new BodyModel("URL", line.Trim());
İçeriği analiz etme
Ekranları Content Moderator görüntü öznitelikleri hakkında daha fazla bilgi için bkz. görüntü denetleme kavramları Kılavuzu.
var imageData = new EvaluationData
{
ImageUrl = imageUrl.Value,
// Evaluate for adult and racy content.
ImageModeration =
client.ImageModeration.EvaluateUrlInput("application/json", imageUrl, true)
};
Thread.Sleep(1000);
// Detect and extract text.
imageData.TextDetection =
client.ImageModeration.OCRUrlInput("eng", "application/json", imageUrl, true);
Thread.Sleep(1000);
// Detect faces.
imageData.FaceDetection =
client.ImageModeration.FindFacesUrlInput("application/json", imageUrl, true);
Thread.Sleep(1000);
// Add results to Evaluation object
evaluationData.Add(imageData);
}
}
}
Dosyaya denetleme sonuçları yaz
// Save the moderation results to a file.
using (StreamWriter outputWriter = new StreamWriter(outputFile, false))
{
outputWriter.WriteLine(JsonConvert.SerializeObject(
evaluationData, Formatting.Indented));
outputWriter.Flush();
outputWriter.Close();
}
Console.WriteLine();
Console.WriteLine("Image moderation results written to output file: " + outputFile);
Console.WriteLine();
}
}
İnceleme oluştur
Content Moderator .NET istemci kitaplığını kullanarak, insan yöneticileri tarafından gözden geçirebilmeleri için içeriği Gözden geçirme aracında bulabilirsiniz. Inceleme aracı hakkında daha fazla bilgi edinmek için bkz. İnceleme aracı kavramsal Kılavuzu.
Bu bölümdeki Yöntem, gözden geçirme oluşturmak, KIMLIĞINI almak ve gözden geçirme aracının Web portalı aracılığıyla insan girişini aldıktan sonra ayrıntılarını denetlemek için İncelemeleri sınıfını kullanır. Tüm bu bilgileri bir çıktı metin dosyasında günlüğe kaydeder.
Örnek görüntüleri al
Program sınıfınızın kökünde aşağıdaki diziyi bildirin. Bu değişken, gözden geçirmeyi oluşturmak için kullanılacak örnek bir görüntüye başvurur.
// The list of URLs of the images to create review jobs for.
private static readonly string[] IMAGE_URLS_FOR_REVIEW = new string[] { "https://moderatorsampleimages.blob.core.windows.net/samples/sample5.png" };
İnceleme kimlik bilgilerini al
İnceleme aracında oturum açın ve takımınızın adını alın. Ardından, Program sınıfındaki uygun değişkene atayın. İsteğe bağlı olarak, gözden geçirme etkinliği üzerinde güncelleştirmeleri almak için bir geri çağırma uç noktası ayarlayabilirsiniz.
// The name of the team to assign the review to. Must be the team name used to create your Content Moderator website account.
// If you do not yet have an account, follow this: https://docs.microsoft.com/en-us/azure/cognitive-services/content-moderator/quick-start
// Select the gear symbol (settings)-->Credentials to retrieve it. Your team name is the Id associated with your subscription.
private static readonly string TEAM_NAME = "CONTENT_MODERATOR_TEAM_NAME";
// The callback endpoint for completed human reviews.
// For example: https://westus.api.cognitive.microsoft.com/contentmoderator/review/v1.0
// As reviewers complete reviews, results are sent using an HTTP POST request.
private static readonly string ReviewsEndpoint = "CONTENT_MODERATOR_REVIEWS_ENDPOINT";
Yardımcı sınıfı tanımla
Aşağıdaki sınıf tanımını Program sınıfınız içine ekleyin. Bu sınıf, gözden geçirme aracına gönderilen tek bir gözden geçirme örneğini temsil etmek için kullanılacaktır.
// Associates the review ID (assigned by the service) to the internal.
public class ReviewItem
{
// The media type for the item to review.
public string Type;
// The URL of the item to review.
public string Url;
// The internal content ID for the item to review.
public string ContentId;
// The ID that the service assigned to the review.
public string ReviewId;
}
Helper metodunu tanımla
Program sınıfına aşağıdaki yöntemi ekleyin. Bu yöntem, gözden geçirme sorgularının sonuçlarını çıktı metin dosyasına yazar.
// Helper function that writes a message to the log file, and optionally to the console.
// If echo is set to true, details will be written to the console.
private static void WriteLine(TextWriter writer, string message = null, bool echo = true)
{
writer.WriteLine(message ?? String.Empty);
if (echo) { Console.WriteLine(message ?? String.Empty); }
}
İnceleme oluşturma yöntemini tanımlayın
Şimdi, gözden geçirme oluşturma ve sorgulama işleyecek yöntemi tanımlamaya hazır olursunuz. Yeni bir yöntem, Createreviews ekleyin ve aşağıdaki yerel değişkenleri tanımlayın.
// Create the reviews using the fixed list of images.
private static void CreateReviews(ContentModeratorClient client, string[] ImageUrls, string teamName, string endpoint)
{
Console.WriteLine("--------------------------------------------------------------");
Console.WriteLine();
Console.WriteLine("CREATE HUMAN IMAGE REVIEWS");
// The minimum amount of time, in milliseconds, to wait between calls to the Image List API.
const int throttleRate = 2000;
// The number of seconds to delay after a review has finished before getting the review results from the server.
const int latencyDelay = 45;
// The name of the log file to create. Relative paths are relative to the execution directory.
const string OutputFile = "OutputLog.txt";
// The optional name of the subteam to assign the review to. Not used for this example.
const string Subteam = null;
// The media type for the item to review. Valid values are "image", "text", and "video".
const string MediaType = "image";
// The metadata key to initially add to each review item. This is short for 'score'.
// It will enable the keys to be 'a' (adult) and 'r' (racy) in the response,
// with a value of true or false if the human reviewer marked them as adult and/or racy.
const string MetadataKey = "sc";
// The metadata value to initially add to each review item.
const string MetadataValue = "true";
// A static reference to the text writer to use for logging.
TextWriter writer;
// The cached review information, associating a local content ID to the created review ID for each item.
List<ReviewItem> reviewItems = new List<ReviewItem>();
Inceleme aracında incelemeler gönderi
Ardından, belirtilen örnek görüntüler arasında yinelemek için aşağıdaki kodu ekleyin, meta verileri ekleyin ve tek bir toplu işte Inceleme aracına gönderin.
using (TextWriter outputWriter = new StreamWriter(OutputFile, false))
{
writer = outputWriter;
WriteLine(writer, null, true);
WriteLine(writer, "Creating reviews for the following images:", true);
// Create the structure to hold the request body information.
List<CreateReviewBodyItem> requestInfo = new List<CreateReviewBodyItem>();
// Create some standard metadata to add to each item.
List<CreateReviewBodyItemMetadataItem> metadata =
new List<CreateReviewBodyItemMetadataItem>(new CreateReviewBodyItemMetadataItem[]
{ new CreateReviewBodyItemMetadataItem(MetadataKey, MetadataValue) });
// Populate the request body information and the initial cached review information.
for (int i = 0; i < ImageUrls.Length; i++)
{
// Cache the local information with which to create the review.
var itemInfo = new ReviewItem()
{
Type = MediaType,
ContentId = i.ToString(),
Url = ImageUrls[i],
ReviewId = null
};
WriteLine(writer, $" {Path.GetFileName(itemInfo.Url)} with id = {itemInfo.ContentId}.", true);
// Add the item informaton to the request information.
requestInfo.Add(new CreateReviewBodyItem(itemInfo.Type, itemInfo.Url, itemInfo.ContentId, endpoint, metadata));
// Cache the review creation information.
reviewItems.Add(itemInfo);
}
var reviewResponse = client.Reviews.CreateReviewsWithHttpMessagesAsync("application/json", teamName, requestInfo);
API çağrısından döndürülen nesne, karşıya yüklenen her resim için benzersiz KIMLIK değerleri içerir. Aşağıdaki kod, bu kimlikleri ayrıştırır ve sonra toplu işteki her bir görüntünün durumu için Content Moderator sorgulamak üzere kullanır.
// Update the local cache to associate the created review IDs with the associated content.
var reviewIds = reviewResponse.Result.Body;
for (int i = 0; i < reviewIds.Count; i++) { reviewItems[i].ReviewId = reviewIds[i]; }
WriteLine(outputWriter, JsonConvert.SerializeObject(reviewIds, Formatting.Indented));
Thread.Sleep(throttleRate);
// Get details of the reviews created that were sent to the Content Moderator website.
WriteLine(outputWriter, null, true);
WriteLine(outputWriter, "Getting review details:", true);
foreach (var item in reviewItems)
{
var reviewDetail = client.Reviews.GetReviewWithHttpMessagesAsync(teamName, item.ReviewId);
WriteLine(outputWriter, $"Review {item.ReviewId} for item ID {item.ContentId} is " +
$"{reviewDetail.Result.Body.Status}.", true);
WriteLine(outputWriter, JsonConvert.SerializeObject(reviewDetail.Result.Body, Formatting.Indented));
Thread.Sleep(throttleRate);
}
İnceleme ayrıntılarını al
Aşağıdaki kod programın kullanıcı girişini beklemesine neden olur. Çalışma zamanında bu adıma gittiğinizde, Gözden geçirme aracına kendiniz gidebilir, örnek görüntünün karşıya yüklendiğini ve bununla etkileşime geçebilirsiniz. Bir gözden geçirime nasıl etkileşim kuracağınızı öğrenmek için bkz. nasıl yapılır Kılavuzu. İşiniz bittiğinde programa devam etmek ve İnceleme işleminin sonuçlarını almak için herhangi bir tuşa basabilirsiniz.
Console.WriteLine();
Console.WriteLine("Perform manual reviews on the Content Moderator site.");
Console.WriteLine("Then, press any key to continue.");
Console.ReadKey();
// After the human reviews, the results are confirmed.
Console.WriteLine();
Console.WriteLine($"Waiting {latencyDelay} seconds for results to propagate.");
Thread.Sleep(latencyDelay * 1000);
// Get details from the human review.
WriteLine(writer, null, true);
WriteLine(writer, "Getting review details:", true);
foreach (var item in reviewItems)
{
var reviewDetail = client.Reviews.GetReviewWithHttpMessagesAsync(teamName, item.ReviewId);
WriteLine(writer, $"Review {item.ReviewId} for item ID {item.ContentId} is " + $"{reviewDetail.Result.Body.Status}.", true);
WriteLine(outputWriter, JsonConvert.SerializeObject(reviewDetail.Result.Body, Formatting.Indented));
Thread.Sleep(throttleRate);
}
Console.WriteLine();
Console.WriteLine("Check the OutputLog.txt file for results of the review.");
writer = null;
outputWriter.Flush();
outputWriter.Close();
}
Console.WriteLine("--------------------------------------------------------------");
}
Bu senaryoda bir geri çağırma uç noktası kullandıysanız, bu biçimde bir olay almalıdır:
{'callback_endpoint': 'https://requestb.in/qmsakwqm',
'content': '',
'content_id': '3ebe16cb-31ed-4292-8b71-1dfe9b0e821f',
'created_by': 'cspythonsdk',
'metadata': [{'key': 'sc', 'value': 'True'}],
'review_id': '201901i14682e2afe624fee95ebb248643139e7',
'reviewer_result_tags': [{'key': 'a', 'value': 'True'},
{'key': 'r', 'value': 'True'}],
'status': 'Complete',
'sub_team': 'public',
'type': 'Image'}
Uygulamayı çalıştırma
IDE penceresinin en üstündeki Hata Ayıkla düğmesine tıklayarak uygulamayı çalıştırın.
Kaynakları temizleme
Bilişsel hizmetler aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, onunla ilişkili diğer tüm kaynakları da siler.
Sonraki adımlar
Bu hızlı başlangıçta, Content Moderator .NET kitaplığını kullanarak denetleme görevlerini nasıl kullanacağınızı öğrendiniz. Daha sonra, bir kavramsal kılavuz okuyarak görüntülerin veya diğer ortamların denetimi hakkında daha fazla bilgi edinin.
Java için Azure Content Moderator istemci kitaplığı 'nı kullanmaya başlayın. Maven paketini yüklemek için bu adımları izleyin ve temel görevler için örnek kodu deneyin.
Content Moderator, rahatsız edici, riskli veya başka türlü istenmeyen içerikleri işlemenize imkan tanıyan bir AI hizmetidir. Metin, resim ve videoları taramak ve içerik bayraklarını otomatik olarak uygulamak için AI destekli içerik denetleme hizmetini kullanın. Yönetmeliklerle uyum sağlamak veya kullanıcılarınız için amaçlanan ortamı sürdürmek üzere uygulamanıza içerik filtreleme yazılımı oluşturun.
Java için Content Moderator istemci kitaplığını kullanarak şunları yapın:
- Orta metin
- Orta görüntüler
Başvuru belgeleri | Kitaplık kaynak kodu | Yapıt (Maven) | Örnekler
Önkoşullar
- Azure aboneliği- ücretsiz olarak bir tane oluşturun
- Java Development Kit 'in (JDK) geçerli sürümü
- Gradle yapı aracıveya başka bir bağımlılık Yöneticisi.
- Azure aboneliğiniz olduktan sonra, anahtarınızı ve uç noktanızı almak için Azure Portal bir Content Moderator kaynağı oluşturun Content moderator bir kaynak oluşturun. Dağıtım için bekleyin ve Kaynağa Git düğmesine tıklayın.
- Uygulamanızı Content Moderator bağlamak için oluşturduğunuz kaynaktaki anahtar ve uç nokta gerekir. Anahtarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz.
F0Hizmeti denemek ve daha sonra üretime yönelik ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını () kullanabilirsiniz.
Ayarlanıyor
Yeni bir Gradle projesi oluşturma
Konsol penceresinde (cmd, PowerShell veya Bash gibi), uygulamanız için yeni bir dizin oluşturun ve bu uygulamaya gidin.
mkdir myapp && cd myapp
gradle initÇalışma dizininizden komutunu çalıştırın. Bu komut, uygulamanızı oluşturmak ve yapılandırmak için çalışma zamanında kullanılan Build. Gradle. kts de dahil olmak üzere Gradle için temel derleme dosyaları oluşturur.
gradle init --type basic
Bir DSL seçmeniz Istendiğinde, Kotlin' ı seçin.
İstemci kitaplığını yükler
Build. Gradle. kts ' i bulun ve tercıh ettiğiniz IDE veya metin düzenleyicinizle açın. Ardından aşağıdaki derleme yapılandırması içine kopyalayın. Bu yapılandırma, bir Java uygulaması olarak projeyi, giriş noktası Contentmoderatorhızlı başlangıç sınıfı olan bir Java uygulaması olarak tanımlar. JSON serileştirme için Content Moderator istemci kitaplığı ve GSON SDK 'sini içeri aktarır.
plugins {
java
application
}
application{
mainClassName = "ContentModeratorQuickstart"
}
repositories{
mavenCentral()
}
dependencies{
compile(group = "com.microsoft.azure.cognitiveservices", name = "azure-cognitiveservices-contentmoderator", version = "1.0.2-beta")
compile(group = "com.google.code.gson", name = "gson", version = "2.8.5")
}
Java dosyası oluşturma
Çalışma dizininizden bir proje kaynak klasörü oluşturmak için aşağıdaki komutu çalıştırın:
mkdir -p src/main/java
Yeni klasöre gidin ve Contentmoderatorquickstart. Java adlı bir dosya oluşturun. Bunu tercih ettiğiniz düzenleyicide veya IDE 'de açın ve aşağıdaki deyimleri ekleyin import :
import com.google.gson.*;
import com.microsoft.azure.cognitiveservices.vision.contentmoderator.*;
import com.microsoft.azure.cognitiveservices.vision.contentmoderator.models.*;
import java.io.*;
import java.util.*;
import java.util.concurrent.*;
İpucu
Tüm hızlı başlangıç kodu dosyasını aynı anda görüntülemek mi istiyorsunuz? Bu hızlı başlangıçta kod örneklerini içeren GitHub'da bulabilirsiniz.
Uygulamanın Contentmoderatorquickstart sınıfında, kaynağınızın anahtarı ve uç noktası için değişkenler oluşturun.
private static final String subscriptionKey = "<your-subscription-key>";
private static final String endpoint = "<your-api-endpoint>";
Önemli
Azure portala gidin. Önkoşullar bölümünde oluşturduğunuz Content moderator kaynak başarıyla dağıtılırsa, sonraki adımlar altında Kaynağa Git düğmesine tıklayın. Anahtar ve uç noktanızı kaynağın anahtar ve uç nokta sayfasında, kaynak yönetimi altında bulabilirsiniz.
İşiniz bittiğinde kodu koddan kaldırmayı unutmayın ve hiçbir zaman herkese açık bir şekilde nakletmeyin. Üretim için, kimlik bilgilerinizi depolamak ve bunlara erişmek için güvenli bir yol kullanmayı düşünün. Daha fazla bilgi için bilişsel Hizmetler güvenlik makalesine bakın.
Uygulamanın Main yönteminde, bu hızlı başlangıçta kullanılan yöntemlere çağrılar ekleyin. Bu yöntemleri daha sonra tanımlayacaksınız.
// Create a List in which to store the image moderation results.
List<EvaluationData> evaluationData = new ArrayList<EvaluationData>();
// Moderate URL images
moderateImages(client, evaluationData);
// Moderate text from file
moderateText(client);
// Create a human review
humanReviews(client);
Nesne modeli
Aşağıdaki sınıflar Content Moderator Java istemci kitaplığı 'nın bazı önemli özelliklerini işler.
| Ad | Açıklama |
|---|---|
| ContentModeratorClient | Bu sınıf tüm Content Moderator işlevleri için gereklidir. Bunu Abonelik bilgileriniz ile birlikte başlatır ve diğer sınıfların örneklerini oluşturmak için kullanırsınız. |
| Imagedenetlemesi | Bu sınıf yetişkinlere yönelik içerik, kişisel bilgiler veya insan yüzeyleri için görüntüleri analiz etmek üzere işlevsellik sağlar. |
| Metin Moderations | Bu sınıf, dil, küfür, hatalar ve kişisel bilgiler için metin çözümleme işlevlerini sağlar. |
| İncelemeler | Bu sınıf, iş oluşturma, özel iş akışları ve insan incelemeleri için yöntemler de dahil olmak üzere, gözden geçirme API 'lerinin işlevlerini sağlar. |
Kod örnekleri
Bu kod parçacıkları, Java için Content Moderator istemci kitaplığı ile aşağıdaki görevlerin nasıl yapılacağını gösterir:
İstemcinin kimliğini doğrulama
Uygulamanın main yönteminde, abonelik uç noktası değerini ve abonelik anahtarınızı kullanarak bir Contentmoderatorclient nesnesi oluşturun.
// Set CONTENT_MODERATOR_SUBSCRIPTION_KEY in your environment settings, with
// your key as its value.
// Set COMPUTER_MODERATOR_ENDPOINT in your environment variables with your Azure
// endpoint.
ContentModeratorClient client = ContentModeratorManager.authenticate(AzureRegionBaseUrl.fromString(endpoint),
"CONTENT_MODERATOR_SUBSCRIPTION_KEY");
Orta metin
Örnek metin ayarlama
Contentmoderatorhızlı başlangıç sınıfınızın en üstünde, bir yerel metin dosyasına bir başvuru tanımlayın. Proje dizininize bir. txt dosyası ekleyin ve çözümlemek istediğiniz metni girin.
// TEXT MODERATION variable
private static File textFile = new File("src\\main\\resources\\TextModeration.txt");
Metni çözümle
. Txt dosyasını okuyan ve her satırda Screentext yöntemini çağıran yeni bir yöntem oluşturun.
public static void moderateText(ContentModeratorClient client) {
System.out.println("---------------------------------------");
System.out.println("MODERATE TEXT");
System.out.println();
try (BufferedReader inputStream = new BufferedReader(new FileReader(textFile))) {
String line;
Screen textResults = null;
// For formatting the printed results
Gson gson = new GsonBuilder().setPrettyPrinting().create();
while ((line = inputStream.readLine()) != null) {
if (line.length() > 0) {
textResults = client.textModerations().screenText("text/plain", line.getBytes(), null);
// Uncomment below line to print in console
// System.out.println(gson.toJson(textResults).toString());
}
}
Metin denetleme sonuçlarını yazdır
Denetleme sonuçlarını proje dizininizde bir. JSON dosyasına yazdırmak için aşağıdaki kodu ekleyin.
System.out.println("Text moderation status: " + textResults.status().description());
System.out.println();
// Create output results file to TextModerationOutput.json
BufferedWriter writer = new BufferedWriter(
new FileWriter(new File("src\\main\\resources\\TextModerationOutput.json")));
writer.write(gson.toJson(textResults).toString());
System.out.println("Check TextModerationOutput.json to see printed results.");
System.out.println();
writer.close();
try catch Yöntemini gerçekleştirmek için ve ifadesini kapatın.
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
Orta görüntüler
Örnek görüntü ayarlama
Yeni bir yöntemde, bir görüntüyü işaret eden belirli bir URL dizesiyle bir Bodymodelmodel nesnesi oluşturun.
public static void moderateImages(ContentModeratorClient client, List<EvaluationData> resultsList) {
System.out.println();
System.out.println("---------------------------------------");
System.out.println("MODERATE IMAGES");
System.out.println();
try {
String urlString = "https://moderatorsampleimages.blob.core.windows.net/samples/sample2.jpg";
// Evaluate each line of text
BodyModelModel url = new BodyModelModel();
url.withDataRepresentation("URL");
url.withValue(urlString);
// Save to EvaluationData class for later
EvaluationData imageData = new EvaluationData();
imageData.ImageUrl = url.value();
Yardımcı sınıfı tanımla
Ardından, contentmoderatorquickstart. Java dosyanızda, aşağıdaki sınıf tanımını contentmoderatorquickstart sınıfına ekleyin. Bu iç sınıf, görüntü denetleme işleminde kullanılır.
// Contains the image moderation results for an image, including text and face
// detection from the image.
public static class EvaluationData {
// The URL of the evaluated image.
public String ImageUrl;
// The image moderation results.
public Evaluate ImageModeration;
// The text detection results.
public OCR TextDetection;
// The face detection results;
public FoundFaces FaceDetection;
}
İçeriği analiz etme
Bu kod satırı, verilen URL 'deki görüntüyü yetişkinlere veya kcy içeriğine karşı denetler. Bu koşullarla ilgili bilgi için bkz. görüntü denetleme kavramsal Kılavuzu.
// Evaluate for adult and racy content.
imageData.ImageModeration = client.imageModerations().evaluateUrlInput("application/json", url,
new EvaluateUrlInputOptionalParameter().withCacheImage(true));
Thread.sleep(1000);
Metin denetimi
Bu kod satırı görüntüde görünür metin olup olmadığını denetler.
// Detect and extract text from image.
imageData.TextDetection = client.imageModerations().oCRUrlInput("eng", "application/json", url,
new OCRUrlInputOptionalParameter().withCacheImage(true));
Thread.sleep(1000);
Yüzeyleri denetle
Bu kod satırı, resmi insan yüzeyleri için denetler.
// Detect faces.
imageData.FaceDetection = client.imageModerations().findFacesUrlInput("application/json", url,
new FindFacesUrlInputOptionalParameter().withCacheImage(true));
Thread.sleep(1000);
Son olarak, döndürülen bilgileri EvaluationData listede depolayın.
resultsList.add(imageData);
Sonuçları Yazdır
whileDöngüden sonra, sonuçları konsola ve bir çıkış dosyasına ( src/Main/resources/ModerationOutput.js) yazdıran aşağıdaki kodu ekleyin.
// Save the moderation results to a file.
// ModerationOutput.json contains the output from the evaluation.
// Relative paths are relative to the execution directory (where pom.xml is
// located).
BufferedWriter writer = new BufferedWriter(
new FileWriter(new File("src\\main\\resources\\ImageModerationOutput.json")));
// For formatting the printed results
Gson gson = new GsonBuilder().setPrettyPrinting().create();
writer.write(gson.toJson(resultsList).toString());
System.out.println("Check ImageModerationOutput.json to see printed results.");
writer.close();
tryYöntemi kapatın ve catch metodunu tamamlamaya yönelik bir ifade ekleyin.
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
Uygulamayı çalıştırma
Uygulamayı ile oluşturabilirsiniz:
gradle build
Uygulamayı gradle run komutla çalıştırın:
gradle run
Ardından dosya üzerinde src/Main/Resources/ModerationOutput.js gidin ve içerik denetleme sonuçlarını görüntüleyin.
Kaynakları temizleme
Bilişsel hizmetler aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, onunla ilişkili diğer tüm kaynakları da siler.
Sonraki adımlar
Bu hızlı başlangıçta, Content Moderator Java kitaplığı 'nı kullanarak denetleme görevlerini nasıl kullanacağınızı öğrendiniz. Daha sonra, bir kavramsal kılavuz okuyarak görüntülerin veya diğer ortamların denetimi hakkında daha fazla bilgi edinin.
Python için Azure Content Moderator istemci kitaplığı ile çalışmaya başlayın. PiPy paketini yüklemek için bu adımları izleyin ve temel görevler için örnek kodu deneyin.
Content Moderator, rahatsız edici, riskli veya başka türlü istenmeyen içerikleri işlemenize imkan tanıyan bir AI hizmetidir. Metin, resim ve videoları taramak ve içerik bayraklarını otomatik olarak uygulamak için AI destekli içerik denetleme hizmetini kullanın. Ardından, bir insan gözden geçirenler ekibi için çevrimiçi bir moderatör ortamı olan gözden geçirme aracıyla uygulamanızı tümleştirin. Yönetmeliklerle uyum sağlamak veya kullanıcılarınız için amaçlanan ortamı sürdürmek üzere uygulamanıza içerik filtreleme yazılımı oluşturun.
Python için Content Moderator istemci kitaplığını şu şekilde kullanın:
- Orta metin
- Özel terimler listesi kullanma
- Orta görüntüler
- Özel görüntü listesi kullanma
- İnceleme oluştur
Başvuru belgeleri | Kitaplık kaynak kodu | Paket (PiPy) | Örnekler
Önkoşullar
- Azure aboneliği- ücretsiz olarak bir tane oluşturun
- Python 3.x
- Python yüklemeniz PIP'yi içermelidir. Komut satırında komutunu çalıştırarak PIP 'nin yüklenip yüklenmediğini kontrol edebilirsiniz
pip --version. Python 'un en son sürümünü yükleyerek PIP 'yi alın.
- Python yüklemeniz PIP'yi içermelidir. Komut satırında komutunu çalıştırarak PIP 'nin yüklenip yüklenmediğini kontrol edebilirsiniz
- Azure aboneliğiniz olduktan sonra, anahtarınızı ve uç noktanızı almak için Azure Portal bir Content Moderator kaynağı oluşturun Content moderator bir kaynak oluşturun. Dağıtım için bekleyin ve Kaynağa Git düğmesine tıklayın.
- Uygulamanızı Content Moderator bağlamak için oluşturduğunuz kaynaktaki anahtar ve uç nokta gerekir. Anahtarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz.
F0Hizmeti denemek ve daha sonra üretime yönelik ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını () kullanabilirsiniz.
Ayarlanıyor
İstemci kitaplığını yükler
Python yükledikten sonra, Content Moderator istemci kitaplığını aşağıdaki komutla yükleyebilirsiniz:
pip install --upgrade azure-cognitiveservices-vision-contentmoderator
Yeni bir Python uygulaması oluşturma
Yeni bir Python betiği oluşturun ve tercih ettiğiniz düzenleyicide veya IDE 'de açın. Ardından, aşağıdaki import deyimlerini dosyanın en üstüne ekleyin.
import os.path
from pprint import pprint
import time
from io import BytesIO
from random import random
import uuid
from azure.cognitiveservices.vision.contentmoderator import ContentModeratorClient
import azure.cognitiveservices.vision.contentmoderator.models
from msrest.authentication import CognitiveServicesCredentials
İpucu
Tüm hızlı başlangıç kodu dosyasını aynı anda görüntülemek mi istiyorsunuz? Bu hızlı başlangıçta kod örneklerini içeren GitHub'da bulabilirsiniz.
Sonra, kaynağınızın uç nokta konumu ve anahtarı için değişkenler oluşturun.
CONTENT_MODERATOR_ENDPOINT = "PASTE_YOUR_CONTENT_MODERATOR_ENDPOINT_HERE"
subscription_key = "PASTE_YOUR_CONTENT_MODERATOR_SUBSCRIPTION_KEY_HERE"
Önemli
Azure portala gidin. Önkoşullar bölümünde oluşturduğunuz Content moderator kaynak başarıyla dağıtılırsa, sonraki adımlar altında Kaynağa Git düğmesine tıklayın. Anahtar ve uç noktanızı kaynağın anahtar ve uç nokta sayfasında, kaynak yönetimi altında bulabilirsiniz.
İşiniz bittiğinde kodu koddan kaldırmayı unutmayın ve hiçbir zaman herkese açık bir şekilde nakletmeyin. Üretim için, kimlik bilgilerinizi depolamak ve bunlara erişmek için güvenli bir yol kullanmayı düşünün. Örneğin, Azure Anahtar Kasası.
Nesne modeli
Aşağıdaki sınıflar, Content Moderator Python istemci kitaplığının bazı önemli özelliklerini işler.
| Ad | Açıklama |
|---|---|
| ContentModeratorClient | Bu sınıf tüm Content Moderator işlevleri için gereklidir. Bunu Abonelik bilgileriniz ile birlikte başlatır ve diğer sınıfların örneklerini oluşturmak için kullanırsınız. |
| Imagemoderationoperations | Bu sınıf yetişkinlere yönelik içerik, kişisel bilgiler veya insan yüzeyleri için görüntüleri analiz etmek üzere işlevsellik sağlar. |
| TextModerationOperations | Bu sınıf, dil, küfür, hatalar ve kişisel bilgiler için metin çözümleme işlevlerini sağlar. |
| ReviewsOperations | Bu sınıf, iş oluşturma, özel iş akışları ve insan incelemeleri için yöntemler de dahil olmak üzere, gözden geçirme API 'lerinin işlevlerini sağlar. |
Kod örnekleri
Bu kod parçacıkları, Python için Content Moderator istemci kitaplığı ile aşağıdaki görevlerin nasıl yapılacağını gösterir:
- İstemcinin kimliğini doğrulama
- Orta metin
- Özel terimler listesi kullanma
- Orta görüntüler
- Özel görüntü listesi kullanma
- İnceleme oluştur
İstemcinin kimliğini doğrulama
Uç noktanız ve anahtarınızla bir istemci örneği oluşturun. Anahtarınızla bir Biliveservicescredentials nesnesi oluşturun ve bir Contentmoderatorclient nesnesi oluşturmak için bunu uç noktanızla birlikte kullanın.
client = ContentModeratorClient(
endpoint=CONTENT_MODERATOR_ENDPOINT,
credentials=CognitiveServicesCredentials(subscription_key)
)
Orta metin
Aşağıdaki kod, bir metin gövdesini çözümlemek ve sonuçları konsola yazdırmak için bir Content Moderator istemcisi kullanır. İlk olarak, projenizin kökünde bir text_files/ klasör oluşturun ve bir content_moderator_text_moderation.txt dosyası ekleyin. Bu dosyaya kendi metninizi ekleyin veya aşağıdaki örnek metni kullanın:
Is this a grabage email abcdef@abcd.com, phone: 4255550111, IP: 255.255.255.255, 1234 Main Boulevard, Panapolis WA 96555.
Crap is the profanity here. Is this information PII? phone 2065550111
Yeni klasöre bir başvuru ekleyin.
TEXT_FOLDER = os.path.join(os.path.dirname(
os.path.realpath(__file__)), "text_files")
Ardından, Python betiğe aşağıdaki kodu ekleyin.
# Screen the input text: check for profanity,
# do autocorrect text, and check for personally identifying
# information (PII)
with open(os.path.join(TEXT_FOLDER, 'content_moderator_text_moderation.txt'), "rb") as text_fd:
screen = client.text_moderation.screen_text(
text_content_type="text/plain",
text_content=text_fd,
language="eng",
autocorrect=True,
pii=True
)
assert isinstance(screen, Screen)
pprint(screen.as_dict())
Özel terimler listesi kullanma
Aşağıdaki kod, metin düzenlemesi için özel terimlerin bir listesini yönetmeyi gösterir. ListManagementTermListsOperations sınıfını kullanarak bir hüküm listesi oluşturabilir, tek tek koşulları yönetebilir ve diğer metin gövdelerini buna karşı görüntüleyebilirsiniz.
Örnek metin al
Bu örneği kullanmak için, projenizin kökünde bir text_files/ klasör oluşturmanız ve bir content_moderator_term_list.txt dosyası eklemeniz gerekir. Bu dosya, terimler listesine göre denetlenecek organik metin içermelidir. Aşağıdaki örnek metni kullanabilirsiniz:
This text contains the terms "term1" and "term2".
Henüz bir tane tanımınızda klasöre bir başvuru ekleyin.
TEXT_FOLDER = os.path.join(os.path.dirname(
os.path.realpath(__file__)), "text_files")
Liste Oluştur
Özel bir hüküm listesi oluşturmak ve KIMLIK değerini kaydetmek için aşağıdaki kodu Python betiğe ekleyin.
#
# Create list
#
print("\nCreating list")
custom_list = client.list_management_term_lists.create(
content_type="application/json",
body={
"name": "Term list name",
"description": "Term list description",
}
)
print("List created:")
assert isinstance(custom_list, TermList)
pprint(custom_list.as_dict())
list_id = custom_list.id
Liste ayrıntılarını tanımlayın
Adını ve açıklamasını düzenlemek için bir listenin KIMLIĞINI kullanabilirsiniz.
#
# Update list details
#
print("\nUpdating details for list {}".format(list_id))
updated_list = client.list_management_term_lists.update(
list_id=list_id,
content_type="application/json",
body={
"name": "New name",
"description": "New description"
}
)
assert isinstance(updated_list, TermList)
pprint(updated_list.as_dict())
Listeye bir terim ekleyin
Aşağıdaki kod terimleri "term1" ve "term2" listeye ekler.
#
# Add terms
#
print("\nAdding terms to list {}".format(list_id))
client.list_management_term.add_term(
list_id=list_id,
term="term1",
language="eng"
)
client.list_management_term.add_term(
list_id=list_id,
term="term2",
language="eng"
)
Listedeki tüm terimleri al
Listedeki tüm koşulları döndürmek için liste KIMLIĞINI kullanabilirsiniz.
#
# Get all terms ids
#
print("\nGetting all term IDs for list {}".format(list_id))
terms = client.list_management_term.get_all_terms(
list_id=list_id, language="eng")
assert isinstance(terms, Terms)
terms_data = terms.data
assert isinstance(terms_data, TermsData)
pprint(terms_data.as_dict())
Liste dizinini Yenile
Listeden terim eklediğinizde veya kaldırdığınızda, güncelleştirilmiş listeyi kullanabilmeniz için dizini yenilemeniz gerekir.
#
# Refresh the index
#
print("\nRefreshing the search index for list {}".format(list_id))
refresh_index = client.list_management_term_lists.refresh_index_method(
list_id=list_id, language="eng")
assert isinstance(refresh_index, RefreshIndex)
pprint(refresh_index.as_dict())
print("\nWaiting {} minutes to allow the server time to propagate the index changes.".format(
LATENCY_DELAY))
time.sleep(LATENCY_DELAY * 60)
Listeye karşı ekran metni
Özel terimler listesinin ana işlevselliği, bir metin gövdesinin listeyle karşılaştırılacağı ve eşleşen bir terim olup olmadığını bulmaktır.
#
# Screen text
#
with open(os.path.join(TEXT_FOLDER, 'content_moderator_term_list.txt'), "rb") as text_fd:
screen = client.text_moderation.screen_text(
text_content_type="text/plain",
text_content=text_fd,
language="eng",
autocorrect=False,
pii=False,
list_id=list_id
)
assert isinstance(screen, Screen)
pprint(screen.as_dict())
Listeden bir terimi kaldırma
Aşağıdaki kod, listeden terimi kaldırır "term1" .
#
# Remove terms
#
term_to_remove = "term1"
print("\nRemove term {} from list {}".format(term_to_remove, list_id))
client.list_management_term.delete_term(
list_id=list_id,
term=term_to_remove,
language="eng"
)
Bir listeden tüm terimleri kaldır
Tüm koşullarının listesini temizlemek için aşağıdaki kodu kullanın.
#
# Delete all terms
#
print("\nDelete all terms in the image list {}".format(list_id))
client.list_management_term.delete_all_terms(
list_id=list_id, language="eng")
Listeyi silme
Özel terimler listesini silmek için aşağıdaki kodu kullanın.
#
# Delete list
#
print("\nDelete the term list {}".format(list_id))
client.list_management_term_lists.delete(list_id=list_id)
Orta görüntüler
Aşağıdaki kod, Yetişkin ve kcy içeriğinin görüntülerini çözümlemek için bir ımagemoderationoperations nesnesiyle birlikte bir Content moderator istemcisi kullanır.
Örnek görüntüleri al
Analiz etmek için bazı görüntülere bir başvuru tanımlayın.
IMAGE_LIST = [
"https://moderatorsampleimages.blob.core.windows.net/samples/sample2.jpg",
"https://moderatorsampleimages.blob.core.windows.net/samples/sample5.png"
]
Ardından, görüntüleriniz arasında yinelemek için aşağıdaki kodu ekleyin. Bu bölümdeki kodun geri kalanı bu döngünün içine gidecektir.
for image_url in IMAGE_LIST:
print("\nEvaluate image {}".format(image_url))
Yetişkin/kcy içeriğini denetle
Aşağıdaki kod, verilen URL 'deki görüntüyü yetişkinlere veya kcy içeriğine göre denetler ve sonuçları konsola yazdırır. Bu koşulların ne anlama geldiğini öğrenmek için görüntü denetleme kavramları Kılavuzu ' na bakın.
print("\nEvaluate for adult and racy content.")
evaluation = client.image_moderation.evaluate_url_input(
content_type="application/json",
cache_image=True,
data_representation="URL",
value=image_url
)
assert isinstance(evaluation, Evaluate)
pprint(evaluation.as_dict())
Görünür metni denetle
Aşağıdaki kod görüntüyü görünür metin içeriği için denetler ve sonuçları konsola yazdırır.
print("\nDetect and extract text.")
evaluation = client.image_moderation.ocr_url_input(
language="eng",
content_type="application/json",
data_representation="URL",
value=image_url,
cache_image=True,
)
assert isinstance(evaluation, OCR)
pprint(evaluation.as_dict())
Yüzeyleri denetle
Aşağıdaki kod, resmi insan yüzeyleri için denetler ve sonuçları konsola yazdırır.
print("\nDetect faces.")
evaluation = client.image_moderation.find_faces_url_input(
content_type="application/json",
cache_image=True,
data_representation="URL",
value=image_url
)
assert isinstance(evaluation, FoundFaces)
pprint(evaluation.as_dict())
Özel görüntü listesi kullanma
Aşağıdaki kod, görüntü düzenlemesi için özel bir görüntü listesini yönetmeyi gösterir. Bu özellik, platformunuz Sıklıkla, ekran dışına almak istediğiniz görüntü kümesinin örneklerini alırsa kullanışlıdır. Bu belirli görüntülerin bir listesini tutarak performansı artırabilirsiniz. ListManagementImageListsOperations sınıfı, bir görüntü listesi oluşturmanıza, listedeki tek resimleri yönetmenize ve diğer görüntüleri buna karşı karşılaştırmanıza olanak sağlar.
Bu senaryoda kullanacağınız görüntü URL 'Lerini depolamak için aşağıdaki metin değişkenlerini oluşturun.
IMAGE_LIST = {
"Sports": [
"https://moderatorsampleimages.blob.core.windows.net/samples/sample4.png",
"https://moderatorsampleimages.blob.core.windows.net/samples/sample6.png",
"https://moderatorsampleimages.blob.core.windows.net/samples/sample9.png"
],
"Swimsuit": [
"https://moderatorsampleimages.blob.core.windows.net/samples/sample1.jpg",
"https://moderatorsampleimages.blob.core.windows.net/samples/sample3.png",
"https://moderatorsampleimages.blob.core.windows.net/samples/sample4.png",
"https://moderatorsampleimages.blob.core.windows.net/samples/sample16.png"
]
}
IMAGES_TO_MATCH = [
"https://moderatorsampleimages.blob.core.windows.net/samples/sample1.jpg",
"https://moderatorsampleimages.blob.core.windows.net/samples/sample4.png",
"https://moderatorsampleimages.blob.core.windows.net/samples/sample5.png",
"https://moderatorsampleimages.blob.core.windows.net/samples/sample16.png"
]
Not
Bu, doğru listenin kendisi değildir, ancak kodun bölümüne eklenecek olan görüntülerin resmi bir listesi add images .
Görüntü listesi oluşturma
Bir görüntü listesi oluşturmak ve KIMLIĞINI bir başvuruya kaydetmek için aşağıdaki kodu ekleyin.
#
# Create list
#
print("Creating list MyList\n")
custom_list = client.list_management_image_lists.create(
content_type="application/json",
body={
"name": "MyList",
"description": "A sample list",
"metadata": {
"key_one": "Acceptable",
"key_two": "Potentially racy"
}
}
)
print("List created:")
assert isinstance(custom_list, ImageList)
pprint(custom_list.as_dict())
list_id = custom_list.id
Listeye resim ekleme
Aşağıdaki kod, tüm görüntülerinizi listeye ekler.
print("\nAdding images to list {}".format(list_id))
index = {} # Keep an index url to id for later removal
for label, urls in IMAGE_LIST.items():
for url in urls:
image = add_images(list_id, url, label)
if image:
index[url] = image.content_id
Add_images yardımcı işlevini betiğiniz başka bir yerde tanımlayın.
#
# Add images
#
def add_images(list_id, image_url, label):
"""Generic add_images from url and label."""
print("\nAdding image {} to list {} with label {}.".format(
image_url, list_id, label))
try:
added_image = client.list_management_image.add_image_url_input(
list_id=list_id,
content_type="application/json",
data_representation="URL",
value=image_url,
label=label
)
except APIErrorException as err:
# sample4 will fail
print("Unable to add image to list: {}".format(err))
else:
assert isinstance(added_image, Image)
pprint(added_image.as_dict())
return added_image
Listedeki görüntüleri al
Aşağıdaki kod, listenizdeki tüm görüntülerin adlarını yazdırır.
#
# Get all images ids
#
print("\nGetting all image IDs for list {}".format(list_id))
image_ids = client.list_management_image.get_all_image_ids(list_id=list_id)
assert isinstance(image_ids, ImageIds)
pprint(image_ids.as_dict())
Liste ayrıntılarını güncelleştir
Listenin adını ve açıklamasını güncelleştirmek için liste KIMLIĞINI kullanabilirsiniz.
#
# Update list details
#
print("\nUpdating details for list {}".format(list_id))
updated_list = client.list_management_image_lists.update(
list_id=list_id,
content_type="application/json",
body={
"name": "Swimsuits and sports"
}
)
assert isinstance(updated_list, ImageList)
pprint(updated_list.as_dict())
Liste ayrıntılarını al
Listenizin geçerli ayrıntılarını yazdırmak için aşağıdaki kodu kullanın.
#
# Get list details
#
print("\nGetting details for list {}".format(list_id))
list_details = client.list_management_image_lists.get_details(
list_id=list_id)
assert isinstance(list_details, ImageList)
pprint(list_details.as_dict())
Liste dizinini Yenile
Görüntü ekledikten veya kaldırdıktan sonra, diğer görüntüleri ekran için kullanabilmeniz için liste dizinini yenilemeniz gerekir.
#
# Refresh the index
#
print("\nRefreshing the search index for list {}".format(list_id))
refresh_index = client.list_management_image_lists.refresh_index_method(
list_id=list_id)
assert isinstance(refresh_index, RefreshIndex)
pprint(refresh_index.as_dict())
print("\nWaiting {} minutes to allow the server time to propagate the index changes.".format(
LATENCY_DELAY))
time.sleep(LATENCY_DELAY * 60)
Görüntüleri listeyle eşleştirin
Resim listelerinin ana işlevi, yeni görüntüleri karşılaştırmak ve herhangi bir eşleşme olup olmadığını görmaktır.
#
# Match images against the image list.
#
for image_url in IMAGES_TO_MATCH:
print("\nMatching image {} against list {}".format(image_url, list_id))
match_result = client.image_moderation.match_url_input(
content_type="application/json",
list_id=list_id,
data_representation="URL",
value=image_url,
)
assert isinstance(match_result, MatchResponse)
print("Is match? {}".format(match_result.is_match))
print("Complete match details:")
pprint(match_result.as_dict())
Listeden bir görüntüyü kaldırma
Aşağıdaki kod, listeden bir öğeyi kaldırır. Bu durumda, liste kategorisiyle eşleşmeyen bir görüntüdür.
#
# Remove images
#
correction = "https://moderatorsampleimages.blob.core.windows.net/samples/sample16.png"
print("\nRemove image {} from list {}".format(correction, list_id))
client.list_management_image.delete_image(
list_id=list_id,
image_id=index[correction]
)
Bir listeden tüm görüntüleri kaldır
Bir görüntü listesini temizlemek için aşağıdaki kodu kullanın.
#
# Delete all images
#
print("\nDelete all images in the image list {}".format(list_id))
client.list_management_image.delete_all_images(list_id=list_id)
Görüntü listesini silme
Belirli bir görüntü listesini silmek için aşağıdaki kodu kullanın.
#
# Delete list
#
print("\nDelete the image list {}".format(list_id))
client.list_management_image_lists.delete(list_id=list_id)
İnceleme oluştur
İçerik akışını Gözden geçirmek Için Content moderator Python istemci Kitaplığı ' nı kullanarak, insan moderatör tarafından gözden geçirebilirsiniz. Inceleme aracı hakkında daha fazla bilgi edinmek için bkz. İnceleme aracı kavramsal Kılavuzu.
Aşağıdaki kod, gözden geçirme oluşturmak, KIMLIĞINI almak ve gözden geçirme aracının Web portalı aracılığıyla insan girişini aldıktan sonra ayrıntılarını denetlemek için ReviewsOperations sınıfını kullanır.
Inceleme kimlik bilgilerini al
İlk olarak, gözden geçirme aracında oturum açın ve takımınızın adını alın. Ardından kodu koddaki uygun değişkene atayın. İsteğe bağlı olarak, gözden geçirme etkinliği üzerinde güncelleştirmeleri almak için bir geri çağırma uç noktası ayarlayabilirsiniz.
# The name of the team to assign the job to.
# This must be the team name you used to create your Content Moderator account. You can
# retrieve your team name from the Review tool web site. Your team name is the Id
# associated with your subscription.
team_name = "<insert your team name here>"
# An image to review
image_url = "https://moderatorsampleimages.blob.core.windows.net/samples/sample5.png"
# Where you want to receive the approval/refuse event. This is the only way to get this information.
call_back_endpoint = "https://requestb.in/qmsakwqm"
Görüntü incelemesi oluşturma
Verilen görüntü URL 'SI için bir inceleme oluşturmak ve göndermek üzere aşağıdaki kodu ekleyin. Kod, gözden geçirme KIMLIĞINE bir başvuru kaydeder.
# Create review
print("Create review for {}.\n".format(image_url))
review_item = {
"type": "Image", # Possible values include: 'Image', 'Text'
"content": image_url, # How to download the image
"content_id": uuid.uuid4(), # Random id
"callback_endpoint": call_back_endpoint,
"metadata": [{
"key": "sc",
"value": True # will be sent to Azure as "str" cast.
}]
}
reviews = client.reviews.create_reviews(
url_content_type="application/json",
team_name=team_name,
create_review_body=[review_item] # As many review item as you need
)
# Get review ID
review_id = reviews[0] # Ordered list of string of review ID
İnceleme ayrıntılarını al
Belirli bir incelemenin ayrıntılarını denetlemek için aşağıdaki kodu kullanın. İncelemeyi oluşturduktan sonra, gözden geçirme aracına kendiniz gidebilir ve içerikle etkileşime geçebilirsiniz. Bunun nasıl yapılacağı hakkında bilgi için bkz. İnceleme nasıl yapılır Kılavuzu. İşiniz bittiğinde, bu kodu tekrar çalıştırabilirsiniz ve gözden geçirme işleminin sonuçları alınır.
print("\nGet review details")
review_details = client.reviews.get_review(
team_name=team_name, review_id=review_id)
pprint(review_details.as_dict())
Bu senaryoda bir geri çağırma uç noktası kullandıysanız, bu biçimde bir olay almalıdır:
{'callback_endpoint': 'https://requestb.in/qmsakwqm',
'content': '',
'content_id': '3ebe16cb-31ed-4292-8b71-1dfe9b0e821f',
'created_by': 'cspythonsdk',
'metadata': [{'key': 'sc', 'value': 'True'}],
'review_id': '201901i14682e2afe624fee95ebb248643139e7',
'reviewer_result_tags': [{'key': 'a', 'value': 'True'},
{'key': 'r', 'value': 'True'}],
'status': 'Complete',
'sub_team': 'public',
'type': 'Image'}
Uygulamayı çalıştırma
Uygulamayı python hızlı başlangıç dosyanızdaki komutla çalıştırın.
python quickstart-file.py
Kaynakları temizleme
Bilişsel hizmetler aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, onunla ilişkili diğer tüm kaynakları da siler.
Sonraki adımlar
Bu hızlı başlangıçta, denetleme görevlerini yapmak için Content Moderator Python kitaplığını nasıl kullanacağınızı öğrendiniz. Daha sonra, bir kavramsal kılavuz okuyarak görüntülerin veya diğer ortamların denetimi hakkında daha fazla bilgi edinin.
Azure Content Moderator REST API kullanmaya başlayın.
Content Moderator, rahatsız edici, riskli veya başka türlü istenmeyen içerikleri işlemenize imkan tanıyan bir AI hizmetidir. Metin, resim ve videoları taramak ve içerik bayraklarını otomatik olarak uygulamak için AI destekli içerik denetleme hizmetini kullanın. Ardından, bir insan gözden geçirenler ekibi için çevrimiçi bir moderatör ortamı olan gözden geçirme aracı ile uygulamanızı tümleştirin. Yönetmeliklerle uyum sağlamak veya kullanıcılarınız için amaçlanan ortamı sürdürmek üzere uygulamanıza içerik filtreleme yazılımı oluşturun.
Content Moderator REST API için kullanın:
- Orta metin
- Orta görüntüler
Önkoşullar
- Azure aboneliği- ücretsiz olarak bir tane oluşturun
- Azure aboneliğiniz olduktan sonra, anahtarınızı ve uç noktanızı almak için Azure Portal bir Content Moderator kaynağı oluşturun Content moderator bir kaynak oluşturun. Dağıtım için bekleyin ve Kaynağa Git düğmesine tıklayın.
- Uygulamanızı Content Moderator bağlamak için oluşturduğunuz kaynaktaki anahtar ve uç nokta gerekir. Anahtarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz.
F0Hizmeti denemek ve daha sonra üretime yönelik ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını () kullanabilirsiniz.
- PowerShell sürüm 6.0 +veya benzer bir komut satırı uygulaması.
Orta metin
Bir metin gövdesini çözümlemek ve sonuçları konsola yazdırmak için Content Moderator API 'sini çağırmak üzere aşağıdaki gibi bir komut kullanacaksınız.
curl -v -X POST "https://westus.api.cognitive.microsoft.com/contentmoderator/moderate/v1.0/ProcessText/Screen?autocorrect=True&PII=True&classify=True&language={string}"
-H "Content-Type: text/plain"
-H "Ocp-Apim-Subscription-Key: {subscription key}"
--data-ascii "Is this a crap email abcdef@abcd.com, phone: 6657789887, IP: 255.255.255.255, 1 Microsoft Way, Redmond, WA 98052"
Komutu bir metin düzenleyicisine kopyalayın ve aşağıdaki değişiklikleri yapın:
Ocp-Apim-Subscription-KeyGeçerli yüz abonelik anahtarınıza atayın.- Sorgu URL 'sinin ilk kısmını, abonelik anahtarınıza karşılık gelen uç noktayla eşleşecek şekilde değiştirin.
Not
1 Temmuz 2019 ' den sonra oluşturulan yeni kaynaklar özel alt etki alanı adları kullanır. Daha fazla bilgi ve bölgesel uç noktaların tamamen listesi için bkz. bilişsel Hizmetler Için özel alt etki alanı adları.
- İsteğe bağlı olarak, isteğin gövdesini çözümlemek istediğiniz metin dizesiyle değiştirin.
Değişikliklerinizi yaptıktan sonra, bir komut istemi açın ve yeni komutu girin.
Sonuçları inceleme
Metin denetleme sonuçlarının konsol penceresinde JSON verileri olarak görüntülendiğini görmeniz gerekir. Örnek:
{
"OriginalText": "Is this a crap email abcdef@abcd.com, phone: 6657789887, IP: 255.255.255.255,\n1 Microsoft Way, Redmond, WA 98052\n",
"NormalizedText": "Is this a crap email abide@ abed. com, phone: 6657789887, IP: 255. 255. 255. 255, \n1 Microsoft Way, Redmond, WA 98052",
"AutoCorrectedText": "Is this a crap email abide@ abed. com, phone: 6657789887, IP: 255. 255. 255. 255, \n1 Microsoft Way, Redmond, WA 98052",
"Misrepresentation": null,
"PII": {
"Email": [
{
"Detected": "abcdef@abcd.com",
"SubType": "Regular",
"Text": "abcdef@abcd.com",
"Index": 21
}
],
"IPA": [
{
"SubType": "IPV4",
"Text": "255.255.255.255",
"Index": 61
}
],
"Phone": [
{
"CountryCode": "US",
"Text": "6657789887",
"Index": 45
}
],
"Address": [
{
"Text": "1 Microsoft Way, Redmond, WA 98052",
"Index": 78
}
]
},
"Classification": {
"Category1":
{
"Score": 0.5
},
"Category2":
{
"Score": 0.6
},
"Category3":
{
"Score": 0.5
},
"ReviewRecommended": true
},
"Language": "eng",
"Terms": [
{
"Index": 10,
"OriginalIndex": 10,
"ListId": 0,
"Term": "crap"
}
],
"Status": {
"Code": 3000,
"Description": "OK",
"Exception": null
},
"TrackingId": "1717c837-cfb5-4fc0-9adc-24859bfd7fac"
}
Ekranları Content Moderator için görüntülenen metin öznitelikleri hakkında daha fazla bilgi için bkz. metin denetleme kavramları Kılavuzu.
Orta görüntüler
Aşağıdaki gibi bir komut kullanarak, uzak bir görüntüye Content Moderator API 'sini çağırıp sonuçları konsola yazdırabilirsiniz.
curl -v -X POST "https://westus.api.cognitive.microsoft.com/contentmoderator/moderate/v1.0/ProcessImage/Evaluate?CacheImage={boolean}"
-H "Content-Type: application/json"
-H "Ocp-Apim-Subscription-Key: {subscription key}"
--data-ascii "{\"DataRepresentation\":\"URL\", \"Value\":\"https://moderatorsampleimages.blob.core.windows.net/samples/sample.jpg\"}"
Komutu bir metin düzenleyicisine kopyalayın ve aşağıdaki değişiklikleri yapın:
Ocp-Apim-Subscription-KeyGeçerli yüz abonelik anahtarınıza atayın.- Sorgu URL 'sinin ilk kısmını, abonelik anahtarınıza karşılık gelen uç noktayla eşleşecek şekilde değiştirin.
- İsteğe bağlı olarak
"Value"istek gövdesindeki URL 'yi, orta olmasını istediğiniz uzak görüntüye göre değiştirin.
İpucu
Ayrıca, yerel görüntüleri, bayt verilerini istek gövdesine geçirerek de oluşturabilirsiniz. Bunun nasıl yapılacağını öğrenmek için başvuru belgelerine bakın.
Değişikliklerinizi yaptıktan sonra, bir komut istemi açın ve yeni komutu girin.
Sonuçları inceleme
Görüntü denetleme sonuçlarının konsol penceresinde JSON verileri olarak görüntülendiğini görmeniz gerekir.
{
"AdultClassificationScore": x.xxx,
"IsImageAdultClassified": <Bool>,
"RacyClassificationScore": x.xxx,
"IsImageRacyClassified": <Bool>,
"AdvancedInfo": [],
"Result": false,
"Status": {
"Code": 3000,
"Description": "OK",
"Exception": null
},
"TrackingId": "<Request Tracking Id>"
}
Ekranları Content Moderator görüntü öznitelikleri hakkında daha fazla bilgi için bkz. görüntü denetleme kavramları Kılavuzu.
Kaynakları temizleme
Bilişsel hizmetler aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, onunla ilişkili diğer tüm kaynakları da siler.
Sonraki adımlar
Bu hızlı başlangıçta, denetleme görevlerini yapmak için Content Moderator REST API nasıl kullanacağınızı öğrendiniz. Daha sonra, bir kavramsal kılavuz okuyarak görüntülerin veya diğer ortamların denetimi hakkında daha fazla bilgi edinin.