Wikipedia:Dự án/Phát sinh thể loại bán tự động
Dự án phát sinh thể loại bán tự động dành cho Wikipedia tiếng Việt. Đây là lần đầu tiên tiếng Việt có dự án tại Meta. Thông qua dự án, tôi hi vọng Wikipedia ngày càng phát triển hơn nữa về nội dung cũng như kiến trúc thể loại. A l p h a m a Talk 06:37, ngày 4 tháng 2 năm 2016 (UTC)
Thông tin dự án
[sửa | sửa mã nguồn]- Tên: Dự án phát sinh thể loại bán tự động cho Wikipedia tiếng Việt (Semi-automatically generate Categories for Vietnamese Wikipedia)
- Người thực hiện: Alphama (thảo luận · đóng góp)
Tóm tắt
[sửa | sửa mã nguồn]Phát sinh bán tự động các thể loại tại Wikipedia bằng các tập luật ngữ nghĩa được dịch từ thể loại tiếng Anh và dựa vào cấu trúc thể loại sẵn có ở tiếng Anh kết hợp các tiêu chuẩn về thể loại ở tiếng Việt. Xem thêm tại meta.
Các quá trình thực hiện
[sửa | sửa mã nguồn]- Thu thập mẫu ngữ nghĩa thể loại (NLP Patterns)
- Thảo luận về quy ước đặt tên
- Thu thập các thể loại có liên kết ngoại ngữ
- Tái cấu trúc thể loại đã có dựa theo quy ước đặt tên, sửa vấn đề cha con, sửa thể loại đổi hướng
- Tạo thể loại mới và thêm các thể loại này vào các bài dựa vào các mẫu ngữ nghĩa và quy ước về thể loại
- Nhận phản hồi, sửa lỗi, tổng hợp
Tiến độ
[sửa | sửa mã nguồn]- Đang nhập thể loại tạo mới, theo dõi ở AlphamaBot trên Wikidata, AlphamaBot ở Wikipedia Tiếng Việt
Công cụ
[sửa | sửa mã nguồn]- Translation tool: C# (Regular Expression, StringHelper, List..), Visual Studio 2013, SQL Server 2008 R2, WordNet tiếng Anh, API Wikdata, API English Wikipedia, API Vietnamese Wikipedia.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/ad/Alphama_Category_1.0.9.png/800px-Alphama_Category_1.0.9.png)
- Connect interlinks at Wikidata: Python 3.5.*, DOS
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Alphama_Interlink.png/800px-Alphama_Interlink.png)
Cơ sở dữ liệu
[sửa | sửa mã nguồn]Chương trình sử dụng 1 cơ sở dữ liệu đệm gồm hơn 48000 thể loại và hơn 5000 trang có liên kết ngoại ngữ với tiếng Anh. Mục đích của database này là nhằm tăng tốc độ dịch thay vì phải lấy kết quả qua API ở Wikipedia và Wikidata thông tin Internet. Cơ sở dữ liệu nên được cập nhật liên tục để đồng bộ tên thể loại và tên trang, tuy nhiên sự thay đổi tên thể loại ở Wikipedia được đánh giá là có tần suất rất thấp.
Cơ chế thực hiện
[sửa | sửa mã nguồn]Đầu tiên dựa vào các mẫu thể loại (NLP Patterns) phân tích được từ tiếng Anh, chúng ta sẽ dịch các mẫu này sang tiếng Việt tương ứng. Sau đó, với mỗi thể loại tiếng Anh, chúng ta xác định xem thể loại thuộc vào mẫu nào, dịch sang tiếng Việt, các cụm từ tương ứng sẽ lấy từ Wikidata. Quá trình dịch sẽ dừng lại bất cứ khi nào không thể tìm được cụm từ tương đương ở Wikidata, khi đó cụm từ đang dịch sẽ mặc định trả về kết quả rỗng.
- thể loại đầu vào ---> phân tích mẫu ---> dịch các thành phần con của mẫu từ Wikidata, Wikipedia ---> kết hợp các thành phần kết quả ---> so khớp các mẫu trước, thay thế cụm từ cho phù hợp ---> kết quả cuối cùng
Trong chương trình, các mẫu được phân loại làm 3 mẫu chính: basic pattern, preposition pattern và compoundnoun pattern.
Các mẫu dịch
[sửa | sửa mã nguồn]Basic pattern (mẫu cơ bản)
[sửa | sửa mã nguồn]Basic pattern hay còn gọi là mẫu cơ bản, mẫu hạt nhân, tức là mẫu này được dịch trực tiếp từ cụm từ của tên bài viết chính. Độ dài mẫu này có thể tùy ý, với chiều dài tối thiểu là 1 ký tự. Thông thường mẫu này là 1 từ hoặc cụm từ ngắn.
Ký hiệu mẫu này:
“ | Tiếng Anh: X
Tiếng Việt: X |
” |
- Ví dụ
- Thể loại:Tin học được gọi là mẫu cơ bản vì cụm từ "Tin học" trong thể loại này tương ứng khớp với tên bài viết chính Tin học. Tương tự ở tiếng Anh thể loại en:Category:Computing tương ứng với en:Computing.
Preposition pattern (mẫu giới từ)
[sửa | sửa mã nguồn]Đây là mẫu có chứa giới từ như in, on, of, from, about, at, ... bắt buộc phải ở vị trí giữa. Độ ngắn dài của mẫu này không quan trọng. Số lượng giới từ có thể tùy ý, nhưng bắt buộc phải ở vị trí ở giữa. Dựa vào vị trí giới từ mà chương trình nhận diện để tách làm các mẫu con nhỏ hơn như: mẫu giới từ con, mẫu cơ bản con hay mẫu cụm danh từ con.
Ký hiệu:
“ |
|
” |
- Ví dụ
- Mẫu en:Category:Agriculture in New Zealand được xem là mẫu giới từ vì chứa giới từ "in" ở giữa, từ đó tách được 3 cụm nhỏ: Agriculture, in và New Zealand. Theo đó, en:Agriculture và en:New Zealand là 2 mẫu cơ bản vì có thể dịch trực tiếp từ Wikidata sang tiếng Việt thành nông nghiệp và New Zealand. Giới từ "in" được dịch theo nhiều cách như ở, tại, trong, theo thống kê chương trình tỉ lệ % dịch thành "ở" cao nhất, vì vậy mặc định dịch là "ở". Người dùng có thể sửa cách dịch giới từ cho phù hợp. Kết hợp 3 mẫu con được dịch sang tiếng Việt, chúng ta có thể loại kết quả Thể loại:Nông nghiệp ở New Zealand, hoặc Thể loại:Nông nghiệp tại New Zealand, do độ khớp với cách dịch trước đó, nên chọn Thể loại:Nông nghiệp ở New Zealand làm thể loại chính.
Compound noun pattern
[sửa | sửa mã nguồn]Mẫu cụm danh từ không chứa bất kỳ giới từ nào cũng như không thể diễn dịch từ tên của bất kỳ bài viết chính nào ở Wikipedia. Mẫu này thường được ký hiệu:
“ |
|
” |
Ở tiếng Việt, mẫu này sẽ được đảo ngược cho với tiếng Anh do để phù hợp với ngữ pháp và cách hành văn.
- Ví dụ
- en:Category:Information technology được xem là mẫu cụm danh từ vì mẫu này được phân tích thành 2 cụm: information và technology. Hai cụm con được dịch thành công nghệ và thông tin. Ở tiếng Việt, mẫu này được đảo ngược cho nên thành Thể loại:Công nghệ thông tin.
Mẫu này có chứa 1 số trường hợp dị biệt khác, đôi khi không phải là đảo ngữ mà dịch thẳng theo thứ tự giống tiếng Anh, đôi khi phải thêm giới từ do trường hợp sở hữu cách hoặc đôi khi không thể dịch được do cụm danh từ có chứa tính từ ở đằng trước.
- Ví dụ
- en:Category:John Cale albums là cụm danh từ với 2 cụm: John Cale và albums. Khi dịch sang tiếng Việt, 2 cụm này tương ứng là John Cale và album. Dùng đảo vị trí, ở tiếng Việt trở thành Thể loại:Album John Cale, tuy nhiên đây là thể loại chưa chính xác, vì trong trường hợp này John Cale được xác định là cụm danh từ riêng chỉ người (person -> musician -> singer) vì vậy thể loại chính xác phải là Thể loại:Album của John Cale.
Year/Decade pattern
[sửa | sửa mã nguồn]Các mẫu chứa năm hoặc thập niên được gọi là mẫu năm/thập niên. Mẫu này được ký hiệu:
“ |
|
” |
Trong chương trình dịch, X chỉ từ 1000 đến 3000 để tránh các thể loại do các năm về trước rất ít có thể loại con.
- Ví dụ
- en:Category:1900s là mẫu năm/thập niên vì nó chứa số năm 1900 và ký tự "s" chỉ thập niên. Ở tiếng Việt, dịch thành Thể loại:Thập niên 1900
- en:Category:100 BC là mẫu năm/thập niên vì nó chứa số năm 100, BC là trước công nguyên. Ở tiếng Việt, dịch thành Thể loại:100 TCN
Các mẫu kết hợp và các mẫu đa dạng khác
[sửa | sửa mã nguồn]Thể loại có thể phân tích thành rất nhiều mẫu phức tạp khác nhau, chương trình chỉ liệt kê 1 vài mẫu chính để tăng độ chính xác khi dịch tên thể loại từ tiếng Anh sang tiếng Việt. Các mẫu này đôi khi là sự kết hợp của nhiều mẫu (mẫu kết hợp, mẫu phức) đã trình bày ở trên. Thứ tự ưu tiên dịch mẫu là: mẫu năm > mẫu giới từ > mẫu danh từ > mẫu cơ bản. Kết quả của mẫu kết hợp chứa năm đôi khi được đảo ngược để mang tính dễ đọc trong tiếng Việt.
- Ví dụ
- en:1984 in LGBT rights được xem là mẫu kết hợp. Như vậy chúng ta ưu tiên năm trước do đó "1984" dịch thành "năm 1984". Ngoài ra, vì có giới từ cho nên cụm "1984 in LGBT rights" tách thành 3 cụm con: 1984 (đã dịch là năm 1984), in và LGBT rights. Giới từ "in" mặc định là "ở". Cụm "LGBT rights" được xác định là cụm danh từ vì vậy tách thành 2 cụm con nữa là: "LGBT" và "rights" tương ứng "LGBT" và "quyền" trong tiếng Việt. Vì cụm "LGBT rights" là cụm danh từ nên trong tiếng Việt đảo ngữ thành "quyền LGBT". Ghép với các mẫu trên được kết quả "năm 1984 ở quyền LGBT", tuy nhiên cụm từ không phù hợp với tiếng Việt, vì vậy cụm được đảo thành Quyền LGBT năm 1984 là kết quả cuối cùng.
Chương trình hạn chế dịch các mẫu kết hợp, vì việc dịch có thể phức tạp, mang tính đặc trưng từng trường hợp. Hơn nữa, mẫu kết quả có thể không chính xác như việc dịch các mẫu khác.
NameAnalysis và Similar Categories
[sửa | sửa mã nguồn]Mỗi thể loại được phân tích thành các mẫu, mỗi thành phần của mẫu được dịch và lưu trữ ở trường NameAnalysis để các thể loại sau tương tự dựa vào đó để dịch nhằm tăng độ chính xác. Theo đó mỗi thể loại cũng đi kèm các thể loại tương tự tạo thành 1 nhóm các thể loại tương tự, nhóm này đóng vai trò điều tiết cách dịch và giữ sự đồng bộ các cụm từ khi dịch.
- Ví dụ
- en:Category:Archaeological sites in France được thành Thể loại:Địa điểm khảo cổ ở Pháp với NameAnalysis=Địa điểm khảo cổ=Category:Archaeological sites;ở=in;Pháp=Category:France; và 1 thể loại tương tự là en:Category:Archaeological sites in Spain. Theo đó, giả sử dịch 1 thể loại: vi:Category:Archaeological sites in Vietnam thành Thể loại:Địa điểm khảo cổ tại Việt Nam, nhưng vì giới từ "in" được dịch thành "ở" ở các thể loại tương tự cho nên chương trình sẽ đổi thành Thể loại:Địa điểm khảo cổ ở Việt Nam để đồng bộ.
![](http://upload.wikimedia.org/wikipedia/commons/2/20/Similar_categories.png)
Replacement và BlackList
[sửa | sửa mã nguồn]Replacement là sự thay thế cụm từ để có kết quả dịch cuối cùng mang tính hoàn hảo hơn. Đôi khi chúng ta không thể nào xử lý từng trường hợp riêng biệt mà xử lý trên diện rộng để mang lại hiệu quả cao nhất. Ví dụ giả sử en:Category:Science in 1900 dịch thành Thể loại:Khoa học ở năm 1900 theo đúng thứ tự dịch, ở đây chúng ta có thể thay " ở năm " thành " năm " để thể loại trở thành tên là "Khoa học năm 1900" mang tính dễ đọc.
Một số thể loại được dịch thành rất nhiều cách trong tiếng Việt và phụ thuộc quá nhiều vào trình độ của người dịch, do đó chương trình không nhận diện được sự khác biệt này, vì vậy tốt nhất là bỏ qua các thể loại này bằng cách thêm vào danh sách đen (BlackList).
Tái cấu trúc thể loại (Restructure category taxonomy)
[sửa | sửa mã nguồn]Theo thảo luận về quy ước tên thể loại ở Wikipedia thì cộng đồng đã thống nhất 2 điểm chính về cách đặt tên ở Wikipedia đó là:
- Các thể loại về năm phải có chữ "năm" ở trước cho rõ ràng, ví dụ: Thể loại:Năm 2015 chứ không phải Thể loại:2015, thể loại sau chỉ dùng đổi hướng.
- Tên thể loại chứa tên quốc gia thì phải dùng tên của bài viết chính, ví dụ: Úc thì tên thể loại phải là Thể loại:Văn hóa Úc chứ không phải là Thể loại:Văn hóa Australia
Dựa theo các quy ước tên thể loại, quá trình này sẽ tái cấu trúc tên và thể loại ở Wikipedia tiếng Việt. Theo đó thực hiện các bước chính sau đây.
Bước 1. Chỉnh tên thể loại theo quy ước
[sửa | sửa mã nguồn]- Chỉnh thể loại về năm: bất cứ thể loại nào có số năm thường là 4 con số, thì thêm chữ "năm" ở đầu. Ví dụ: Thể loại:Khoa học 1990 thì đổi thành Thể loại:Khoa học năm 1990. Trong chương trình, có thể chỉnh tên thể loại tự động hoặc bằng tay, giá trị thể loại mới được ghi vào trường FixedVietnameseTitle. FixedVietnameseTitle là tên của 1 thể loại được sửa chữa trong quá trình tái cấu trúc thể loại nếu tên loại này không đúng chuẩn.
![](http://upload.wikimedia.org/wikipedia/commons/6/62/FixedVietnameseTitle.png)
Bước 2. Tạo thể loại theo tên mới, đổi hướng thể loại cũ sang thể loại mới
[sửa | sửa mã nguồn]Quá trình này sẽ được thực hiện bởi bot
Bước 3. Chỉnh tên thể loại cũ thành tên thể loại mới các thể loại/trang cha, con của thể loại cũ
[sửa | sửa mã nguồn]Quá trình này sẽ được thực hiện bởi bot
Các phần phụ
[sửa | sửa mã nguồn]PreferedName
[sửa | sửa mã nguồn]PreferedName là tên ưa thích của 1 thể loại, trang khi dịch. Ví dụ: Thể loại:Địa lý học có tên ưa thích là địa lý chứ không dùng địa lý học cho quá trình dịch.
Score
[sửa | sửa mã nguồn]Score là trường ghi nhận điểm số khớp dựa vào tên 2 thể loại bằng tiếng Anh lẫn tiếng Việt bằng các thuật toán ngữ nghĩa dựa vào WordNet. Giá trị của Score từ 0 đến 1. Với Score=1 thì tức là tên thể loại chính là tên bài viết chính.
Chương trình chỉ lấy những mẫu dịch có Score > 0.5 tức là khớp quá bán. Lý do là với mỗi tên thể loại thì nó là duy nhất ở Wikipedia, vì vậy những thể loại khác chỉ có thể khớp với thể loại đã có theo từng phần của mẫu thể loại.
Ví dụ: A = Thể loại:Tại nạn ở Việt Nam thì sẽ khớp quá bán (0.5) với B = Thể loại:Tại nạn ở Lào. Hai thể loại này đều được phân tích thành thành phần con: A = Tại nạn; ở; Việt Nam và B = Tại nạn; ở; Lào như vậy nếu so khớp thông thường thì khớp 2/3 với 2 thành phần đầu tiên giống, dùng các thuật toán thì ra được chỉ số khớp 0.87 vì tính theo chiều dài chuỗi, khoảng cách, số từ, cụm từ tương ứng (Việt Nam tương ứng Lào nếu xét ở phạm vi danh từ riêng, ...).
Kết quả đạt được
[sửa | sửa mã nguồn]- Tìm hiểu quy ước tên thể loại, cách tổ chức cấu trúc thể loại ở Wikipedia Tiếng Việt
- Tổ chức các cuộc thảo luận trong dự án và tăng cường sự chú ý của các biên tập viên, kết nối cộng đồng với nhau
- Công cụ Alphama Tool hỗ trợ dịch tên thể loại
- Tác giả đã học hỏi được nhiều phương pháp, kỹ thuật xây dựng chương trình, tổ chức cơ sở dữ liệu, triển khai thu thập thông tin và nhập liệu vào Wikipedia, Wikidata. Ngoài ra, tác giả cũng sử dụng kết hợp nhiều kiến thức về các công nghệ, ngôn ngữ lập trình công cụ liên quan
- Hiện tại, 5000 thể loại mới hoặc nhiều hơn được tạo mới ở Wikipedia tiếng Việt kèm theo hàng chục nghìn các triple
Các khó khăn trong dự án
[sửa | sửa mã nguồn]Wikipedia Tiếng Việt vẫn còn thiếu các biên tập viên có năng lực chuyện sâu ở nhiều lĩnh vực, khiến quá trình thống nhất về quy ước tên thể loại khá lâu. Sự thiếu kinh nghiệm của tác giả trong quá trình thực hiện, tổ chức dự án. Số lượng thành viên tham gia góp cho thể loại chỉ ở mức chấp nhận được, tuy nhiên dự án cần có nhiều ý kiến đóng góp hơn nữa để nâng cao chất lượng đầu ra.
Chương trình dịch thể loại chủ yếu lấy và cập nhật dữ liệu thông qua các API ở Wikidata và Wikipedia, do đó việc có đường truyền Internet mạnh và ổn định sẽ giúp ích rất nhiều trong việc tải dữ liệu và thiết lập dữ liệu ban đầu cho dự án.
Nhận xét, đánh giá của các thành viên ở Wikipedia Tiếng Việt
[sửa | sửa mã nguồn]- Xin ghi nhận xét, đánh giá về dự án, thảo luận về tên thể loại, cấu trúc thể loại và các vấn đề liên quan ở bên dưới.