API của Wiktionary có thể được sử dụng như thế nào để xác định xem một từ có tồn tại hay không?
API của Wiktionary có thể được sử dụng như thế nào để xác định xem một từ có tồn tại hay không?
Câu trả lời:
Các Wiktionary tiếng Việt API có thể được sử dụng để truy vấn có hay không một từ tồn tại.
Ví dụ cho các trang hiện có và không tồn tại:
http://en.wiktionary.org/w/api.php?action=query&titles=test
http://en.wiktionary.org/w/api.php?action=query&titles=testx
Liên kết đầu tiên cung cấp các ví dụ về các loại định dạng khác có thể dễ dàng hơn để phân tích cú pháp.
Để truy xuất dữ liệu của từ ở định dạng XHTML nhỏ (không cần thiết phải tồn tại), hãy yêu cầu phiên bản có thể in của trang:
http://en.wiktionary.org/w/index.php?title=test&printable=yes
http://en.wiktionary.org/w/index.php?title=testx&printable=yes
Sau đó, chúng có thể được phân tích cú pháp bằng bất kỳ trình phân tích cú pháp XML chuẩn nào.
https://en.wiktionary.org/w/?curid=[page_id]&printable=yes
:, để chuyển hướng đến trang XHTML bằng cách sử dụng pageid
.
Có một số lưu ý khi kiểm tra xem Wiktionary có trang với tên bạn đang tìm kiếm hay không:
Lưu ý # 1 : Tất cả các từ điển Wiktionaries bao gồm cả Wiktionary tiếng Anh thực sự có mục tiêu bao gồm mọi từ trong mọi ngôn ngữ, vì vậy nếu bạn chỉ sử dụng lệnh gọi API ở trên, bạn sẽ biết rằng từ bạn đang hỏi là một từ trong ít nhất một ngôn ngữ, nhưng không nhất thiết phải là tiếng Anh: http://en.wiktionary.org/w/api.php?action=query&titles=dicare
Lưu ý # 2 : Có lẽ một chuyển hướng tồn tại từ một từ này sang một từ khác. Nó có thể là từ một cách viết khác, nhưng nó có thể là một lỗi nào đó. Lệnh gọi API ở trên sẽ không phân biệt giữa chuyển hướng và một bài báo: http://en.wiktionary.org/w/api.php?action=query&titles=profilemetry
Lưu ý # 3 : Một số từ điển Wikti từ bao gồm cả Wiktionary tiếng Anh bao gồm "lỗi chính tả phổ biến": http://en.wiktionary.org/w/api.php?action=query&titles=fourty
Lưu ý # 4 : Một số Wiktionaries cho phép các mục nhập sơ khai có ít hoặc không có thông tin về thuật ngữ. Điều này từng phổ biến trên một số Wiktionaries nhưng không phải là Wiktionary tiếng Anh. Nhưng dường như bây giờ nó cũng đã lan truyền sang Wiktionary tiếng Anh: https://vi.wiktionary.org/wiki/%E6%99%B6%E7%90%83 (liên kết cố định khi phần mở đầu được lấp đầy nên bạn vẫn có thể xem sơ khai trông như thế nào: https://vi.wiktionary.org/w/index.php?title=%E6%99%B6%E7%90%83&oldid=39757161 )
Nếu những thứ này không được bao gồm trong những gì bạn muốn, bạn sẽ phải tải và phân tích cú pháp của chính wikitext, đây không phải là một nhiệm vụ tầm thường.
&prop=info
vào truy vấn và kiểm tra phản hồi cho redirect
thuộc tính.
Bạn có thể tải xuống một kết xuất dữ liệu Wikiti Mobile . Có thêm thông tin trong Câu hỏi thường gặp . Đối với mục đích của bạn, kết xuất định nghĩa có lẽ là lựa chọn tốt hơn kết xuất xml.
Để giữ cho nó thực sự đơn giản, hãy trích xuất các từ từ bãi chứa như thế:
bzcat pages-articles.xml.bz2 | grep '<title>[^[:space:][:punct:]]*</title>' | sed 's:.*<title>\(.*\)</title>.*:\1:' > words
Nếu bạn đang sử dụng Python, bạn có thể sử dụng WiktionaryParser của Suyash Behera.
Bạn có thể cài đặt nó bằng cách
sudo pip install wiktionaryparser
Ví dụ sử dụng:
>>> from wiktionaryparser import WiktionaryParser
>>> parser = WiktionaryParser()
>>> word = parser.fetch('test')
>>> another_word = parser.fetch('test', 'french')
>>> parser.set_default_language('french')
Bạn có thể muốn dùng thử JWKTL. Tôi vừa mới biết về nó;)
http://en.wikipedia.org/wiki/Ubiquitous_Knowledge_Processing_Lab#Wiktionary_API
Như đã đề cập trước đó, vấn đề với cách tiếp cận này là Wiktionary cung cấp thông tin về tất cả các từ của tất cả các ngôn ngữ . Vì vậy, cách tiếp cận để kiểm tra xem một trang có tồn tại hay không bằng cách sử dụng API Wikipedia sẽ không hoạt động vì có rất nhiều trang cho các từ không phải tiếng Anh. Để khắc phục điều này, bạn cần phải phân tích cú pháp từng trang để tìm xem có phần mô tả từ tiếng Anh hay không . Phân tích cú pháp wikitext không phải là một nhiệm vụ tầm thường, mặc dù trong trường hợp của bạn, nó không tệ lắm. Để bao gồm hầu hết các trường hợp, bạn chỉ cần kiểm tra xem wikitext có chứa English
tiêu đề hay không. Tùy thuộc vào ngôn ngữ lập trình bạn sử dụng, bạn có thể tìm thấy một số công cụ để xây dựng AST từ wikitext. Điều này sẽ bao gồm hầu hết các trường hợp, nhưng không phải tất cả chúng vì Wiktionary bao gồm một số lỗi chính tả phổ biến.
Thay vào đó, bạn có thể thử sử dụng Lingua Robot hoặc thứ gì đó tương tự. Lingua Robot phân tích cú pháp nội dung Wiktionary và cung cấp nó dưới dạng API REST. Phản hồi không trống có nghĩa là từ đó tồn tại. Xin lưu ý rằng, trái ngược với Wiktionary, bản thân API không bao gồm bất kỳ lỗi chính tả nào (ít nhất là tại thời điểm viết câu trả lời này). Cũng xin lưu ý rằng Wiktionary không chỉ chứa các từ, mà còn chứa các biểu thức đa từ.
Đây là phần bắt đầu phân tích dữ liệu từ nguyên và phát âm:
function parsePronunciationLine(line) {
let val
let type
line.replace(/\{\{\s*a\s*\|UK\s*\}\}\s*\{\{IPA\|\/?([^\/\|]+)\/?\|lang=en\}\}/, (_, $1) => {
val = $1
type = 'uk'
})
line.replace(/\{\{\s*a\s*\|US\s*\}\}\s*\{\{IPA\|\/?([^\/\|]+)\/?\|lang=en\}\}/, (_, $1) => {
val = $1
type = 'us'
})
line.replace(/\{\{enPR|[^\}]+\}\},?\s*\{\{IPA\|\/?([^\/\|]+)\/?\|lang=en}}/, (_, $1) => {
val = $1
type = 'us'
})
line.replace(/\{\{a|GA\}\},?\s*\{\{IPA\|\/?([^\/\|]+)\/?\|lang=en}}/, (_, $1) => {
val = $1
type = 'ga'
})
line.replace(/\{\{a|GA\}\},?.+\{\{IPA\|\/?([^\/\|]+)\/?\|lang=en}}/, (_, $1) => {
val = $1
type = 'ga'
})
// {{a|GA}} {{IPA|/ˈhæpi/|lang=en}}
// * {{a|RP}} {{IPA|/pliːz/|lang=en}}
// * {{a|GA}} {{enPR|plēz}}, {{IPA|/pliz/|[pʰliz]|lang=en}}
if (!val) return
return { val, type }
}
function parseEtymologyPiece(piece) {
let parts = piece.split('|')
parts.shift() // first one is ignored.
let ls = []
if (langs[parts[0]]) {
ls.push(parts.shift())
}
if (langs[parts[0]]) {
ls.push(parts.shift())
}
let l = ls.pop()
let t = parts.shift()
return [ l, t ]
// {{inh|en|enm|poisoun}}
// {{m|enm|poyson}}
// {{der|en|la|pōtio|pōtio, pōtiōnis|t=drink, a draught, a poisonous draught, a potion}}
// {{m|la|pōtō|t=I drink}}
// {{der|en|enm|happy||fortunate, happy}}
// {{cog|is|heppinn||lucky}}
}
Cập nhật : Đây là ý chính với nó chi tiết hơn.
langs
gì?
langs
là vài nghìn dòng, quá lớn đối với SO.
Bạn có thể sử dụng API phiên bản:
hoặc API phân tích cú pháp:
https://en.wiktionary.org/w/api.php?action=parse&page=test&prop=wikitext&formatversion=2
Các ví dụ khác được cung cấp trong tài liệu .