Web 3부 - 네이버 기계 번역 API 사용하기. (NAVER Translator API)
페이지 정보
본문
안녕하세요. 소심비형입니다. 오늘은 네이버 기계 번역에 대해서 알아보겠습니다. 이전 시간에 알아본 MS Bing 번역기보다는 예제를 따라하기가 쉽습니다^^; 우선 아래 경로로 이동하여 "오픈 API 이용 신청"을 작성하세요.
[ 네이버 번역 API 신청하기 ]
네이버 기계 번역 서비스를 이요하기 위한 개발자 페이지입니다. 이곳에서 서비스 이용 신청을 해야 합니다.
필수 정보를 모두 입력한 후 등록하기를 클릭하면 ClientID와 ClientSecret 키가 발급됩니다. 프로그램에서 번역 서비스를 호출할 때 필요하므로 꼭 메모 해두세요^^
기계 번역에 대한 자세한 내용은 아래 링크를 통해 확인할 수 있습니다.
네이버 개발 가이드를 참고하여 C# 윈폼에서 번역 기능을 구현하려면 몇가지 추가적인 사항이 필요합니다. 아래는 네이버 번역기를 사용하는 전체 소스입니다.
NaverTranslator.cs
using System.IO;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
namespace NGMASTERSubtitleConverter.Behaviors
{
public class NaverTranslator : ITranslator
{
string clientID; string clientSecret; public NaverTranslator(string clientID, string clientSecret) { this.clientID = clientID; this.clientSecret = clientSecret; }
public string Translate(string text, string from, string to)
{
string result;
ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(ValidateServerCertificate);
WebRequest request = WebRequest.Create("https://openapi.naver.com/v1/language/translate");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Headers.Add("cache-control", "no-cache");
request.Headers.Add("charset", "UTF-8");
request.Headers.Add("X-Naver-Client-Id", clientID);
request.Headers.Add("X-Naver-Client-Secret", clientSecret);
// Parameters
string parameters = string.Format("source={0}&target={1}&text={2}", from.Substring(0, 2), to.Substring(0, 2), text);
byte[] bytes = Encoding.UTF8.GetBytes(parameters);
request.ContentLength = bytes.Length;
Stream writeStream = request.GetRequestStream();
writeStream.Write(bytes, 0, bytes.Length);
writeStream.Close();
WebResponse response = request.GetResponse();
using (Stream readStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(readStream, Encoding.UTF8); result = reader.ReadToEnd();
}
string resultText = "translatedText";
int startIndex = result.IndexOf(resultText) + resultText.Length + 3;
int endIndex = result.LastIndexOf('"');
if (result.Length > startIndex && result.Length > endIndex)
result = result.Substring(startIndex, endIndex - startIndex);
else
result = string.Format("ERROR: {0}", "번역을 정상적으로 완료하지 못했습니다.");
return result;
}
public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
}
}
이 코드에서 추가로 처리해야 하는 사항은 2가지입니다. 첫번째는 네이버 번역 서비스를 호출할 때 HTTPS(HyperText Transfer Protocol over Secure socket layer)를 사용해야 합니다. 두번째는 서비스를 호출하고 반환받은 값을 적절히 파싱할 수 있어야 합니다. 이는 Json 형석을 파싱할 수 있는 별도의 라이브러리가 필요하다는 뜻입니다. 라인 4와 63~66은 웹서비스를 호출(HTTPS)할 때 서버 인증서의 유효성을 통과한 것으로 처리합니다. 51~53은 번역 서비스를 호출하고 반환받은 Json 값입니다. 여기에서 필요한 값은 TranslatedText에 있는 Value입니다. 사실 정해진 규칙을 가지고 있으므로 네이버 개발자 사이트에서 구조를 파악한 후 파서를 직접 제작해도 됩니다. 하지만, 그리 복잡한 구조가 아닌데다 나머지 정보들은 불필요하므로 파서를 만들지는 않았습니다.
이렇게 해서 무료 번역 서비스를 제공하고 있는 네이버와 마이크로소프트의 API에 대해 알아보았습니다. 구글도 해보려고 했으나... 유료인 관계로 구글은 처리하지 않았습니다-_-;
다음 시간에...
- 이전글1부 - C# ZeroMQ를 이용한 1:1 채팅 프로그램 만들기. (1:1 chatting) 20.08.29
- 다음글2부 - 마이크로소프트 빙 기계 번역 API 사용하기. (Microsoft Translator Bing API) 20.08.29
댓글목록
등록된 댓글이 없습니다.