View Full Version : Xin bản VP database/Macro tạo bản convert thành dịch thô
duongthanh85
29-09-2008, 11:56 PM
News (20/11/2008):
Cập nhật bản Macro Mới nhất :101: (V 11) :101:
Cho phép lựa chọn file data, fix lỗi, thêm dữ liệu....and more...
File Data.txt đi kèm là file data của: Liên Hoa Bảo Giám, Ác Ma Pháp Tắc. :101:
!!!
Bạn nhớ sau khi import sẽ có nhiều Macro, chạy Macro: ABC nhé.
Sorry, sáng nay ta post nhưng có chút lỗi. Cập nhật lại file 2h05PM
----------------------------
Intro: một macro giúp bạn tạo những file convert chất lượng dần dựa vào kinh nghiệm đọc convert của bạn và anh/em.
Cách dùng: bạn import file *.bas vào word, đồng thời copy file data.txt vào ổ C. Sau đó trong quá trình đọc truyện bạn thêm các từ và cụm từ vào file data để tái sử dụng nhé.
(Tham khảo bài phía dưới - có hình minh họa)
Cấu trúc file dữ liệu file data.txt
Từ hoặc cụm từ cần thay thế = từ hoặc cụm từ sẽ thay thế
long thanh ngày = long thanh thiên
làm sao mạ? = làm sao đâu?
ngã = ta
ái nhĩ na = athena
ngày sử = thiên sứ
huntercd
30-09-2008, 12:42 AM
Bạn có thể hứong dẫn cụ thể hơn ko? Hướng dẫn bằng hình ảnh càng tốt.
"1. mở word ra, vào tool > macro > visual basic editor " <- bước này làm rồi - "sau đó paste vào. " vấn đề là past cái gì vào và paste ở đâu, đề nghị bạn giải thích rõ ra - "copy file data.txt vào ổ C" copy vào bất cứ đâu của ổ C cũng được à???
duongthanh85
30-09-2008, 12:48 AM
Ví dụ với truyện Trương Tam Phong:
- Từ bản convert 4 cột lấy ra các tên tiếng anh tương ứng; trong quá trình đọc gặp một tên mới thì dò ra tên tiếng anh và thêm vào file data. Các câu thường gặp từng truyện cũng cho vào.
- Copy cột phiên âm tiếng việt và paste dưới dạng text only. Chạy macro này là có một bản dễ đọc.
- Mỗi lần đọc vài chương thì thủ sẵn bút giấy và ghi lại các từ - hoặc ghi Note lại (ta đọc trên mobi, đọc trên PC thì ghi luôn vào data cho nhanh), sau tầm vài chục chương thì các chương sau đã khá dễ đọc.
----------------------------------
Cách dùng:
- Copy file data.txt vào ổ C, ngay thư mục chủ nhé.
Bạn thêm dữ liệu vào theo hình thức:
Từ cần thay thế = từ sẽ thay thế
ngày ạ = trời ạ
ngã = ta
- Mở word ra vào VisualBasic Editor:
http://img.photobucket.com/albums/v221/duongdinhthanhbk85/Cache/ScreenHunter_01Sep300053.jpg
- Import file Newmacro.bas vào:
http://img.photobucket.com/albums/v221/duongdinhthanhbk85/Cache/ScreenHunter_02Sep300053.jpg
http://img.photobucket.com/albums/v221/duongdinhthanhbk85/Cache/ScreenHunter_03Sep300053.jpg
- Muốn sử dụng bạn vào Tool>Macro > Macro và chọn Macro rồi nhấn RUN để chạy.
http://img.photobucket.com/albums/v221/duongdinhthanhbk85/Cache/ScreenHunter_05Sep300054.jpg
http://img.photobucket.com/albums/v221/duongdinhthanhbk85/Cache/ScreenHunter_06Sep300054.jpg
--------------------
Tạo nút nhấn thực hiện macro:
(Hướng dẫn tạo nút nhấn trên thanh công cụ word để thực hiện macro thay vì mỗi lần sử dụng bạn phải vào Tool>Macro > Macro và chọn Macro rồi nhấn RUN để chạy).
- Vào View>toolbars> Customize:
http://img.photobucket.com/albums/v221/duongdinhthanhbk85/Cache/ScreenHunter_08Sep300054.jpg
Chọn Macro bên khung bên trái và nhấn giữ chuột trái vào Macro trong khung bên phải rồi vứt lên thanh công cụ.
http://img.photobucket.com/albums/v221/duongdinhthanhbk85/Cache/ScreenHunter_09Sep300055.jpg
(Có thể nhấn chuột phải vào nút nhấn mới tạo để rename hay gán icon cho nút nhấn chạy macro này)
duongthanh85
30-09-2008, 12:50 AM
Bạn có thể hứong dẫn cụ thể hơn ko? Hướng dẫn bằng hình ảnh càng tốt.
"1. mở word ra, vào tool > macro > visual basic editor " <- bước này làm rồi - "sau đó paste vào. " vấn đề là past cái gì vào và paste ở đâu, đề nghị bạn giải thích rõ ra - "copy file data.txt vào ổ C" copy vào bất cứ đâu của ổ C cũng được à???
Paste vào là nội dung của file newmacro đính kém ấy. không thì bạn import vào file đó cũng được (newmacro.bas).
fil data để ở C:/data.txt ( để luôn thư mục gốc) :14:
Đang chụp ảnh làm hướng dẫn.......
Đã thêm hình minh hoạ. Nhưng file data các bạn thử tự tạo để tập dùng rồi anh em tiến hành xử lý các truyện nhé
bacola
30-09-2008, 01:05 AM
Bạn có thể hứong dẫn cụ thể hơn ko? Hướng dẫn bằng hình ảnh càng tốt.
"1. mở word ra, vào tool > macro > visual basic editor " <- bước này làm rồi - "sau đó paste vào. " vấn đề là past cái gì vào và paste ở đâu, đề nghị bạn giải thích rõ ra - "copy file data.txt vào ổ C" copy vào bất cứ đâu của ổ C cũng được à???
trong file NewMacros.bas mặc định đường dẫn là C:\Data.txt
nếu bạn muốn chép vô bất cứ nơi đâu thì dùng notepad để mở file NewMacros.bas rồi chép đường dẫn nơi bạn lưu NewMacros.bas rồi thay đường dẫn là ok.
Set objStream = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Data.txt", 1, False, -2)
If (Not objStream Is Nothing) Then
With objStream
Open "C:\Data.txt" For Input As #1 ' Open database
thay đổi thành G:\TRUYEN\Bien Tap\data.txt
Set objStream = CreateObject("Scripting.FileSystemObject").OpenTextFile("G:\TRUYEN\Bien Tap\data.txt", 1, False, -2)
If (Not objStream Is Nothing) Then
With objStream
Open "G:\TRUYEN\Bien Tap\data.txt" For Input As #1 ' Open database
bacola
30-09-2008, 01:09 AM
macro chạy báo lỗi 62....
dính ngay dòng debug tại đây:
txt2 = .ReadLine 'Doc dong thu 2 & gan vao bien txt2
duongthanh85
30-09-2008, 01:31 AM
macro chạy báo lỗi 62....
dính ngay dòng debug tại đây:
txt2 = .ReadLine 'Doc dong thu 2 & gan vao bien txt2
Mình đã sửa lại và edit lại luôn bài đầu. Bạn tải về file đính kèm từ bài post đầu và thử chạy xem nhé :0 (37)::0 (37)::0 (37):
Tốt nhất bạn remove file bas lúc nãy đi. Cả file data cũng xoá đi. Mình đưa lên file rar gồm cả 2 file bas và txt mà mình vừa chạy thử xong.
bacola
30-09-2008, 01:40 AM
chào bạn... ý tưởng của bạn khác hay.
nhưng Bacola góp ý là bạn nên làm giống như ban đầu:
-------------
long thanh ngày = long thanh thiên
làm sao mạ? = làm sao đâu?
ngã = ta
ái nhĩ na = athena
ngày sử = thiên sứ
dạy hoàng = giáo hoàng
vương đều = vương đô
khắc lý = kerry
Phổ lya = Fu ly
bần đạo = ta
năm vương tử = ngũ hoàng tử
Hiểu được liễu = hiểu rồi
đều,cũng = đều
hay,chính là =chính là
cười khổ liễu = cười khổ
một hồi lai = quay trở lại
chỉ bất quá = tuy nhiên
địa xác = chính xác là
không ở,vắng mặt = vắng mặt
như vậy sẽ dễ tra cứu và sửa chữa file Data.txt
duongthanh85
30-09-2008, 01:43 AM
chào bạn... ý tưởng của bạn khác hay.
nhưng Bacola góp ý là bạn nên làm giống như ban đầu:
như vậy sẽ dễ tra cứu và sửa chữa file Data.txt
Ban đầu mình cũng để vậy, nhưng mình để thành 2 dòng là đề phòng cả các dấu cách. Ví dụ như "ngã" thì có thể tìm được cả trong "ngãng" hay " ngãn" .... nên mình để thành từng dòng. Việc này xuất phát từ việc mình làm với truyện trương tam phong thì xảy ra tình huống là cả các cụm ký tự trong một từ khác cũng bị thay nếu không xét dấu cách cuối. Hay như từ sau khi thay thì mất mất dấu cách.
Nên mình để thành 2 dòng tách biệt và sửa bằng NotePad++
Mình thấy nếu để 2 dòng thì tăng tốc độ chạy lên nhiều vì không phải xử lý tách chuỗi. Nhất là khi dữ liệu là vài nghìn dòng.
:2 (35):
bacola
30-09-2008, 01:44 AM
Mình đã sửa lại và edit lại luôn bài đầu. Bạn tải về file đính kèm từ bài post đầu và thử chạy xem nhé :0 (37)::0 (37)::0 (37):
Tốt nhất bạn remove file bas lúc nãy đi. Cả file data cũng xoá đi. Mình đưa lên file rar gồm cả 2 file bas và txt mà mình vừa chạy thử xong.
nếu mình thêm 2 dòng nữa thì vẫn bị lỗi 62 ..end of file
=> xử lý kết thúc file đi bạn
duongthanh85
30-09-2008, 01:50 AM
nếu mình thêm 2 dòng nữa thì vẫn bị lỗi 62 ..end of file
=> xử lý kết thúc file đi bạn
Mình đã sửa rồi (và thay mới file đính kèm lần 3 rồi). Bạn tải lại xem sao. Mình mới thử thêm vài dòng và chạy ngon lành :58:
Còn phần để dữ liệu trong 2 dòng vì mình nghĩ nếu thế thì máy không phải xử lý tách chuỗi để tăng tốc độ chạy ( khá lâu với file data vài nghìn dòng).
daitri_giangu
30-09-2008, 03:24 AM
nếu mình thêm 2 dòng nữa thì vẫn bị lỗi 62 ..end of file
=> xử lý kết thúc file đi bạn
Hihi, mình chạy không bị lỗi, chương trình này hay, đơn giản và dễ sử dụng, cám ơn bạn DT nhiều
:22::22::22::0 (37)::0 (37)::0 (37):
Nếu như mỗi người góp 1 tay cho data.txt thì bản dịch thô đọc khá ngon, hihi
xét kịch bản:
trong file Data.txt
- bình thường số dòng luôn chẵn.
- trong 1 vài trường hợp nào đó số dòng sẽ được thêm trong file data.txt sẽ là lẻ.
bởi vậy data.txt phải phù hợp không có số dòng lẻ
Tuy nhiên nếu xử lý data.txt trên cùng 1 dòng thì dễ xem và chỉnh sửa hơn
Chúc vui
phamlongtuan
30-09-2008, 03:50 AM
Ý tưởng xuất sắc lắm bạn. Thanks cho bạn nhiều nhiều :0 (9):
Mình góp ý như này. Tất cả mọi người khi làm một cái file đóng góp cho micro này. Nhớ ghi rõ là micro dành cho truyện gì, vì một số tên riêng chỉ dành riêng cho truyện đó ví dụ như trong cuồng thần có đoạ lạc thiên sứ hoặc bỉ mông cự thú. vân vân.....
Sau khi mọi người ghi rõ ràng, nén vào rồi post lên đây. Bạn chủ topic sẽ update lại vào chính bài của bạn, nhưng khi update bạn ghi rõ là đã thêm vào nhưng micro của ai. Như vậy dần dần thư viện micro được kiểm soát một cách chặt chẽ và đầy đủ đề từ đó đi tới hoạn thiện. Thân
PLT
duongthanh85
30-09-2008, 05:58 AM
- Về trường hợp nhỡ may có số dòng lẻ (như tiện tay nhấn enter cuối cùng chẳng hạn): mình thêm một dòng if là ngon lành, mình gửi kèm luôn trong bài post này tạm để bạn xem thử. :1 (3):
- Còn về data trên một dòng, nếu các bạn thấy để như vậy hợp lý hơn thì mình sẽ viết thêm thôi. Cũng nhanh mà :00 (31): để trưa ngồi xem và viết thêm kiểu đó theo cách mình cho là nhanh nhất :0 (112):
Tuy vậy việc này thực ra đơn giản; việc chuyển qua lại giữa 2 dạng file data như thế cũng nhanh. Nên bạn có thể bắt đầu làm file data bằng quy định trên cùng một dòng. Phân cách bởi dấu = như ví dụ của mình cũng được.
- Mục đích chính của mình là kêu gọi cộng đồng anh em nghiện làm thuốc tự chế mà. Nỗi lòng của một con nghiện ...cấp độ khẩn cấp.
+ Bây giờ mình ra bến xe; chiều nay mình sẽ ngồi viết lại thêm phần để dữ liệu trên cùng một dòng theo góp ý của các bạn.
-Xoá file thử nghiệm.
bacola
30-09-2008, 07:14 AM
nếu bạn sửa dòng if:
///////////////////////////////////////////////////////////////////
txt1 = .ReadLine 'Doc dong thu 1 & gan vao bien txt1 //
if Not EOF(1) then //
Line Input #1, txt2 //
txt2 = .ReadLine 'Doc dong thu 2 & gan vao bien txt2 //
//
//////////////////////////////////////////////////////////////////
dòng if Not EOF(1) then chỉ kiểm tra xem nó là cuối file chưa..chỉ xử lý khi lỡ ấn enter cuối file gây ra dòng lẻ.(ok)
giả thiết:
bây giờ không nhấn enter mà dòng vẫn lẻ do người dùng nhập sai(thiếu).
-File Data.txt có 300 dòng.
-dòng 29 nội dung là : "ab"
-dòng 30 nội dung là : "ad"
-dòng 31 nội dung là: "CD"
-ở dòng 30 bị thiếu(vì 1 lý do nào đó)
=> bây giờ sẽ có 299 dòng. khi run macro sẽ bị gán lung tung từ dòng 29 trở đi.
----------------
thôi thì nhỡ làm luôn dạng file Data.txt dạng "cần thay=linh kiện" ...
----------------------------------------
"làm ra cái tools hay hay + nhiệt tình của mọi người <=> tất cả vì tương lai dân nghiện truyện chúng ta..."
NB123
30-09-2008, 12:22 PM
Sao phải khổ thế nhỉ?
Cứ thêm thẳng vào VietPhase database hoặc Names database của Chinese Translator là xong mà.
Build Names với VietPhase chuẩn dùng CT dịch thẳng từ bản tiếng Trung đọc kool hơn convert nhiều :)
duongthanh85
30-09-2008, 01:14 PM
Sao phải khổ thế nhỉ?
Cứ thêm thẳng vào VietPhase database hoặc Names database của Chinese Translator là xong mà.
Build Names với VietPhase chuẩn dùng CT dịch thẳng từ bản tiếng Trung đọc kool hơn convert nhiều :)
Cái này mình không cho là khổ. :124:
Không phải mọi người đều tự tạo bản convẻ (chính xác ra thì chỉ số ít người tạo bản convert) và phần nhiều là không dùng vietphase mà đọc trực tiếp các bản convert được đưa lên. Với macro này mình chỉ nêu một cách để nhờ vào đóng góp chung - kiểu kinh nghiệm - của mọi người mà hoàn thiện một bản convert một cách tự động thay vì dịch thô. Và tiến tới một bản convert dễ đọc hơn cho tất cả con nghiện thôi.
Mình cũng chưa bao giờ cài vietphase :92: mình chỉ lấy bản convert về và sửa lại cho dễ đọc. Nói chung tùy nhu cầu mà bạn sử dụng những công cụ khác nhau thôi :58: Riêng mình thì mình cho rằng số người có nhu cầu sử dụng một công cụ như macro này chắc chắn nhiều hơn số người dùng vietphase (Cứ xem số người chờ bản convert bàn long là thấy ^^)
Chút mình viết lại theo đúng kiểu Từ cần thay = từ sẽ thay
duongthanh85
30-09-2008, 03:37 PM
Xong rồi nhé. Download ở bài post đầu. Mình thay đổi gì sẽ cập nhật ở bài post đầu; các bạn chỉ cần xem tên file đính kèm là thấy. Như hiện nay là lần thứ 5 sửa thì mình để tên MacroDataV5.rar
Data.txt được định dạng theo kiểu:
Từ bị thay thế = từ sẽ thay thế vào
VD:
Long thanh ngày = long thanh thiên
Chú ý: đừng để dòng trắng hay ... thiếu dấu = nhé. Hí hí, mình định viết xử lý cả như thế nhưng không viết nữa để tăng tốc độ chạy macro hơn.
Hiện tượng là mình thử làm 1 ví dụ với 1000 từ thay thế cho 1 file gồm 900 trang convert thì bị đơ một chút, để kệ nó thì tầm 5p là xong. (Có lẽ do máy mình hơi yếu: C2.0; 256ram)
daitri_giangu
30-09-2008, 03:55 PM
Sao phải khổ thế nhỉ?
Cứ thêm thẳng vào VietPhase database hoặc Names database của Chinese Translator là xong mà.
Build Names với VietPhase chuẩn dùng CT dịch thẳng từ bản tiếng Trung đọc kool hơn convert nhiều :)
Ý kiến của bạn có thể dùng được với điều kiện văn phong của tác giả TQ tương đối là giống nhau (?), với lại các chuyên gia convert phải hiểu các tính năng của CT convert, nói chính xác hơn thì CT convert cũng có các đọan code có tính năng như Macro bạn DT đã viết
Mặt khác macro của bạn DT thì khi sử dụng sẽ uyển chuyển hơn, dễ thêm thắt sửa đổi không phụ thuộc vào CT convert.
Mình ủng hộ ý tưởng của bạn DT, hihi.
Chúc vui
bacola
30-09-2008, 05:19 PM
Chú ý: đừng để dòng trắng hay ... thiếu dấu = nhé.
Arr = Split(txt, "=", 2)
----một chút xíu nữa
trước khi cắt chuỗi bạn nên kiểm tra xem chuổi có dấu "=" hay là dòng trắng. nếu không có = hay là dòng trắng => bỏ qua dòng đó.
duongthanh85
30-09-2008, 07:18 PM
Mình đưa lên 2 file data của 2 truyện này trước. Bây giờ mới chỉ có vài từ thôi; mình hy vọng mọi người cùng bổ sung và đính kèm hết vào topic này.
Nếu Mod cho phép mình lập một Topic khác chỉ để đưa các file data lên. Tất cả sẽ được tiến hành theo kiểu:
- Mọi người thêm vào file data các từ và cụm từ trong quá trình đọc và thay thế tương ứng.
- gửi lên topic và sau đó tập hợp lại dưới dạng một file data mới.
- File data mới sẽ đưa lên bài post đầu tiên với các đặt tên có số tăng dần. Như bây giờ là V1, khi tiến hành cập nhật theo sự đóng góp của các bạn thì sẽ đánh số V2; tiếp tục vài ngày hoặc vài tuần chúng ta lại cập nhật và có V3.... Tiếp tục theo kinh nghiệm đọc convert của chúng ta :2 (9):
Mình khởi đầu với 2 file data của 2 truyện mình đang đọc:
- Liên Hoa Bảo Giám
- Trương Tam Phong dị giới du
:2 (33):
bacola
01-10-2008, 02:28 PM
có một vấn đề khá thú vị...các bạn nghiên cứu nha.
b1:bạn hãy tải 1 trong 2 file trong post trên (của bạn duongthanh85):
Mình khởi đầu với 2 file data của 2 truyện mình đang đọc:
- Liên Hoa Bảo Giám
- Trương Tam Phong dị giới du
b2: tạo mới 1 file word.
b3:sau khi giải nén bạn hãy mở file Data.txt rồi copy tất cả nội dung sang file word.
b4: chạy macro
b5: mở xem file word (kết quả => nhiều từ không thay đổi)
---------------
còn vấn đề nữa là file LHBG.zip của bạn duongthanh85 phần cuối có mấy tên thiếu dấu = (các bạn nhớ bổ sung => không thì báo lỗi)
-bổ sung thêm 3 dòng lệnh (in đậm) để bỏ lỗi thiếu dấu '='
Selection.Find.MatchCase = False ' chọn chế độ find không phân biệt hoa thường
Do While Not EOF(1)
Line Input #1, txt
txt = .ReadLine 'Doc dong thu 1 & gan vao bien txt1
i = InStr(txt, "=")
If (i <> 0) Then 'nếu không có dấu = thì bỏ qua dòng đó
Arr = Split(txt, "=", 2)
txt1 = Trim(Arr(0)) & " "
txt2 = Trim(Arr(1)) & " "
With Selection.Find 'thuc hien replace txt1 boi txt2
.Text = txt1
.Replacement.Text = txt2
End With
Selection.Find.Execute Replace:=wdReplaceAll 'replace toan van ban
End If
Loop
duongthanh85
01-10-2008, 06:26 PM
Do While Not EOF(1)
Line Input #1, txt
txt = .ReadLine 'Doc dong thu 1 & gan vao bien txt1
j = InStr(txt, "=") 'Neu dong khong co dau = thi bo qua
If j <> 0 Then
Arr = Split(txt, "=", 2)
txt1 = Trim(Arr(0)) & " "
txt2 = Trim(Arr(1)) & " "
With Selection.Find 'thuc hien replace txt1 boi txt2
.Text = txt1
.Replacement.Text = txt2
End With
Selection.Find.Execute Replace:=wdReplaceAll
End If
Loop
Mình đã bổ sung hôm qua về trường hợp không có dấu "=" rồi. Hiện tại mình vẫn dùng tốt. :26:
Nhưng đúng là chưa có thêm vào không phân biệt chữ HOA và chữ thường. Word mình để mặc định như vậy rồi nên mình cũng không để ý :2 (45): Thanks.
duongthanh85
02-10-2008, 09:24 AM
bác nào biết vì sao mình replace các tên có dấu ' | ' ở giữa thì nó ko thực hiện nhỉ? (thêm các tên vào trong file data.txt, ví dụ:
"bất đồng | không giống = bất đồng" thì nó cũng ko chuyển)
đã thử sửa nhưng vẫn vô hiệu :(
có ai biết ko?
A, a;cái này :0 (97): mình đáng bị oánh :0 (128):
Hì hì.
Bạn tải lại ở trang đầu nhé. Cám ơn bạn góp ý :0 (37):
daitri_giangu
21-10-2008, 10:47 AM
Là sao? Mình cũng bị lỗi 1 số từ có dấu ( . ) hay( , ) ở sau là no ko thay. Bạn có thể hướng dẫn cụ thể hơn chút đc ko? Thanks nhiều:23:
Phiên bản macro 8
Nhấn ALT-F11 vào macro
- bỏ gọi macro 4 'Call Macro4
-Thêm đọan này vào : ( để tách dấu chấm, dấu phẩy ra 1 khỏang trắng trước khi thay thế . )
With Selection.Find
.Text = ";"
.Replacement.Text = " ;"
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "."
.Replacement.Text = " ."
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = ","
.Replacement.Text = " ,"
End With
Selection.Find.Execute Replace:=wdReplaceAll
-Sau đó Save lại và chạy Macro
Chúc vui