2011-06-19 38 views
6

Tôi đang cài đặt WordNet trong MySQL từ http://www.semantilog.org/wn2sql.htmlTạo một từ điển đơn giản sử dụng WordNet

Tôi muốn hiển thị dữ liệu theo cách tương tự như trang web của Princeton: http://wordnetweb.princeton.edu/perl/webwn?s=car

Làm thế nào tôi có thể truy vấn cơ sở dữ liệu làm việc đó đi? Tôi đang sử dụng PHP.

+1

bạn nên bắt đầu, – Ibu

+0

@hakre Tôi nghĩ cách tốt nhất để bắt đầu là cách nguyên tắc thực hiện nhưng. Tôi không cần phải hiển thị Sysnet (quan hệ ngữ nghĩa, vv). – Chad

Trả lời

11

Từ những gì tôi thu thập từ tài liệu trên trang web, có vẻ như bạn cần truy vấn ba bảng.

Trước tiên, bạn truy vấn từ bảng để nhận được số wordno, một số duy nhất mà mỗi từ có. Nó sẽ trông như thế này

//assuming you've connected to your MySQL db 
$word=$_GET['s']; //This variable stores the value given through url 
if (ctype_alpha($word)){ // If it's alphabetical 
    $word_clean=mysql_real_escape_string($word); //Sanitize it for MySQL 
}else{ 
    //Not a valid word, error handle 
    exit(); 
} 
$query='SELECT wordno FROM word WHERE lemma=`$word_clean` LIMIT 1'; 
$result=mysql_query($query); 

Tiếp theo, chúng ta cần phải truy vấn cảm giác bảng để có được sự synsetno, which'll đầu ra các giác quan khác nhau của từ này. Ví dụ: có thể (danh từ) và có thể (động từ), mỗi người đều có một số duy nhất đó là synsetno

Các truy vấn MySQL sẽ được cái gì dọc theo dòng:

$query='SELECT synsetno FROM sense WHERE wordno=`$wordno`'; 

Đối với mỗi kết quả bạn nhận được từ truy vấn đó, bạn sẽ phải truy vấn bảng đồng bộ để nhận định nghĩa của mỗi ý nghĩa. Có thể (danh từ) và có thể (động từ) có các định nghĩa khác nhau. Truy vấn cho mỗi synsetno.

$query='SELECT definition FROM synset WHERE synsetno=`$synset`'; 

Và mau! Bạn có một từ điển khá hay. Đó là một nỗi đau trên CPU, tuy nhiên, phải truy vấn ba bảng, mỗi bảng với một tấn hồ sơ.

+0

Điều này là đủ để tôi bắt đầu. Cảm ơn! – Chad

+0

Bạn có thể cho tôi biết cách lấy các câu ví dụ cho một từ không? – SexyBeast

+0

bạn có thể sử dụng tham gia 'SELECT * FROM từ JOIN ý nghĩa trên sense.wordno = word.wordno JOIN synset trên sense.synsetno = synset.synsetno WHERE word.lemma LIKE 'wheel' ORDER BY' sense'.'tagcnt' DESC' – astroanu

Các vấn đề liên quan