若输入并没有准确地给出维基百科页面的名称,则维基百科库会显示错误



如果我使用语音识别模块发出语音命令来搜索维基百科中的某个内容,如果我没有准确地说,则显示错误。例如:我说(国防学院(维基百科页面没有这样命名,但(国防学院(印度((是一个页面,所以它显示了结果。我想根据我的语音命令搜索最近的页面。这是我的代码:

import pyttsx3
import datetime
import speech_recognition as sr
import Wikipedia
import web-browser
import os
engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id)
def speak(audio):
engine.say(audio)
engine.runAndWait()
def voiceinput():
r=sr.Recognizer()
with sr.Microphone() as source:
print("I am listening")
r.pause_threshold=1
audio=r.listen(source)
try:
print("Recognizing...")
speak("Recognizing...")
query=r.recognize_google(audio, language="en-in")
print(f"You mean {query}n")
speak(f"You mean {query}n")
except Exception as e:
print("Please repeat")
speak("please repeat?")
return "None"
return query
if "search" in query:
speak("Searching Wikipedia")
query=query.replace("search", "")
results=wikipedia.summary(query, sentences=2)
print("According to Wikipedia")
print(results)
speak("According to Wikipedia")
speak(results)

在这种情况下必须进行类似的搜索。您使用的是Wikipedia包,而不是上面标记的Pywikibot。无论如何,这里有一个代码片段,如何使用Pywikibot进行类似的搜索

>>> from difflib import get_close_matches
>>> import pywikibot
>>> site = pywikibot.Site('wikipedia:en')  # create a Site object
>>> title = 'National Defence Academy'
>>> gen = site.search('intitle:' + title, total=10, namespaces=0)
>>> titles = [page.title() for page in gen]  # list of strings required
>>> result = get_close_matches('National Defence Academy', titles)
>>> found = pywikibot.Page(site, result[0])

found是与给定标题最匹配的Page对象。获取其文本:

>>> found.text[:100]
  • 有关进一步搜索的详细信息,请参阅Pywikibot文档
  • 有关difflib的详细信息,请参阅Python文档

相关内容

  • 没有找到相关文章

最新更新