6

http://www.semantilog.org/wn2sql.htmlから MySQL に WordNet をインストールしています。

Princeton の Web ページと同じ方法でデータを表示したいと思います: http://wordnetweb.princeton.edu/perl/webwn?s=car

それを行うためにデータベースにクエリを実行するにはどうすればよいですか? 私はPHPを使用しています。

4

1 に答える 1

11

Web サイトのドキュメントから収集した情報によると、3 つのテーブルに対してクエリを実行する必要があるようです。

まず、各単語が持つ一意の番号であるwordnoを取得するために、単語テーブルにクエリを実行します。このようになります。

//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);

次に、単語のさまざまな意味を出力するsynsetnoを取得するために、センステーブルにクエリを実行する必要があります。例: can (名詞) と can (動詞) は、それぞれ固有の番号であるsynsetnoを持っています。

MySQL クエリは、次のようなものになります。

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

そのクエリから取得した結果ごとに、synsetテーブルにクエリを実行して、各意味の定義を取得する必要があります。can (名詞) と can (動詞) は定義が異なります。各synsetnoのクエリ。

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

そして早速!あなたはかなりクールな辞書を持っています。ただし、それぞれが大量のレコードを持つ 3 つのテーブルにクエリを実行する必要があるのは、CPU にとっては苦痛です。

于 2011-06-19T23:16:48.660 に答える