Dùng Python — Tra cứu nghĩa tiếng Việt của các từ trong một file văn bản!
Mô tả dự án:
- Bạn đang đọc một tài liệu tiếng anh và thấy rằng mình cần phải tra cứu rất nhiều từ (tra từng từ sẽ rất mất thời gian)
- Từ điển online thì có sẵn (ví dụ: vdict.com) nhưng không thể vừa đọc tài liệu vừa tra được (cũng lại mất thời gian)
- Có cách nào để máy tính làm giúp bạn công việc trên? (những công việc đơn giản nhưng rất mất thời gian là thế mạnh của máy tính mà)
Lựa chọn ngôn ngữ lập trình:
- Python (vì đơn giản, ngắn gọn nhưng đầy sức mạnh, xem thêm code phía dưới sẽ thấy rõ điều này, chỉ có 26 dòng code thôi)
Hiệu quả:
- Tra cứu tự động thông qua vdict.com (vdict server có vẻ xử lý chậm khi nhận nhiều yêu cầu, nên không thể yêu cầu liên tục được)
- 50 từ mất 10 phút 41 giây,
- 152 từ mất 32 phút 5 giây,
- như vậy để lấy hết dữ liệu Anh – Việt của vdict.com sẽ mất 13 ngày (dữ liệu Anh – Việt của vdict.com khoảng 95000 từ).
Code (26 lines):
import urllib, re, time
textFile = open("E:\LearningProg\Python\english.txt","r")#just a test text file
textDoc = textFile.read()
charset = "[a-zA-Z]+" #set of character for words
words = re.findall(charset,textDoc) #find all word in the text
htmlBody = ""
count = 1
for theWord in words[0:100]:#example with 100 word
wordDict = urllib.urlopen("http://vdict.com/"+theWord.lower()+",1,0,0.html")#open HTML file from vdict.com
wordDictText = wordDict.read()
wordDict.close()
startIndex = wordDictText.find("""<td class="resultContent">""")
temp = wordDictText[startIndex:]
endIndex = temp.find("</td>") + len("</td>")
wordDef = temp[0:endIndex]
print "writing word no.%s" % count
htmlBody += "<p>" + """<h1>""" + str(count) + " --> " + theWord.lower() + """</h1>""" + "</p>"
htmlBody += "<table><tr>" + wordDef + "</tr></table>"
count += 1
if ((count % 5) == 0): time.sleep(60)#sleep for a while after each 5 words waiting vdict.com server
htmlTitle = "<title>" + "Nghia cua cac tu trong " + textFile.name.lower() + "</title>"
htmlCode = "<html>" + htmlTitle + "<body>" + htmlBody + "</body" + "</html>"
fileName = "e:\LearningProg\Python" + "\\" + "TextTest.html"#create a output file in HTML form
outFile = open(fileName,"w")
outFile.write(htmlCode)
outFile.close()
Tháng Tư 3, 2009 lúc 3:10 chiều
Cập nhật: thay vì gọi đến trang của vdict, bạn có thể gọi đến trang tracuu.baamboo.com để tăng tốc độ (150 từ chỉ mất khoảng 4 phút)
Tháng Tư 4, 2009 lúc 12:00 sáng
Cập nhật 2: tra cứu Nhật – Việt với tracuu.baamboo.com, 3818 từ mất 8 giờ 30 phút.
Tháng Tư 5, 2009 lúc 12:23 sáng
Cập nhật 3: tra cứu Nhật – Việt với tracuu.baamboo.com, 2900 từ mất 45 phút (nhanh hon 11 lan so voi lan cap nhat 2).
Tháng Một 3, 2011 lúc 6:15 sáng
[…] Dùng Python — Tra cứu nghĩa tiếng Việt của các từ trong một file văn bản! April 2009 3 comments […]