使用Delphi调用Google Translate API如何获取词性分类信息?
获取谷歌翻译的词性分类信息
嗨,我明白你的困惑——网页版谷歌翻译能给出词性分类,但你用Translate v2 API只能拿到翻译文本对吧?其实这是因为Translate v2 API的核心定位是文本翻译,本身并不返回词典级别的词性、多释义这类额外信息,网页版显示的那些内容是谷歌额外整合了它的词典数据库才有的。
不过有几个靠谱的方案可以帮你拿到词性信息,我给你梳理一下:
方案1:结合Google Cloud Natural Language API
这个API专门负责文本的语法分析,包括词性标注。你可以分两步走:
- 先用你现有的Translate v2封装把希伯来语单词翻译成英语;
- 再把翻译后的英语单词传给Natural Language API的
analyzeSyntax接口,就能拿到词性、形态等详细信息。
举个Delphi的简单调用示例(需要先在谷歌云平台启用该API并获取API密钥):
procedure GetPartOfSpeech(const TranslatedWord, APIKey: string); var HTTP: TIdHTTP; RequestBody: TStringStream; ResponseJson: string; begin HTTP := TIdHTTP.Create(nil); RequestBody := TStringStream.Create( Format('{"document":{"type":"PLAIN_TEXT","content":"%s"},"encodingType":"UTF8"}', [TranslatedWord]), TEncoding.UTF8); try HTTP.Request.ContentType := 'application/json'; HTTP.Request.CustomHeaders.Add(Format('Authorization: Bearer %s', [APIKey])); ResponseJson := HTTP.Post('https://language.googleapis.com/v1/documents:analyzeSyntax', RequestBody); // 这里需要解析JSON响应,比如用TJSONObject // 找到tokens数组里每个元素的partOfSpeech字段,比如ADJ(形容词)、NOUN(名词)等 ShowMessage('词性信息已获取,响应内容:' + ResponseJson); finally HTTP.Free; RequestBody.Free; end; end;
方案2:升级到Google Translate v3 API
如果你能把封装升级到v3版本,那就更直接了——v3 API支持请求包含词典条目的翻译结果。只需要在调用translateText接口时,添加include_dictionary_entries=true参数,返回的结果里就会包含对应的词性、多个释义等词典级数据,不用额外调用其他API。
不过要注意,v3 API的调用方式和v2略有不同,需要调整你的Delphi封装逻辑,同时也要在谷歌云平台启用v3版本的翻译API。
方案3:非官方词典接口(不推荐生产环境)
还有一些非官方的谷歌词典接口可以直接请求词性信息,但这类接口没有官方支持,随时可能失效,而且可能违反谷歌的服务条款,所以只适合测试用,不建议在正式项目里使用。
另外要提醒一下,这些谷歌云的API都是有免费额度的,但超出后会产生费用,记得在谷歌云控制台监控使用情况哦。
内容的提问来源于stack exchange,提问作者Steven Chesser
相关产品推荐
相关产品推荐

