【问题标题】:Creating a simple dictionary using WordNet使用 WordNet 创建一个简单的字典
【发布时间】:2011-06-19 21:08:55
【问题描述】:

我正在从http://www.semantilog.org/wn2sql.html 在 MySQL 中安装 WordNet

我想和普林斯顿的网页一样显示数据:http://wordnetweb.princeton.edu/perl/webwn?s=car

我将如何查询数据库来做到这一点?我正在使用 PHP。

【问题讨论】:

  • @hakre 我认为一个好的开始方式是普林斯顿大学的做法,但是。我不需要显示 Sysnet(语义关系等)。

标签: php mysql wordnet


【解决方案1】:

根据我从网站上的文档中收集到的信息,您似乎需要查询三个表。

首先您查询 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 表以获取每个意义的定义。 can(名词)和can(动词)有不同的定义。每个synsetno的查询。

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

然后转眼!你有一本很酷的字典。但是,必须查询三个表,每个表都有大量记录,这对 CPU 来说是一种痛苦。

【讨论】:

  • 这足以让我开始。谢谢!
  • 你能告诉我如何获取一个单词的例句吗?
  • 可以使用joinSELECT * FROM word JOIN sense on sense.wordno = word.wordno JOIN synset on sense.synsetno = synset.synsetno WHERE word.lemma LIKE 'wheel' ORDER BY sense.tagcnt`DESC`
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
  • 2019-03-15
相关资源
最近更新 更多