【问题标题】:Retrieving word definitions from google java从 google java 中检索单词定义
【发布时间】:2020-03-31 16:53:07
【问题描述】:

我在一个文件中有一个单词列表 (1K+),我想获取它们的定义并保存它们。我正在考虑从 Google as it's the first thing that it shows 获取他们的定义。我考虑这样做的方式非常初级,即创建一个指向给定单词的 Goole 搜索的 URL 实例,并使用流读取内容。然后,“过滤”定义,它总是在 "data-dobid="dfn"><.span>""<.>"

例如:

[...]data-dobid="dfn"><.span>。不愿意或拒绝改变自己的观点或 同意某事<.>.[...]

不妥协的定义是什么

但是我想知道是否有一种更“有效”的方法,例如不检索所有其他搜索结果。而且,如果可以在后台线程中加载多个结果,那么当我想“解码”一个定义并保存它时,我不必总是等待搜索完成。

【问题讨论】:

标签: java google-search google-search-api url-parsing


【解决方案1】:

更有效的方法是下载一个字典,然后您可以在本地加载它。这为您提供了一个易于搜索的本地文件或数据库。

这种方法不仅计算效率高,而且还可以确保您在其许可下正确使用信息。您提出的建议通常称为“抓取”,可能违反各种许可和服务条款。

This blog post 列出了几个免费提供和免费许可的词典。

This AskUbuntu.SE question 描述了获取免费词典并从命令行引用它所需的更多技术工作。您可能希望复制这些读取模式以在 Java 中加载数据。

另一种方法是使用免费提供且获得适当许可的 API,例如 https://dictionaryapi.com/ 。这仍将使用 HTTP 调用,但已获得明确许可,并且也是用于查找人类语言单词定义的显式 API。与抓取 Google 相比,这是一个优势,因为您不必解析 HTML,并且它已获得适当的许可供您使用。

最后,在 StackOverflow 和 StackExchange 上还有一些类似的(如果不是重复的话)问题,例如:How to implement an English dictionary in Java?

【讨论】:

  • 带有免费许可词典的博客是一个有趣的选择。但是博客里的链接都挂了,不知道在哪里可以找到呢?
  • 另外,我希望同时使用英语和西班牙语
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 1970-01-01
相关资源
最近更新 更多