Javascript 获取维基百科上包含特定单词的所有页面标题
我正在使用HTML和JavaScript编写。对于要维基化的文本中的每个单词,我需要获得包含该单词的页面列表(这样,如果找到匹配的短语,文本中的短语可以自动维基化)。有没有办法使用Wikipedia的API或web服务获取包含特定单词的所有Wikipedia页面的列表Javascript 获取维基百科上包含特定单词的所有页面标题,javascript,mediawiki,sparql,wikipedia,dbpedia,Javascript,Mediawiki,Sparql,Wikipedia,Dbpedia,我正在使用HTML和JavaScript编写。对于要维基化的文本中的每个单词,我需要获得包含该单词的页面列表(这样,如果找到匹配的短语,文本中的短语可以自动维基化)。有没有办法使用Wikipedia的API或web服务获取包含特定单词的所有Wikipedia页面的列表 function getMatchingPageTitles(theString){ //get a list of all matching page titles for a specific string, usin
function getMatchingPageTitles(theString){
//get a list of all matching page titles for a specific string, using one of Wikipedia's APIs or web services
}
。(维基百科上有关于所有常用词的文章,我不认为链接到它们会有任何用处。)
但是,如果你真的想做这样的事情,我认为更好的方法是从你的输入文本中找出哪些单词有文章
例如,对于字符串我正在编写一个“自动wikifier”工具
,您的查询可能类似于:
答案是:
<api>
<query>
<normalized>
<n from="am" to="Am" />
<n from="writing" to="Writing" />
<n from="an" to="An" />
<n from="auto-wikifier" to="Auto-wikifier" />
<n from="tool" to="Tool" />
</normalized>
<pages>
<page ns="0" title="Auto-wikifier" missing="" />
<page pageid="2513432" ns="0" title="Am" />
<page pageid="2513422" ns="0" title="An" />
<page pageid="25346998" ns="0" title="I" />
<page pageid="30677" ns="0" title="Tool" />
<page pageid="32977" ns="0" title="Writing" />
</pages>
</query>
</api>
几点注意:
- 结果不符合您指定的顺序李>
- 如果页面不存在,则结果具有
属性missing=”“
- JSON和JSONP格式也可用,这可能更适合JavaScript
参数对每个查询的限制为50titles
- 这是一个有趣的开始。不幸的是,维基百科还是MediaWiki?这是一个巨大的不同。例如wikipedia.org或MediaWiki的一些自定义安装。@FritsvanCampen我只关心从中获取页面标题。大约有400多万篇wikipedia文章;我不相信浏览器不会崩溃。杀伤力过大?不,这也不过分。如果试图使用API和javascript获取400万条维基百科条目,那就太过分了。你为什么不解释一下你真正想要实现的目标呢?也许有更好的方法可以解决这个问题。问题是“所有页面标题”,这意味着所有2900万页,而不仅仅是400万篇文章。+1对于一个解决方案,它不涉及用一堆毫无意义的流量轰炸一个非营利网站。有没有办法找到所有包含某个词的标题的页面(而不是该词的精确匹配)?您可以尝试类似的方法,但这意味着每个单词都有一个查询。@斯维克您提出了一个很好的观点:将维基百科上有文章的每个单词都维基化是没有用的。相反,最好获取输入中包含的页面标题列表,然后询问用户是否要对每个标题进行维基化(标题按降序进行维基化)。这将避免全自动wikification的固有冗余,因为它允许用户选择特定短语进行wikify。我注意到每个查询的结果限制为50个。有没有办法获取所有包含特定单词的页面标题和重定向页面(而不是仅50个)?是否可以搜索整个单词的匹配项?(我注意到所有包含
Kre
,而不仅仅是Kre
的页面都显示为一个单词。是否可以只显示整个单词的结果?)我认为您的问题实际上是在PHP查询中围绕Kre添加空格。注意:我也刚刚开始挖掘mediawiki API。我想将查询限制在500以内是一个普遍的策略,所以我将转向dbpedia和sparql查询。我在Kre
周围添加了空格,我仍然得到类似Kreamer
和Kreacher
的结果。如果结果只包含Kre
作为一个孤立的单词,那就更好了。孤立空间似乎会自动被丢弃,我在以前的案例中已经注意到这种行为。在线搜索或打开有关此空间问题的SO问题。