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:

  1. 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)
  2. 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)
  3. 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()

4 bình luận to “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!”

  1. 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)

  2. 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.

  3. 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).

  4. […] 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 […]

Gửi phản hồi cho quangphuc Hủy trả lời