从 google java 检索单词定义

Retrieving word definitions from google java

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

例如:

[...]data-dobid="dfn"><.span>. unwilling or refusing to change one's views or to agree about something<./span>.[...]

不妥协的定义是什么

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

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

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

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

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

中加载数据

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

最后在 Whosebug 和 StackExchange 上有一些类似的问题,如果不是重复的话,比如这个:How to implement an English dictionary in Java?