我有大约 100,000 个独特的城市名称,其中许多都有拼写错误(扫描错误、ocr 错误、许多带有特殊字符的欧洲名称等)。我可以在python中编写一个循环,用谷歌地图一一检查城市,看看拼写是否正确?例如,如果我发送“nev york”,我想收到“您的意思是:New York”之类的内容。我已经做了很多事情,比如匹配一个列表,然后计算 levenshtein 距离等。
问问题
2508 次
2 回答
1
我刚刚发现了difflib
它很酷的东西。
它几乎像拼写检查
>>> import difflib
>>> x = 'smoke'
>>> y = ['choke','poke','loc','joke','mediocre', 'folk']
>>>
>>> difflib.get_close_matches(x,y)
['poke', 'joke', 'choke']
>>> x = 'nev york'
>>> y = ['New York', 'Compton', ' Phoenix']
>>> difflib.get_close_matches(x,y)
['New York']
唯一的另一部分是将所有城市正确拼写到列表中..或找到具有“正确拼写城市”字文件的人
于 2013-06-06T23:03:55.300 回答
1
咳咳……好吧。这是一个不同的方法
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
def setup():
driver = webdriver.Chrome()
driver.get("http://maps.google.com")
return driver
def spelledCorrectly(driver, maybeMisspelled):
searchBox = driver.find_element_by_name('gbqfq')
searchBox.send_keys(maybeMisspelled)
ref = driver.find_element_by_id('refsec')
if ref.text == u'':
print "Spelled Correctly"
else:
print ref.text
if __name__ == "__main__":
driver = setup() #pass this object into spelledCorrectly
spelledCorrectly(driver,"schenekctity")
运行setup()
一次,然后运行spelledCorrectly()
任何单词。
例如......
driver = setup()
for item in giant_misspelled_list_of_cities:
spelledCorrectly(driver, item)
于 2013-06-06T23:38:29.923 回答