如何检测字符串的语言?

检测字符串语言的最佳方法是什么?

回答:

如果您的代码上下文可以访问互联网,则可以尝试使用Google API进行语言检测。

http://code.google.com/apis/ajaxlanguage/documentation/

var text = "¿Dónde está el baño?";

google.language.detect(text, function(result) {

if (!result.error) {

var language = 'unknown';

for (l in google.language.Languages) {

if (google.language.Languages[l] == result.language) {

language = l;

break;

}

}

var container = document.getElementById("detection");

container.innerHTML = text + " is: " + language + "";

}

});

并且,由于您使用的是c#,因此请阅读本文,了解如何从c#调用API。

更新:该c#链接已消失,这是其核心的缓存副本:

string s = TextBoxTranslateEnglishToHebrew.Text;

string key = "YOUR GOOGLE AJAX API KEY";

GoogleLangaugeDetector detector =

new GoogleLangaugeDetector(s, VERSION.ONE_POINT_ZERO, key);

GoogleTranslator gTranslator = new GoogleTranslator(s, VERSION.ONE_POINT_ZERO,

detector.LanguageDetected.Equals("iw") ? LANGUAGE.HEBREW : LANGUAGE.ENGLISH,

detector.LanguageDetected.Equals("iw") ? LANGUAGE.ENGLISH : LANGUAGE.HEBREW,

key);

TextBoxTranslation.Text = gTranslator.Translation;


基本上,您需要创建一个URI并将其发送给Google,如下所示:

http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello%20worled&langpair=en%7ciw&key=your_google_api_key_goes_here

这告诉API您想要将“ hello world”从英语翻译为希伯来语,Google的JSON响应应像这样:

{"responseData": {"translatedText":"שלום העולם"}, "responseDetails": null, "responseStatus": 200}

我选择制作一个代表典型Google JSON响应的基类:

[Serializable]

public class JSONResponse

{

public string responseDetails = null;

public string responseStatus = null;

}

然后,从该类继承的Translation对象:

[Serializable]

public class Translation: JSONResponse

{

public TranslationResponseData responseData =

new TranslationResponseData();

}

这个Translation类具有一个TranslationResponseData对象,如下所示:

[Serializable]

public class TranslationResponseData

{

public string translatedText;

}

最后,我们可以制作GoogleTranslator类:

using System;

using System.Collections.Generic;

using System.Text;

using System.Web;

using System.Net;

using System.IO;

using System.Runtime.Serialization.Json;

namespace GoogleTranslationAPI

{

public class GoogleTranslator

{

private string _q = "";

private string _v = "";

private string _key = "";

private string _langPair = "";

private string _requestUrl = "";

private string _translation = "";

public GoogleTranslator(string queryTerm, VERSION version, LANGUAGE languageFrom,

LANGUAGE languageTo, string key)

{

_q = HttpUtility.UrlPathEncode(queryTerm);

_v = HttpUtility.UrlEncode(EnumStringUtil.GetStringValue(version));

_langPair =

HttpUtility.UrlEncode(EnumStringUtil.GetStringValue(languageFrom) +

"|" + EnumStringUtil.GetStringValue(languageTo));

_key = HttpUtility.UrlEncode(key);

string encodedRequestUrlFragment =

string.Format("?v={0}&q={1}&langpair={2}&key={3}",

_v, _q, _langPair, _key);

_requestUrl = EnumStringUtil.GetStringValue(BASEURL.TRANSLATE) + encodedRequestUrlFragment;

GetTranslation();

}

public string Translation

{

get { return _translation; }

private set { _translation = value; }

}

private void GetTranslation()

{

try

{

WebRequest request = WebRequest.Create(_requestUrl);

WebResponse response = request.GetResponse();

StreamReader reader = new StreamReader(response.GetResponseStream());

string json = reader.ReadLine();

using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))

{

DataContractJsonSerializer ser =

new DataContractJsonSerializer(typeof(Translation));

Translation translation = ser.ReadObject(ms) as Translation;

_translation = translation.responseData.translatedText;

}

}

catch (Exception) { }

}

}

}

以上是 如何检测字符串的语言? 的全部内容, 来源链接: utcz.com/qa/403833.html

回到顶部