我实现小型字典数据库,在那里,我想根据它们之间的词法/语义相似做搜索搜索..词在DB - 通过词汇字典(语义相似)
例如,beer
在“不同的方向”(例如:前两个是“啤酒”的“中等”版本,而后两个是“更极端”的版本)具有“姐妹词”,例如soda, lemonade, wine, champagne
我知道WordNet有一个API,但是我的字典中的大多数单词(和短语)都是以非正式的方式相关的
(另一个例子。 “流氓”与[nun, orphan, rebel
] {criminal, mafia boss, murderer
}有关,其中肢体从左至右变化,而[]中的肢体被认为是“肢端”,而{}中的肢体是“负肢”)
在使用中:
- 用户输入搜索输入(一个字)
- 字与字姐姐匹配。
- 用户有机会通过在至少2个方向上改变四肢来“调整单词”,例如上面的示例。
实施此类搜索的最佳方式是什么 - 上述步骤2和3?
我正在考虑使用PHP/MySQL,因为这是我所熟悉的,但什么是更好的替代方案?再次 - 请记住,这不是一个大字典。这只是一些常用单词的选择。
这里是我在回答这个问题的尝试 - 这是非常,非常基本的...改进建议表示欢迎:
MySQL表的话:
id, (primary key, autoincrement)
word (varchar 75),
relatedword (varchar 75)
relationscore (int 11)
direction (tinyint, -1 or 1)
给定$单词查询和$方向:
"SELECT relatedword FROM words WHERE word='$word' AND direction=$direction ORDER BY relationscore DESC"
很好,我想这也依赖于分类 - 例如,一个反叛并不一定是“坏”,但是当涉及到凶手/犯罪,还有的一些明显的负面意义。它本身并不是特殊性,而是(在这种情况下)“好人”,“坏人”分类的实际程度。在牛奶/啤酒案例中......啤酒会被认为比其他人更负面/更极端。 – ina 2010-08-05 00:23:46
@ina,我明白你的意思了。由于这是一个非常主观的标准,我认为你不会找到任何具有“好/坏”分类的现有数据库。 – Cerin 2010-08-05 12:49:30