Создание простого словаря с использованием WordNet - PullRequest
6 голосов
/ 20 июня 2011

Я устанавливаю WordNet в MySQL с http://www.semantilog.org/wn2sql.html

Я бы хотел отобразить данные так же, как на веб-странице Принстона: http://wordnetweb.princeton.edu/perl/webwn?s=car

Как бы я запросил базу данных, чтобы сделать это? Я использую PHP.

1 Ответ

11 голосов
/ 20 июня 2011

Судя по тому, что я почерпнул из документации на сайте, кажется, вам нужно запросить три таблицы.

Сначала вы запрашиваете таблицу word , чтобы получить 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);

Далее нам нужно запросить таблицу sense , чтобы получить synsetno , который выведет различные значения слова. Пример: can (существительное) и can (глагол), каждый из которых имеет уникальный номер, который является synsetno

Запрос MySQL будет выглядеть примерно так:

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

Для каждого результата, полученного в результате этого запроса, вам придется запросить таблицу synset , чтобы получить определение каждого смысла. Может (существительное) и может (глагол) иметь разные определения. Запрос для каждого synsetno .

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

И престо! У вас есть довольно крутой словарь. Однако ЦП испытывает боль, когда приходится запрашивать три таблицы, каждая из которых содержит тонну записей.

...