【问题标题】:how to spell correct with knowledge base with python?如何用python知识库拼写正确?
【发布时间】:2023-01-11 05:15:15
【问题描述】:

我想使用知识库作为拼写正确。

例如,当我给知识库(如维基百科)一个词时,该知识库将该词与维基百科的所有词进行比较,最终输出将返回最相关的词或相同的词(如果不是不正确的话)。 例如,您可以将它与 SPARQL 服务一起使用(输入一个词并在所有知识库中搜索),但如何做到这一点? 我知道我可以用下面的源代码做到这一点,但它只在一页中搜索。我无法在任何地方找到类似的源代码来搜索所有知识库。

from rdflib import Graph,URIRef
from rdflib.namespace import RDFS, SKOS
g=Graph()
g.parse('https://www.wikidata.org/wiki/Special:EntityData/Q2831.ttl')
MJ=URIRef('http://www.wikidata.org/entity/Q2831')
for label in g.objects(MJ, SKOS.altLabel):
    print(label.value, label.language)

【问题讨论】:

  • 我不明白你到底要什么? SPARQL 中的文本搜索 SPARQL 中的模糊搜索?使用 CONTAINS 函数可以完成一个简单的(尽管可能效率低下)字符串查找。更高效的搜索是使用非 SPARQL 标准的全文索引搜索,许多流行的三元组存储都支持这种机制。
  • 对于维基数据,对于 DBpedia,它将是 MWAPI,对于 DBpedia,它将是 bif:contains - 但这些并不模糊,所以无论你的意思是“拼写正确”,它可能对你不起作用
  • @UninformedUser,您好,感谢您的回复和指导。实际上,你知道我想给程序一个词,它会在所有知识库中搜索该词,如果找不到该词,它会返回最相关的词。所以,它就像一个拼写校正器不是吗? for function contain 它是否在所有维基百科中搜索?它与 python 兼容吗?关于非 SAPRQL,如果您向我展示一个源代码示例,它的输入是一个词,并且它在知识库中进行搜索,我将不胜感激。

标签: python sparql spell-checking wikipedia-api knowledge-graph


【解决方案1】:

如果我理解你的问题,你想使用维基百科作为拼写正确。

对于此任务,您可以使用以下端点获取“建议”字词:

https://en.wikipedia.org/w/api.php?action=opensearch&format=json&formatversion=2&search=<SEARCH_TERM>&namespace=0&limit=10

&lt;SEARCH_TERM&gt; 是您想要获得建议的词。

例子:

https://en.wikipedia.org/w/api.php?action=opensearch&format=json&formatversion=2&search=micro&namespace=0&limit=10

结果:

["micro",["Micro","Microsoft Windows","Microsoft","Microsoft Office","Microphone","Microsoft Word","Microsoft Excel","Microsoft 365","Microsoft PowerPoint","Microsoft Outlook"],["","","","","","","","","",""],["https://en.wikipedia.org/wiki/Micro","https://en.wikipedia.org/wiki/Microsoft_Windows","https://en.wikipedia.org/wiki/Microsoft","https://en.wikipedia.org/wiki/Microsoft_Office","https://en.wikipedia.org/wiki/Microphone","https://en.wikipedia.org/wiki/Microsoft_Word","https://en.wikipedia.org/wiki/Microsoft_Excel","https://en.wikipedia.org/wiki/Microsoft_365","https://en.wikipedia.org/wiki/Microsoft_PowerPoint","https://en.wikipedia.org/wiki/Microsoft_Outlook"]]

从这些结果中,您可以得到位置[1] 的结果。

Python示例代码:

import requests
import pandas as pd
from bs4 import BeautifulSoup
import json

try:
  url_api = "https://en.wikipedia.org/w/api.php?action=opensearch&format=json&formatversion=2&search=colo&namespace=0&limit=10" 
  api_call = requests.get(url_api)
  js = json.loads(api_call.text)
  print(js[1]) # position [1] has the "suggested" words
except Exception as ex: 
  print("Error: ")
  print(str(ex))

结果:

['Colo', 'Colombia', 'Colorado', 'Columbia University', 'Colosseum', 'Columbia Pictures', 'Cologne', 'Colorectal cancer', 'Columbus, Ohio', 'Columbia Records']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 2021-11-23
    相关资源
    最近更新 更多