本文共 1564 字,大约阅读时间需要 5 分钟。
201010 隶属于《02.数据解析》小节
大意是,封装Google语言检测ajax web service的接口,输入一段话,输出语言种类。这个方法是从RssMeme.com看来的,经测试效果还不错,可用于检测微博客消息的语言,如中文、日文、韩文等。但由于Google对过于频繁的请求会重置链接,所以提请注意,这个Web Service不适合大量密集请求提交。
访问
链接,你可以看到返回结果是一个json字符串: {"responseData": {"language":"en","isReliable":false,"confidence":0.114892714}, "responseDetails": null, "responseStatus": 200}记得加版本号参数:v=1.0,否则返回如下json:
{"responseData": null, "responseDetails": "invalid version", "responseStatus": 400}
举例,送去检测的微博客消息是:
RT @ufotable: 本日22時より星海社ウェブサイト「最前線」にて『坂本真綾の満月朗読館』第二夜『山月記』が 配信されます。第二夜の映像演出も弊社デジタル部が担当い…
经过urlencode变换后,提交到Google,返回的结果是:
{"responseData": {"language":"ja","isReliable":true,"confidence":0.88555187}, "responseDetails": null, "responseStatus": 200}
这样用result['responseData']['language']就获得了语言的代号。
只要检查这个代号不是“zh-CN”,那么就不是中文语言了。示范:
import urllib import httplib2 try: from base import easyjson except: passclass Detect():
google_api_prefix = ' def __init__(self, httplib2_inst=None): """从外可以传入httplib实例,便于在外部加设代理软件穿墙""" self.http = httplib2_inst or httplib2.Http() def post_sentence(self, q): return self._fetch( self.google_api_prefix, {'v':"1.0",'q':q} ) def _fetch(self, url, params): request = url +"?"+ urllib.urlencode(params) resp, content = self.http.request(request, "GET") return easyjson.parse_json_func(content)def detectZHCN(self, text):
"""输入文字如果检测到是zh-CN,返回True,否则返回False""" data = self.post_sentence(text)['responseData'] if(data): language = data['language'] if(language=='zh-CN'): return True return False转载地址:http://bildx.baihongyu.com/