【问题标题】:Auto-suggest entities using the Wikipedia API使用 Wikipedia API 自动推荐实体
【发布时间】:2017-09-25 21:13:43
【问题描述】:

我想为我的用户提供自动建议功能,他们可以从语义实体数据库中的已知“事物”列表中进行选择。

我正在考虑使用 Wikipedia Media API 而不是自己设置: https://www.mediawiki.org/wiki/API:Main_page

有一个用于测试请求的 API 工具: https://www.mediawiki.org/wiki/Special:ApiSandbox

例如,如果用户喜欢猫: https://www.wikidata.org/wiki/Q146

请求将是: https://en.wikipedia.org/w/api.php?action=query&format=jsonfm&prop=pageterms&list=&meta=&titles=C https://en.wikipedia.org/w/api.php?action=query&format=jsonfm&prop=pageterms&list=&meta=&titles=Ca https://en.wikipedia.org/w/api.php?action=query&format=jsonfm&prop=pageterms&list=&meta=&titles=Cat

用户会从下拉列表中选择 Cat,我会保存 ID。

这是一个好方法吗?我该如何改进它?

【问题讨论】:

  • 你想达到什么目的?
  • 试图通过真实事物列表验证用户输入。防止用户输入 sjakhajsfkh 作为条目。它必须匹配一个真实的东西,例如维基百科条目
  • 什么是好的方法取决于上下文,你没有分享太多。例如,你同意别人确定什么是“已知的”吗? Wikidata 有一个相当大的数据库,但它并不包含所有内容,并且有些内容被故意省略(例如,由于不够重要)。
  • 我假设维基百科是我的版主,只添加有效且不淫秽的东西等。而不是在我的末端构建该功能

标签: semantic-web wikipedia-api autosuggest linked-data


【解决方案1】:

我设法使用 Wikipedia REST api 加载自动建议:

https://en.wikipedia.org/w/api.php?action=query&format=json&gsrlimit=15&generator=search&origin=*&gsrsearch=

Angular 代码:

this.resultsCtrl = new FormControl();
this.resultsCtrl.valueChanges
  .debounceTime(400)
  .subscribe(name => {
    if (name) {
      this.filteredResults = this.filterResults(name);
    }
  });

filterResults(name: string) {
  return Observable.create(obs => {
    const displaySuggestions = function (response) {
      if (!response) {
        obs.error(status);
      } else {
        obs.next(Object.keys(response.query.pages).map(key => response.query.pages[key]));
        obs.complete();
      }
    };
    this.http.get('https://en.wikipedia.org/w/api.php?action=query&format=json&gsrlimit=15&generator=search&origin=*&gsrsearch='
      + encodeURI(name))
      .subscribe(displaySuggestions);
  });
}

【讨论】:

    猜你喜欢
    • 2016-04-22
    • 1970-01-01
    • 2015-04-10
    • 2011-07-08
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    相关资源
    最近更新 更多