PDA

View Full Version : Làm tự điển nhỏ.



The Old Man
20-12-2007, 13:26
Xin hỏi làm sao tôi có thể tìm 1 list các chữ (từ) của tiếng Việt để làm database cho cuốn tự diển nhỏ portable.
Tôi hay viết sai chính tả dấu hỏi ngã nên muốn tự viết cho mình một cuốn tự diển portable nhỏ thật ngắn và gọn nhanh đề kiểm soát dấu hỏi ngã, S hay X, Ch hay Tr, N có G hay không G.

Có ai biết ngôn ngữ VN có bao nhiêu chữ (từ) hay không?

Nếu phải vào các trang web Việt Nam capture một mớ bài tiếng Việt rồi gạn lọc (rip) ra thành từng chữ thì lâu quá. Vậy xin các bạn có database hay text file tự điển VN thì có thể cho xin hay vay. Sẽ trả lại vốn lẩn lời bằng cái chương trình Tự Điển với source code.

The Old Man
21-12-2007, 02:56
Chắc không ai có, hoặc có mà không muốn share.
Thôi thì phải viết thêm một soft nhỏ vào các website đọc các post tiếng việt và rip ra từng chữ vậy. Chắc rip từ sách kiếm hiệp chắc có nhiều trang nhiều từ hơn.
:bawling: Mất công quá. Có ai có không? Hic .. Hic :bawling:

zmt264
21-12-2007, 04:40
Xin hỏi làm sao tôi có thể tìm 1 list các chữ (từ) của tiếng Việt để làm database cho cuốn tự diển nhỏ portable.
Tôi hay viết sai chính tả dấu hỏi ngã nên muốn tự viết cho mình một cuốn tự diển portable nhỏ thật ngắn và gọn nhanh đề kiểm soát dấu hỏi ngã, S hay X, Ch hay Tr, N có G hay không G.

Có ai biết ngôn ngữ VN có bao nhiêu chữ (từ) hay không?

Nếu phải vào các trang web Việt Nam capture một mớ bài tiếng Việt rồi gạn lọc (rip) ra thành từng chữ thì lâu quá. Vậy xin các bạn có database hay text file tự điển VN thì có thể cho xin hay vay. Sẽ trả lại vốn lẩn lời bằng cái chương trình Tự Điển với source code.

em có cái đó, tiếc là máy bị format rồi :D để khi nào em lục trong đống email nếu còn thì gửi cho bác.

Tiếng Việt có khoảng 15000 từ (hay tiếng) phát âm được (trong đó có 7000 từ thông dụng), số lượng từ (ghép và đơn) thông dụng chừng 60 ngàn (tương đương bên Ăng Lê, bằng số lượng từ mà lão Sớc Sin biết).

Bác có thể download từ điển stardict (open source) rồi dùng dữ liệu từ điển Tiếng Việt có sẵn rất nhiều trên mạng (bộ của Hồ Ngọc Đức) hoặc đợi vài hôm em làm 1 cái portable stardict có sẵn data.

Hơ hơ, mà bác lập trình ngôn ngữ gì vậy :D

The Old Man
21-12-2007, 04:46
Sau khi đi vào các trang web đọc môt số bài, và gạn lọc mấy cuốn truyện chưỡng Kim Dung, tôi rip ra được khoảng độ gần 5800 chữ đơn.
Tôi chỉ nói đến chữ đơn như "ăn", "uống", "tìm", "sẻ", "sẽ", "nguyễn","tranh", "đấu" v.v không kể tới các danh từ kép như "tranh đấu", "khuyết điểm" v.v.
Và tôi nhân thấy rằng chữ đơn (danh từ đơn) không thể tạo thêm được mà chỉ có thể tạo ra chử kép (danh từ kép)
Chữ Viêt Nam của mình chỉ vỏn vẹn dưới 6000 chữ (từ).
Tôi sẽ tìm cách rút ra coi trong đó có bao nhiêu chữ có:
1- dấu hỏi
2- dấu ngã
3- chữ S
4- chữ X
5- bắt đầu bằng CH
6- bắt đầu bằng TR
7- tận cùng bằng NG

Đó là 7 cái lổi người viết chữ Việt dể lầm lẫn nhất.

Chờ xem !!

CuopSW
21-12-2007, 06:19
Góp vài ý:

- Bạn tự viết chương trình rip lấy là đúng rồi. Một chương trình con con xử lý một dữ liệu nhỏ mà đi xin thì thời gian tìm hiểu và thời gian "há miệng chờ sung" còn quá nhiều lần thời gian tự viết. Mặt khác, nếu bạn muốn đóng góp gì cho thiên hạ thì 99% việc nên tự trông chờ vào bản thân trước đã.

- Để làm được cái gì đó cho thiên hạ dùng bạn cần ít ra kiếm mấy quyển sách về ngôn ngữ. Ví dụ người ta không gọi là từ kép mà chỉ là từ. Cái bạn gọi là từ người ta gọi là âm tiết.

- Bạn gì ở trên nói tiếng Việt có trên 7000 âm tiết là tương đối chính xác. Còn bạn mới chỉ tìm được 6000 âm tiết thì có nghĩa là dữ liệu của bạn vừa bé vừa chưa đủ đa dạng. Chưởng Kim Dung chỉ là chuyện của một tác giả nên số lượng từ / âm tiết không phủ kín được, mặt khác dữ liệu (dù là trọn bộ Kim Dung) như thế là quá nhỏ. Thường phải có trên vài GB thì mới coi là tạm đủ.

- Đã có những cách tiếp cận vấn đề này hay hơn hoặc đầy đủ hơn. Đó là ở trong nước đã có phát hành các từ điển chính tả và một số sách nghiên cứu về dấu hỏi/ngã rồi. Coi chừng "phát minh lại bánh xe".

- Chỉ có người nam bộ "thứ thiệt" mới hay nhầm dấu hỏi và ngã. Đây là đặc trưng do cách phát âm quá giống nhau giữa hai dấu này. Người học cao cũng không bị nhầm các chữ S, X, CH, TR như bạn nói. Tôi nói điều này để bạn biết sẽ hướng đến những người dùng nào.

- Thống kê thì có thể tốt cho riêng bạn, nhưng hầu như vô ích cho thiên hạ. Cái họ cần là luật, là chương trình (chương trình kiểm tra chính tả). Với người VN "chuẩn" (loại hay dùng máy tính) thì chính tả âm tiết thường không có vấn đề gì. Lại đã có nhiều chương trình đã làm rất tốt điều này rồi. Cái khó nhưng cần hơn là chính tả ở mức từ (đa âm tiết) và mức câu (ngữ pháp).

The Old Man
21-12-2007, 06:23
Thống kê tạm thời:
Hỏi = 576
Ngã = 358
Ch = 281
Tr = 217
S = 251
X = 250
Ng = 702

The Old Man
21-12-2007, 06:55
Góp vài ý:

- Bạn tự viết chương trình rip lấy là đúng rồi. Một chương trình con con xử lý một dữ liệu nhỏ mà đi xin thì thời gian tìm hiểu và thời gian "há miệng chờ sung" còn quá nhiều lần thời gian tự viết. Mặt khác, nếu bạn muốn đóng góp gì cho thiên hạ thì 99% việc nên tự trông chờ vào bản thân trước đã.

- Để làm được cái gì đó cho thiên hạ dùng bạn cần ít ra kiếm mấy quyển sách về ngôn ngữ. Ví dụ người ta không gọi là từ kép mà chỉ là từ. Cái bạn gọi là từ người ta gọi là âm tiết.

- Bạn gì ở trên nói tiếng Việt có trên 7000 âm tiết là tương đối chính xác. Còn bạn mới chỉ tìm được 6000 âm tiết thì có nghĩa là dữ liệu của bạn vừa bé vừa chưa đủ đa dạng. Chưởng Kim Dung chỉ là chuyện của một tác giả nên số lượng từ / âm tiết không phủ kín được, mặt khác dữ liệu (dù là trọn bộ Kim Dung) như thế là quá nhỏ. Thường phải có trên vài GB thì mới coi là tạm đủ.

.
1- Tôi không có xin chương trình. Tôi tự viết được. Tôi chỉ hỏi có list hay database. Có một database hay 1 list mà không biết lập trình thì củng cùi.
2- Tôi không có nói là để đóng góp cho thiên hạ mà tôi làm cho chính bản thân tôi dùng.
3- Bạn lấy tiêu chuẩn gì mà nói nó phải trên vài GB. Bạn có biết structure của nó như thế nào mà nói là GB v.v. Nếu tôi gom 7000 chữ vào một file thì nó chỉ có từ 300KB đến 500KB là hết cở. Bạn không biết thì xin đừng ĐOÁN.
Và bạn chỉ dùm tôi coi có cái chương trình nào nói rằng chữ VN có bao nhiêu chữ có dấu hỏi, bao nhiêu chữ có dấu ngã, chữ S, chữ X v.v.

zmt264
21-12-2007, 07:13
Góp vài ý:

- Bạn tự viết chương trình rip lấy là đúng rồi. Một chương trình con con xử lý một dữ liệu nhỏ mà đi xin thì thời gian tìm hiểu và thời gian "há miệng chờ sung" còn quá nhiều lần thời gian tự viết. Mặt khác, nếu bạn muốn đóng góp gì cho thiên hạ thì 99% việc nên tự trông chờ vào bản thân trước đã.

- Để làm được cái gì đó cho thiên hạ dùng bạn cần ít ra kiếm mấy quyển sách về ngôn ngữ. Ví dụ người ta không gọi là từ kép mà chỉ là từ. Cái bạn gọi là từ người ta gọi là âm tiết.

- Bạn gì ở trên nói tiếng Việt có trên 7000 âm tiết là tương đối chính xác. Còn bạn mới chỉ tìm được 6000 âm tiết thì có nghĩa là dữ liệu của bạn vừa bé vừa chưa đủ đa dạng. Chưởng Kim Dung chỉ là chuyện của một tác giả nên số lượng từ / âm tiết không phủ kín được, mặt khác dữ liệu (dù là trọn bộ Kim Dung) như thế là quá nhỏ. Thường phải có trên vài GB thì mới coi là tạm đủ.

- Đã có những cách tiếp cận vấn đề này hay hơn hoặc đầy đủ hơn. Đó là ở trong nước đã có phát hành các từ điển chính tả và một số sách nghiên cứu về dấu hỏi/ngã rồi. Coi chừng "phát minh lại bánh xe".

- Chỉ có người nam bộ "thứ thiệt" mới hay nhầm dấu hỏi và ngã. Đây là đặc trưng do cách phát âm quá giống nhau giữa hai dấu này. Người học cao cũng không bị nhầm các chữ S, X, CH, TR như bạn nói. Tôi nói điều này để bạn biết sẽ hướng đến những người dùng nào.

- Thống kê thì có thể tốt cho riêng bạn, nhưng hầu như vô ích cho thiên hạ. Cái họ cần là luật, là chương trình (chương trình kiểm tra chính tả). Với người VN "chuẩn" (loại hay dùng máy tính) thì chính tả âm tiết thường không có vấn đề gì. Lại đã có nhiều chương trình đã làm rất tốt điều này rồi. Cái khó nhưng cần hơn là chính tả ở mức từ (đa âm tiết) và mức câu (ngữ pháp).

Mục đích của bác ý tốt mà, nhưng đúng là hơi Reinvent the wheel thật :D, các vấn đề dạng nè nhiều người đã nghiên kíu rồi :D, trước tớ có viết 1 phần mềm soát lỗi chính tả và đã google ra 1 đống tài liệu về cái nè. Để tìm rồi post vài cái cho các bác :D

Dù sao thì bác Old cũng tốt mà :D

zmt264
21-12-2007, 07:23
PHÂN TÍCH CÁC TRƯỜNG HỢP SAI TỪ GHÉP (từ đơn thì có trong tiếng Việt,và đọc được)
1 Từ ghép có thể sai ở phụ âm đầu hoặc vần của 1 trong 2 từ.
xem thêm file: Phan_Tich_loi_sai_tu_ghep.png
Ví dụ 1:
Sai: "diễn đàng"
đúng: "diễn đàn" (sai vần "àng")
Đề xuất từ thay thế của chương trình:
Tìm tất cả các từ có cấu trúc Loại 1: "...iễn ...àng"
=> 0 đề xuất: Không có
Tìm tất cả các từ có cấu trúc Loại 2: "...iễn đ..."
=> 4 đề xuất: "diễn đài", "diễn đàn", "diễn đơn", "diễn đạt"
Tìm tất cả các từ có cấu trúc Loại 3: "d... ...àng"
=> 7 đề xuất: "dân làng", "dã tràng", "dẽ dàng", "dềnh dàng", "dễ dàng", "dịu dàng", "dọn hàng"
Tìm tất cả các từ có cấu trúc Loại 4: "d... đ..."
=> khoảng 44 đề xuất: "dao động, di động, dinh điền, diêm điền, diêm đài, diễn đài, diễn đàn, diễn đơn, diễn đạt, diện đàm, do đó, doanh điền, du đãng, dày đặc, dáng điệu, dâm đãng, dân đen, dây điện, dây đất, dè đâu, dòng điện, dùi đục, dơ đời, dư đảng, dưa đỏ, dưỡng đường, dược điển, dạy đời, dải đất, dẫn điện, dẫn đô, dẫn đường, dẫn độ, dậy đất, dị đoan, dọc đường, dọn đường, dốc đứng, dốt đặc, dứt điểm, dữ đòn, dự đoán, dự định, dựng đứng"
Ví dụ 2:
Sai: "sử lý"
Đúng: "xử lý"
Đề xuất:
2 từ loại 1: "sử ký", "xử lý"
3 từ loại 2: "sử lược", "tử lộ", "xử lý"
5 từ loại 3: "sinh lý", "suy lý", "sáng ý", "sơ ý", "sử ký"
khoảng 60 từ loại 4: "sa lầy, sa lệch, sai lạc, sai lầm, sai lệch, sao lãng, sao lục, sau lưng, se lòng, sinh lý, sinh lợi..."
Ví dụ 3:
Sai: "chính chị"
Đúng: "chính trị"
Đề xuất:
1 từ loại 1: "chính trị"
4 từ loại 2: "chính chuyên", "kính chúc", "tính chất", "đính chính"
7 từ loại 3: "chuyển vị", "chuẩn bị", "chính trị", "chẩn trị", "chỉ thị", "chứ lị", "chức vị"
khoảng 100 từ loại 4: "...chơm chởm, chạy chọt, chải chuốt...."

Nhận xét: Ta có thể dùng các từ ghép cùng loại 1,2,3 để đề xuất từ thay thế.
áp dụng cho các từ ở ví dụ trên ta có tổng kết sau:
Ví dụ 1:
"diễn đàng" -> "diễn đài", "diễn đàn", "diễn đơn", "diễn đạt", "dân làng", "dã tràng", "dẽ dàng", "dềnh dàng", "dễ dàng", "dịu dàng", "dọn hàng"
Ví dụ 2:
"sử lý" -> "sử ký", "xử lý", "sử lược", "tử lộ", "sinh lý", "suy lý", "sáng ý", "sơ ý"
Ví dụ 3:
"chính chị" -> "chính trị", "chính chuyên", "kính chúc", "tính chất", "đính chính", "chuyển vị", "chuẩn bị", "chẩn trị", "chỉ thị", "chứ lị", "chức vị"



PHÂN TÍCH CÁC TRƯỜNG HỢP SAI TỪ ĐƠN:
Xem thêm file: Phan_Tich_loi_sai_tu_don.png
Phân tích 1 số ví dụ:
Sai: "#ảng"
Đúng: "Đảng" (trong ngữ cảnh"
Đề xuất:
Phụ âm đầu sai, nhưng vần đúng
=> Xét từ loại 1 (cùng vần "ảng"): bảng, choảng, cảng, giảng, lảng, mảng, sảng, tảng, đảng

NHẬN XÉT CUỐI CÙNG:
Trên thế giới, người ta đã xây dựng những thuật toán cho phép kết luận một từ (bất kể từ đơn hay từ ghép) là sai chính tả hay không bằng cách sử dụng từ điển của ngôn ngữ đó, thuật toán này đồng thời tính toán từ sai chính tả đó sai bao nhiêu phần trăm so với các từ khác trong từ điển, và đưa ra đề xuất những từ khác có % ít nhất. Ví dụ: Trong từ điển phần mềm Stardict (open source), khi ta gõ 1 từ sai (không có trong từ điển) nó sẽ đề xuất những từ thay thế. Nhưng thuật toán này quá phức tạp, ta không đề cập đến (tham khảo file .pdf bằng tiếng Anh mà anh đã gửi). Và ngay cả những thuật toán đó cũng không xử lý tốt những trường hợp như là từ "sử lý", bởi vì nó được xây dựng để xử lý chung cho tất cả các ngôn ngữ trên thế giới (Unicode characters). Dựa vào những đặc trưng của tiếng Việt (như 2 phân tích ở trên), cũng như những kinh nghiệm của người dùng ta có thể xây dựng thuật toán tốt hơn.
Nhưng tạm thời do yêu cầu thời gian, chúng ta chỉ so sánh từ với các file từ đề xuất như:
-tu_don_it_gap_TCVN3.txt (Thuật toán I)
-loi_thuong_gap.txt (Thuật toán L)
Các file này đều có đặc điểm chung là có cấu trúc:
từ=các từ đề xuất, cách nhau bởi dấu phẩy.
Ví dụ:
-file: tu_don_it_gap_TCVN3.txt
mõi=moi,mòi,mói,mỏi,mọi
mội=môi,mồi,mối,mổi,mỗi
-file: loi_thuong_gap.txt
cho lên=cho nên
dả=dã,giả,đả
diển đàng=diễn đài,diễn đàn,diễn đạt,dân làng,dã tràng,dễ dàng,dịu dàng,dọn hàng
Anh sẽ sử dụng một số thuật toán để sinh ra 2 file này, nhưng vì thuật toán chạy tự động nên còn chưa chính xác, ta sẽ sử dụng kinh nghiệm để chỉnh lại.
Ví dụ chỉnh thành:
-file: tu_don_it_gap_TCVN3.txt
mõi=mọi,moi
mội=mỗi,môi,mối,mồi
-file: loi_thuong_gap.txt
cho lên=cho nên
dả=dã,giả,đả
diển đàng=diễn đàn


mới mò ra vài file, để dưa lên dần :D

* chú thích: thuật toán "đó" mà em nhắc tới là "string distance" :D , để các bác tiện google nếu quan tâm vấn đề này

zmt264
21-12-2007, 07:25
1- Tôi không có xin chương trình. Tôi tự viết được. Tôi chỉ hỏi có list hay database. Có một database hay 1 list mà không biết lập trình thì củng cùi.
2- Tôi không có nói là để đóng góp cho thiên hạ mà tôi làm cho chính bản thân tôi dùng.
3- Bạn lấy tiêu chuẩn gì mà nói nó phải trên vài GB. Bạn có biết structure của nó như thế nào mà nói là GB v.v. Nếu tôi gom 7000 chữ vào một file thì nó chỉ có từ 300KB đến 500KB là hết cở. Bạn không biết thì xin đừng ĐOÁN.
Và bạn chỉ dùm tôi coi có cái chương trình nào nói rằng chữ VN có bao nhiêu chữ có dấu hỏi, bao nhiêu chữ có dấu ngã, chữ S, chữ X v.v.

Bác hiểu sai bạn ý rồi :D, ý bạn ấy là phải tầm cỡ search engine, có DB đủ lớn thì kết quả thống kê mới chuẩn, chứ ko phải là mấy GB là để chứa file vài ngàn (hay chục ngàn) từ đâu bác :D

Về các phần có bao nhiêu dấu thì cũng có người từng thống kê :D, điển hình như em, em còn thống kê nhiều cái khác cơ :D, cơ mà hồi đó xưa lắm rồi, nhiều cái chẳng nhớ, may mà moi trong mail ra được vài cái :D

zmt264
21-12-2007, 07:33
Thực ra thì 6000 từ đủ nghịch rồi :D, nếu là sài cho mình :), trừ khi viết phần mềm thương mại (thứ mà chắc chắn ko thể bán được ở VN :D ) thì phải thống kê đủ hơn.
Gửi bác file 5000 từ đơn tiếng Việt (unicode) để bác tiện so sánh

The Old Man
21-12-2007, 08:29
Làm nhanh một chương trình tự diễn bỏ túi loại nhỏ (portable).
Chương trình có thễ hiễn thị tất cả các từ, hay chỉ hiễn thị những chữ chỉ có dấu hỏi ngã, hoặc S-X, hoặc CH-TR.
Source-code ráng gom nhỏ tối đa dưới 100 hàng (line).
Ai muốn download chương trình trọn bộ thì download ở dây :
www.vanviet.com/mysoft/VN.rar

http://www.vanviet.com/tmp/Tudien.jpg


#include "FiveWin.ch"
#include "tcbrowse.ch"
*****************************************
REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")
SET 3DLOOK ON
SET SOFTSEEK ON
***SET EXCLUSIVE ON
SET ESCAPE OFF
MEMVAR->BEEP:=.T.
************************
Use VN NEW
IF ! FILE("VN.CDX")
INDEX ON CHU TAG CHU
ENDIF
SET ORDER TO 0
SET FILTER TO VN->HN=.T.
VN->(DBGOTOP())
*************************
LOADLIBRARY("BWCC.DLL")
SET RESOURCES TO "VN.DLL"
DEFINE FONT FNTSYS NAME "ARIAL"
ACTIVATE FONT FNTSYS
DEFINE FONT FNTVN NAME ".VnArial" SIZE 6,18
ACTIVATE FONT FNTVN
MEMVAR->TXTIN:=SPACE(LEN(VN->CHU))
MEMVAR->CHUTXT:=VN->CHU
DEFINE DIALOG W_VN NAME "VNSCR" COLOR "N/W*" TITLE "VietNam" FONT FNTVN
REDEFINE BROWSE DBFBRS ID 102 OF W_VN ALIAS "VN" COLOR "N/W*"
DBFBRS:SETFONT(FNTVN)
DBFBRS:NCLRBACKFOCUS:=CLR_YELLOW
DBFBRS:bRClicked :={|nRow,nCol,nKeyFlags|(FILTERPOP(nRow,nCol,nKeyF lags),DBFBRS:UPSTABLE(),DBFBRS:REFRESH(),GET101:SE TFOCUS())}
ADD COLUMN TO DBFBRS DATA VN->CHU ;
HEADER "Ch÷" WIDTH 23*9 COLOR CHUCOLOR()
redefine GET GET101 VAR MEMVAR->TXTIN ID 101 OF W_VN COLOR "N/GR*" FONT FNTVN UPDATE VALID LOOKTXT()
W_VN:bresized:={||WINADJUST(W_VN,DBFBRS,0)}
ACTIVATE DIALOG W_VN
RETURN NIL
//----------------------------------------------------------------------------//
FUNC CHUCOLOR
COLORCHU:=CLR_BLUE
DO CASE
CASE VN->HN
COLORCHU:=CLR_RED
CASE VN->SX
COLORCHU:=CLR_RED
CASE VN->CT
COLORCHU:=CLR_RED
CASE VN->NG
COLORCHU:=CLR_RED
ENDCASE
RETURN COLORCHU
************************
FUNC LOOKTXT
LOOKCHU:=ALLTRIM(MEMVAR->TXTIN)
VN->(DBSETORDER(1))
VN->(DBSEEK(LOOKCHU))
VN->(DBSETORDER(0))
***** POINTER:=ORDKEYNO()
DBFBRS:oVScroll:SetPos(VN->(RECNO()))
DBFBRS:REFRESH()
RETURN .T.
*********************************
FUNC FILTERPOP(nRowPix,nColPix,nKeyFlags)
LOCAL RATROW:=nTCWRow(DBFBRS:hWnd,DBFBRS:hDC,nRowPix),OT CAT:=DBFBRS:nAtCol(nColPix,.T.)
SET 3DLOOK ON
DBFBRS:LButtonDown(nRowPix,nColPix)
MENU QPopMenu POPUP
MENUITEM "? / ~" OF QPopMenu ACTION FILTERIT(1)
MENUITEM "S / X" OF QPopMenu ACTION FILTERIT(2)
MENUITEM "Ch / Tr" OF QPopMenu ACTION FILTERIT(3)
MENUITEM "n / ng" OF QPopMenu ACTION FILTERIT(4)
separator
MENUITEM "All" OF QPopMenu ACTION FILTERIT(5)
ENDMENU
ACTIVATE POPUP QPopMenu OF DBFBRS AT nRowPix,nColPix
RETURN NIL
DBFBRS:UPSTABLE()
DBFBRS:REFRESH()
DBFBRS:SETFOCUS()
RETURN NIL
**********************************************
FUNC FILTERIT(RIT)
DO CASE
CASE RIT=1
SET FILTER TO VN->HN=.T.
CASE RIT=2
SET FILTER TO VN->SX=.T.
CASE RIT=3
SET FILTER TO VN->CT=.T.
CASE RIT=4
SET FILTER TO VN->NG=.T.
OTHERWISE
SET FILTER TO
ENDCASE
RETURN NIL
************************************************** *

The Old Man
21-12-2007, 08:46
Trọn database có tất cả gần 40,000 từ.
Có thể sẽ có lổi hoặc không đủ vì làm gấp. Code trong vòng 2 tiếng.
Ai thấy thiếu chữ thì hoặc bị lổi thì thông báo giùm.
Cái bánh xe nay dùng để tìm chữ hỏi ngã ,SX v.v mà thôi không phài là môt công trình nghiên cứu gì cả. AI muốn thì cứ việc dùng.
Test chạy với mọi HDH trừ 64 bít. Vista32 OK.

The Old Man
21-12-2007, 08:59
Thực ra thì 6000 từ đủ nghịch rồi :D, nếu là sài cho mình :), trừ khi viết phần mềm thương mại (thứ mà chắc chắn ko thể bán được ở VN :D ) thì phải thống kê đủ hơn.
Gửi bác file 5000 từ đơn tiếng Việt (unicode) để bác tiện so sánh
5000 từ đơn tiếng Việt gom lại chỉ có gần 40Kb.
Cám ơn rất nhiều, Tôi sẽ dùng nó so sánh ngược lại cái datbase tôi đang dùng.
Ráng code cho xong trong mấy tiếng đồng hồ, bây giờ xong lại làm biếng, chắc mai mốt mới compare cái database lại.
Mấy cái này mà thương mại gì. Tôi làm cho tôi check dấu hỏi ngã mà thôi.
Xin cám ơn một lần nữa.

atz1
21-12-2007, 09:28
Hic, hình như bác dùng Foxpro à. Trông quen quen là.

dothanhnguyen
21-12-2007, 15:30
Làm nhanh một chương trình tự diễn bỏ túi loại nhỏ (portable).
Chương trình có thễ hiễn thị tất cả các từ, hay chỉ hiễn thị những chữ chỉ có dấu hỏi ngã, hoặc S-X, hoặc CH-TR.
Source-code ráng gom nhỏ tối đa dưới 100 hàng (line).
Ai muốn download chương trình trọn bộ thì download ở dây :
www.vanviet.com/mysoft/VN.rar

http://www.vanviet.com/tmp/Tudien.jpg


#include "FiveWin.ch"
#include "tcbrowse.ch"
*****************************************
REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")
SET 3DLOOK ON
SET SOFTSEEK ON
***SET EXCLUSIVE ON
SET ESCAPE OFF
MEMVAR->BEEP:=.T.
************************
Use VN NEW
IF ! FILE("VN.CDX")
INDEX ON CHU TAG CHU
ENDIF
SET ORDER TO 0
SET FILTER TO VN->HN=.T.
VN->(DBGOTOP())
*************************
LOADLIBRARY("BWCC.DLL")
SET RESOURCES TO "VN.DLL"
DEFINE FONT FNTSYS NAME "ARIAL"
ACTIVATE FONT FNTSYS
DEFINE FONT FNTVN NAME ".VnArial" SIZE 6,18
ACTIVATE FONT FNTVN
MEMVAR->TXTIN:=SPACE(LEN(VN->CHU))
MEMVAR->CHUTXT:=VN->CHU
DEFINE DIALOG W_VN NAME "VNSCR" COLOR "N/W*" TITLE "VietNam" FONT FNTVN
REDEFINE BROWSE DBFBRS ID 102 OF W_VN ALIAS "VN" COLOR "N/W*"
DBFBRS:SETFONT(FNTVN)
DBFBRS:NCLRBACKFOCUS:=CLR_YELLOW
DBFBRS:bRClicked :={|nRow,nCol,nKeyFlags|(FILTERPOP(nRow,nCol,nKeyF lags),DBFBRS:UPSTABLE(),DBFBRS:REFRESH(),GET101:SE TFOCUS())}
ADD COLUMN TO DBFBRS DATA VN->CHU ;
HEADER "Ch÷" WIDTH 23*9 COLOR CHUCOLOR()
redefine GET GET101 VAR MEMVAR->TXTIN ID 101 OF W_VN COLOR "N/GR*" FONT FNTVN UPDATE VALID LOOKTXT()
W_VN:bresized:={||WINADJUST(W_VN,DBFBRS,0)}
ACTIVATE DIALOG W_VN
RETURN NIL
//----------------------------------------------------------------------------//
FUNC CHUCOLOR
COLORCHU:=CLR_BLUE
DO CASE
CASE VN->HN
COLORCHU:=CLR_RED
CASE VN->SX
COLORCHU:=CLR_RED
CASE VN->CT
COLORCHU:=CLR_RED
CASE VN->NG
COLORCHU:=CLR_RED
ENDCASE
RETURN COLORCHU
************************
FUNC LOOKTXT
LOOKCHU:=ALLTRIM(MEMVAR->TXTIN)
VN->(DBSETORDER(1))
VN->(DBSEEK(LOOKCHU))
VN->(DBSETORDER(0))
***** POINTER:=ORDKEYNO()
DBFBRS:oVScroll:SetPos(VN->(RECNO()))
DBFBRS:REFRESH()
RETURN .T.
*********************************
FUNC FILTERPOP(nRowPix,nColPix,nKeyFlags)
LOCAL RATROW:=nTCWRow(DBFBRS:hWnd,DBFBRS:hDC,nRowPix),OT CAT:=DBFBRS:nAtCol(nColPix,.T.)
SET 3DLOOK ON
DBFBRS:LButtonDown(nRowPix,nColPix)
MENU QPopMenu POPUP
MENUITEM "? / ~" OF QPopMenu ACTION FILTERIT(1)
MENUITEM "S / X" OF QPopMenu ACTION FILTERIT(2)
MENUITEM "Ch / Tr" OF QPopMenu ACTION FILTERIT(3)
MENUITEM "n / ng" OF QPopMenu ACTION FILTERIT(4)
separator
MENUITEM "All" OF QPopMenu ACTION FILTERIT(5)
ENDMENU
ACTIVATE POPUP QPopMenu OF DBFBRS AT nRowPix,nColPix
RETURN NIL
DBFBRS:UPSTABLE()
DBFBRS:REFRESH()
DBFBRS:SETFOCUS()
RETURN NIL
**********************************************
FUNC FILTERIT(RIT)
DO CASE
CASE RIT=1
SET FILTER TO VN->HN=.T.
CASE RIT=2
SET FILTER TO VN->SX=.T.
CASE RIT=3
SET FILTER TO VN->CT=.T.
CASE RIT=4
SET FILTER TO VN->NG=.T.
OTHERWISE
SET FILTER TO
ENDCASE
RETURN NIL
************************************************** *

cảm ơn bác nhe'!Đọc thấy rất ok

QuanN
23-12-2007, 03:36
Bạn xem mã nguồn của VietPad (http://vietpad.sf.net) cũng có kèm theo danh sách tương đối đầy đủ các từ đơn.

vtnphong
21-03-2008, 14:31
Xin hỏi làm sao tôi có thể tìm 1 list các chữ (từ) của tiếng Việt để làm database cho cuốn tự diển nhỏ portable.
Tôi hay viết sai chính tả dấu hỏi ngã nên muốn tự viết cho mình một cuốn tự diển portable nhỏ thật ngắn và gọn nhanh đề kiểm soát dấu hỏi ngã, S hay X, Ch hay Tr, N có G hay không G.

Có ai biết ngôn ngữ VN có bao nhiêu chữ (từ) hay không?

Nếu phải vào các trang web Việt Nam capture một mớ bài tiếng Việt rồi gạn lọc (rip) ra thành từng chữ thì lâu quá. Vậy xin các bạn có database hay text file tự điển VN thì có thể cho xin hay vay. Sẽ trả lại vốn lẩn lời bằng cái chương trình Tự Điển với source code.

đừng đùa bạn, tiếng Việt thuộc loại có số từ khủng đó. Chỉ nội việc mấy cái dialect với từ Hán Việt, từ lai các ngôn ngữ khác thì thảm rồi. Mình không tin nó ít hơn 100k từ đâu

quanghuy05
02-06-2008, 02:34
Em đang kiếm bộ từ đơn tiếng Việt